Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Взаимодействие с device через memory address range, Как определить address range у PCI? 
:(
    Опции темы
misha_mike
Дата 22.3.2008, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 1.6.2007

Репутация: нет
Всего: 1



Есть некая полусамопальная PCI-железка, занимается формированием изображения на монохромной светодиодной матрице (думаю все видели такие в виде "бегущей строки"). У этой железки есть отображаемая в адресное пространство процессора память, содержащая битовую карту изображения. Мне нужно в эту память писать для формирования картинки. Сам процесс записи в общем ничего интересного не представляет, но вот куда писать -- непонятно. Все примеры определения диапазона адресов одинаковые, но у меня не фурычат :(

Основная проблема в том, что железка возвращает сильно завышенный объем памяти. Если реально на ней распаяно два мегабайта, то почему после записи в нужный BAR числа FFFFFFFF она возвращает мне FFC00000? Это же 4 мегабайта. Причем при обращении выше законных двух метров начитаются сильные задержки, а чтение из этих адресов всегда возвращает одно и то же значение (в зависимости от системы это либо 00 либо FF), т.е. никаких четырех мегабайт там точно нет и не было.

На железку пинать не могу, потому что на проверку этим грешат например и видеокарты. Вот собрал по имеющимся статистику (первая пара чисел -- реальный диапазон видеопамяти, третье число -- результат чтения и инверсии соответствующего BAR после записи туда FFFFFFFF):
D0000000..D7FFFFFF, DFFFFFFF (GF7300GS/128M)
E0000000..E0FFFFFF, E1FFFFFF (VANTA/16M)
E6000000..E6FFFFFF, E7FFFFFF (TNT/16M)
E6000000..E67FFFFF, E6FFFFFF (TNT/8M)
E6000000..E63FFFFF, E67FFFFF (SIS/4M)
F0000000..F0FFFFFF, F7FFFFFF (VMWare/16M)

Причем если присмотреться, то можно увидеть что во всех кроме последнего (весьма специфического) случаях объем завышен ровно в два раза, т.е. выставлен один лишний бит. 

Как же узнать реальный размер памяти?
PM MAIL   Вверх
MAKCim
Дата 22.3.2008, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 1
Всего: 207



Цитата

Decode (I/O or memory) of a register is disabled via the command register before sizing a
Base Address register. Software saves the original value of the Base Address register, writes
0 FFFF FFFFh to the register, then reads it back. Size calculation can be done from the
32-bit value read by first clearing encoding information bits (bit 0 for I/O, bits 0-3 for
memory), inverting all 32 bits (logical NOT), then incrementing by 1. The resultant 32-bit
value is the memory/I/O range size decoded by the register. Note that the upper 16 bits of
the result is ignored if the Base Address register is for I/O and bits 16-31 returned zero
upon read. The original value in the Base Address register is restored before re-enabling
decode in the command register of the device.



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
misha_mike
Дата 22.3.2008, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 1.6.2007

Репутация: нет
Всего: 1



Так и делаю. Читаю из нужного BAR-а адрес начала отображаемой памяти, сохраняю. Потом записываю туда 0FFFFFFFFh и снова читаю. Прочитанное значение подвергаю сначала операции "and 0FFFFFFF0h", а потм "not". Затем восстанавливаю сохраненный ранее адрес.

Все как в доке, но неутешительные результаты этих действий в первом постинге.
PM MAIL   Вверх
MAKCim
Дата 22.3.2008, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 1
Всего: 207



Цитата(misha_mike @  22.3.2008,  19:41 Найти цитируемый пост)
Все как в доке, но неутешительные результаты этих действий в первом постинге. 

Цитата

Power-up software can determine how much address space the device requires by writing a
value of all 1's to the register and then reading the value back. The device will return 0's in
all don't-care address bits, effectively specifying the address space required. Unimplemented
Base Address registers are hardwired to zero.

This design implies that all address spaces used are a power of two in size and are naturally
aligned. Devices are free to consume more address space than required, but decoding down
to a 4 KB space for memory is suggested for devices that need less than that amount.

см. выделенное


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
misha_mike
Дата 23.3.2008, 04:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 1.6.2007

Репутация: нет
Всего: 1



Блин. Как же быть?
PM MAIL   Вверх
MAKCim
Дата 23.3.2008, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 1
Всего: 207



Цитата(misha_mike @  23.3.2008,  04:43 Найти цитируемый пост)
Блин. Как же быть? 

а в чем, собственно проблема
используй значение, возвращенное устройством
а для доступа к отображенным регистрам в любом случае нужно использовать спецификацию устройства


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
misha_mike
Дата 23.3.2008, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 1.6.2007

Репутация: нет
Всего: 1



Нет спецификации, железка кустарного производства. Закрытая, даже маркировка чипов спилена. Мне нужно альтернативный софт написать, причем по возможности универсальный, для разных модификаций с разным объемом памяти.
PM MAIL   Вверх
MAKCim
Дата 23.3.2008, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 1
Всего: 207



misha_mike
невозможно написать драйвер без спецификации
откуда ты берешь информацию о том, как и что надо записывать?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
misha_mike
Дата 23.3.2008, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 1.6.2007

Репутация: нет
Всего: 1



Я имею некоторый опыт в этом деле и мне поручили разобраться. Методом тыка выяснил что фреймбуфер доступен в адресном пространстве и как он у этой хреновины организован. Научился формировать изображение, заказчик был счаслив когда увидел работу прототипа. Но на финальной стадии возникла описываемая проблема, мешающая выпустить завершенный продукт.
PM MAIL   Вверх
MAKCim
Дата 23.3.2008, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 1
Всего: 207



misha_mike
ясно
попробуйте обратиться на более узкоспециализированный форум wasm.ru


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
misha_mike
Дата 23.3.2008, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 1.6.2007

Репутация: нет
Всего: 1



От туда и начинал...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1161 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.