![]() |
|
![]() ![]() ![]() |
|
misha_mike |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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) Причем если присмотреться, то можно увидеть что во всех кроме последнего (весьма специфического) случаях объем завышен ровно в два раза, т.е. выставлен один лишний бит. Как же узнать реальный размер памяти? |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 1 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
misha_mike |
|
|||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 1.6.2007 Репутация: нет Всего: 1 |
Так и делаю. Читаю из нужного BAR-а адрес начала отображаемой памяти, сохраняю. Потом записываю туда 0FFFFFFFFh и снова читаю. Прочитанное значение подвергаю сначала операции "and 0FFFFFFF0h", а потм "not". Затем восстанавливаю сохраненный ранее адрес.
Все как в доке, но неутешительные результаты этих действий в первом постинге. |
|||
|
||||
MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 1 Всего: 207 |
см. выделенное -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
misha_mike |
|
|||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 1.6.2007 Репутация: нет Всего: 1 |
Блин. Как же быть?
|
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 1 Всего: 207 |
а в чем, собственно проблема используй значение, возвращенное устройством а для доступа к отображенным регистрам в любом случае нужно использовать спецификацию устройства -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
misha_mike |
|
|||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 1.6.2007 Репутация: нет Всего: 1 |
Нет спецификации, железка кустарного производства. Закрытая, даже маркировка чипов спилена. Мне нужно альтернативный софт написать, причем по возможности универсальный, для разных модификаций с разным объемом памяти.
|
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 1 Всего: 207 |
misha_mike,
невозможно написать драйвер без спецификации откуда ты берешь информацию о том, как и что надо записывать? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
misha_mike |
|
|||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 1.6.2007 Репутация: нет Всего: 1 |
Я имею некоторый опыт в этом деле и мне поручили разобраться. Методом тыка выяснил что фреймбуфер доступен в адресном пространстве и как он у этой хреновины организован. Научился формировать изображение, заказчик был счаслив когда увидел работу прототипа. Но на финальной стадии возникла описываемая проблема, мешающая выпустить завершенный продукт.
|
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 1 Всего: 207 |
misha_mike,
ясно попробуйте обратиться на более узкоспециализированный форум wasm.ru -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
misha_mike |
|
|||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 1.6.2007 Репутация: нет Всего: 1 |
От туда и начинал...
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |