Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регистры PCI - хочу понять

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

NOPA

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Захотелось поиграться с значениями регистров PCI. В среде DOS + Intel pci.exe v. 2.0, зашел в конфигурационное пространство нужного устройства. Согласно даташиту, перешёл к нужным регистрам по смещению.  
Но, кажется, я не понимаю этих значений. В моём случае, забиты значения F5 54, однако в даташите таких значений нет.  
Вопрос такой - как понимать, например, значения из даташита: bits 3:2 ? Как на основании этого рассчитываются значения нужных регистров?

Всего записей: 49 | Зарегистр. 04-12-2005 | Отправлено: 14:31 06-04-2016
dimitriy7



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NOPA

Цитата:
В моём случае, забиты значения F5 54, однако в даташите таких значений нет.

Ну значит даташит не на ваше железо, или в нем не все значения документированы, или регистром ошиблись, или мусор в регистре, или байты идут в обратном порядке.
 

Цитата:
Вопрос такой - как понимать, например, значения из даташита: bits 3:2 ?

Так и понимать -- используется не всё слово, а отдельные биты.

Всего записей: 2946 | Зарегистр. 09-10-2008 | Отправлено: 14:38 06-04-2016
NOPA

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dimitriy7
Все равно непонятно. Я зашел в область конфигурации устройства. Согласно даташиту, нужные мне регистры доступны по сдвигу 90 и 91. Интересующая меня конфигурация описана "bits 3:2". Нужно по сдвигу 90 указать 03, а по 91 - 02 ? Но у меня даже не получается этого сделать, последнее значение не устанавливается.
 
Добавлено:
Принцип, кажется, понял. Вопрос - при формирования слова, младший бит нужно ставить в начало?

Всего записей: 49 | Зарегистр. 04-12-2005 | Отправлено: 15:05 06-04-2016
dimitriy7



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NOPA

Цитата:
Нужно по сдвигу 90 указать 03, а по 91 - 02 ?

Нет, конечно...
Надо прочитать весь регистр (в вашем случае 2-байтный 0х90+0х91), затем работать с его отдельными битами. Потом записывать тоже целиком.
И не забывайте -- регистры могут быть разной длины, от 8 до 32 бит.
 

Цитата:
Вопрос - при формирования слова, младший бит нужно ставить в начало?

Нулевой -- младший.
7-й/15-й/31-й -- старший.
Всё как обычно.

Всего записей: 2946 | Зарегистр. 09-10-2008 | Отправлено: 16:36 06-04-2016
NOPA

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Немного ошибся с вопросом.
 
В двух регистрах записано значение  F5 54. 54 - младший байт, нужно ли при формировании 16-битного слова ставить его в начало ( 0x54F5 )?
 
После перевода в двоичную систему, биты будут считаться справа налево?

Всего записей: 49 | Зарегистр. 04-12-2005 | Отправлено: 17:03 06-04-2016
dimitriy7



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NOPA

Цитата:
В двух регистрах записано значение  F5 54. 54 - младший байт, нужно ли при формировании 16-битного слова ставить его в начало ( 0x54F5 )?  

Так считайте какой-нибудь стандартный регистр с известным значением и посмотрите, как ваша программа его показывает, в каком порядке...
 

Цитата:
После перевода в двоичную систему, биты будут считаться справа налево?  

Нулевой справа, пятнадцатый слева, да.

Всего записей: 2946 | Зарегистр. 09-10-2008 | Отправлено: 17:24 06-04-2016
NOPA

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dimitriy7
Перевожу значение 0x54F5 в двоичный формат и получаю 15 символов. Если же наоборот, 0xF554, то символов 16. Как правильно?

Всего записей: 49 | Зарегистр. 04-12-2005 | Отправлено: 17:48 06-04-2016
dimitriy7



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NOPA

Цитата:
Перевожу значение 0x54F5 в двоичный формат и получаю 15 символов. Если же наоборот, 0xF554, то символов 16

0х545f = 0101 0100 0101 1111
0хf554 = 1111 0101 0101 0100
Значит, ваша программка просто не показывает нуль в старшем разряде.
 

Цитата:
Как правильно?

Еще раз повторю -- ну считайте вы какой-нибудь заведомо известный регистр и посмотрите, в каком порядке ваша программа показывает байты...
Ну например подцепитесь к любому известному устройству и считайте пару слов 0х00+0х01 и 0х02+0х03 -- в них лежат ВенИД и ДевИД, и сравните с паспортными.

Всего записей: 2946 | Зарегистр. 09-10-2008 | Отправлено: 18:17 06-04-2016
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регистры PCI - хочу понять


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru