OSDev

для всех
Текущее время: 20 окт 2017, 11:54

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 42 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re^5: Wiki разработчиков OS
СообщениеДобавлено: 31 авг 2009, 22:34 

Зарегистрирован: 05 дек 2008, 03:58
Сообщения: 57
To SII Набролось пару претензий.

В разделе про таймер пропал пример перепрограммирования. А также коментарий то что запись в регистр значения приводит к делению частоты. Как помне одной этой строчки достаточно что-бы все понять нежели чем, то как сейчас это описанно. А сейчас хотя и соответсвует обще принетым документом но слишком раздут, а внятности не вносит.



Тоже исчезновение. По поводу практика определение памяти в изночальном описании было пояснение насчет PAMS или SMAP и цифровая константа (компиляторы понимают по разному строки в регистрах). Народ путается http://forum.codenet.ru/showthread.php?t=53800&page=4

По поводу портов и регистров. Предлогаю пока договится писать так.
Если идет обращение вида
mov dx,адресс
out dx,al

mov dx,адресс
in al,dx

mov [адресс],ax
mov ax, [адресс]

То говорить о портах.
А вот регистры это то что задается через индексный порт.

Поэтому прошу подправить http://wiki.osdev.ru/index.php/Порт_0CF8h

И еще надо порты в отдельный раздел вынести.
А еще правильнее писать не порт 0CF8h, а порты 0CF8h-0CFBh в документах на чипсет это поеснено раз. А также в описании на процессор intel два.

Работа с портами в/в.

Any two consecutive 8-bit ports can be treated as a 16-bit port, and any four consecutive ports can be a 32-bit port. In this manner, the processor can transfer 8, 16, or 32 bits to or from a device in the I/O address space. Like words in memory. 16-bit ports should be aligned to even addresses (0. 2, 4, ...) so that all 16 bits can be transferred in a single bus cycle. Likewise, 32-bit ports should be aligned to addresses that are multiples of four (0,4, 8,...). The processor supports data transfers to unaligned ports, but there is a performance penalty because one or more extra bus cycle must be used.
Из руководства на процессор Intel.

Любые два последовательных 8-битных порта могут вести себя как 16-битный порт, и любые 4 последовательных порта могут быть 32-битным портом. В такой манере процессор может передавать 8, 16, или 32 бита к или из устройства в адресное пространства в/в. Аналогично тому как слова в памяти. 16-битные порты должны быть выровнены на адресах равным (0,2,4,…) чтобы все 16 бит могли бы быть переданы за один цикл шины. Подобным образом, 32-битные порты должны быть выровнены на адресах кратных четырем (0,4, 8,...). Процессор также поддерживает передачу в не выровненные порты, но здесь будет потеря производительности, потому что будет использовано более одного цикла.

Это дает возможность записывать в 4 порта одной командой. Пожалуй, исключением является работа с жестким диском.

К примеру, порты 0CF8h-CFBh задают для PCI адрес конфигурационного пространства.
Можно записать сразу в один порт
mov eax,80000000h
mov dx, 0CF8h
out dx, eax

или можно записать то же самое в 4 порта.
mov eax,80000000h
mov dx, 0CF8h
out dx, al
inc dx ; 0CF9h
shr eax,8
out dx, al
inc dx ; 0CFAh
shr eax,8
out dx, al
inc dx ;0CFBh
shr eax,8
out dx, al

Еще пример порта 3D4h задает индекс CRT регистр видео контроллера 3D5h значение регистра
Сразу пишем в один порт
mov ax,550Eh
mov dx, 3D4h
out dx, al

или в два порта.
mov al,0Eh
mov dx, 3D4h
out dx,al
inc dx ; 3D5h
mov al, 55h
out dx,al

Цитата:
В современных компьютерах первый канал реального применения не находит: нынешняя оперативная память выполнена на микросхемах псевдостатического ОЗУ
Утвирждение спорное. А еще если не ошибаюсь биос использует бит REF_TOGGLE порта 61h для замера времени.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re^6: Wiki разработчиков OS
СообщениеДобавлено: 01 сен 2009, 09:08 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1314
Откуда: Зеленоград
Цитата:
В разделе про таймер пропал пример перепрограммирования.


Пример, будучи практической, а не теоретической частью, перенесён в раздел практики: http://wiki.osdev.ru/index.php/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%B2%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%82%D0%B0%D0%B9%D0%BC%D0%B5%D1%80%D0%B0

Цитата:
А также коментарий то что запись в регистр значения приводит к делению частоты. Как помне одной этой строчки достаточно что-бы все понять нежели чем, то как сейчас это описанно. А сейчас хотя и соответсвует обще принетым документом но слишком раздут, а внятности не вносит.


Ну, лично мне желательно знать, как именно та или иная железяка работает, а одна строчка про деление частоты этого не даёт (например, из неё не будет видно, какова продолжительность высокого и низкого уровней на выходе таймера или чем различаются режимы его работы). Хотя поясняющую строчку про деление добавлю чуть позже.

Цитата:
Тоже исчезновение. По поводу практика определение памяти в изночальном описании было пояснение насчет PAMS или SMAP и цифровая константа (компиляторы понимают по разному строки в регистрах). Народ путается


Не знал, что FASM себя не по-человечески ведёт, хотя не удивлён: слишком уж большой разнобой в ассемблерах для ПК. Ну да ладно, это лирика, а пояснение добавим.

Цитата:
По поводу портов и регистров. Предлогаю пока договится писать так.
Если идет обращение вида
mov dx,адресс
out dx,al

mov dx,адресс
in al,dx

mov [адресс],ax
mov ax, [адресс]

То говорить о портах.
А вот регистры это то что задается через индексный порт


Не годится. Порт -- это термин Intel, означающий то, к чему обращаются инструкциями IN и OUT, но никак не командами доступа к памяти (например, MOV). Но даже к ним документация часто применяет термин "регистр". Вот, например, цитата из спецификации на PCI:

Two DWORD I/O locations are used to generate configuration transactions for PC-AT
compatible systems. The first DWORD location (CF8h) references a read/write register
that is named CONFIG_ADDRESS. The second DWORD address (CFCh) references a
read/write register named CONFIG_DATA.


Как видите, "ячейки ввода-вывода", т.е. порты CF8h и CFCh дают доступ к регистрам CONFIG_ADDRESS и CONFIG_ADDRESS.

Или возьмём, например, контроллер прерываний. У него три программно доступных регистра (IRR, ISR и IMR), но доступ к ним осуществляется через два порта, хотя индексного порта в явном виде у PIC нет. Ну и так далее.

В общем, лично я предпочитаю называть вещи так, как они называются в соответствующих спецификациях. Говорит спецификация на шину PCI о регистрах -- значит, это регистры, хоть доступ к ним осуществляется через порты. Конечно, в описании того, как добраться до регистров, должно говориться о портах -- но сами регистры переименовывать в порты не следует.

Цитата:
И еще надо порты в отдельный раздел вынести.


В каком смысле вынести? Сделать дополнительный раздел верхнего уровня, где дан список портов, ссылающихся на соответствующие статьи?

Цитата:
А еще правильнее писать не порт 0CF8h, а порты 0CF8h-0CFBh в документах на чипсет это поеснено раз. А также в описании на процессор intel два.


Руководящим в описании регистра того или иного устройства является спецификация на это устройство. А в спецификации на PCI (версия 2.3, стр. 32) читаем:

Anytime a host bridge sees a full DWORD I/O write from the host to
CONFIG_ADDRESS, the bridge must latch the data into its CONFIG_ADDRESS
register. On full DWORD I/O reads to CONFIG_ADDRESS, the bridge must return the data in CONFIG_ADDRESS. Any other types of accesses to this address (non-DWORD) have no effect on CONFIG_ADDRESS and are executed as normal I/O transactions on the PCI bus. Therefore, the only I/O Space consumed by this register is a DWORD at the given address. I/O devices that share the same address but use BYTE or WORD registers are not affected because their transactions will pass through the host bridge unchanged.


Тут совершенно недвусмысленно написано, что обращение к регистрам CONFIG_ADDRESS и CONFIG_DATA будет иметь место только в том случае, если к ним обратиться как к единому двойному слову, в то время как доступы к байтам и словам по тем же адресам будут переданы на PCI как обычные доступы к пространству ввода-вывода. Таким образом, Ваша мысль:

Цитата:
К примеру, порты 0CF8h-CFBh задают для PCI адрес конфигурационного пространства.
Можно записать сразу в один порт
...
или можно записать то же самое в 4 порта.


является прямо противоречащей спецификации PCI.

Ссылка же на

Цитата:
Еще пример порта 3D4h задает индекс CRT регистр видео контроллера 3D5h значение регистра
Сразу пишем в один порт


в данном случае неуместа. Как поступает видеоконтроллер, это его сугубо личное дело, не имеющее ни малейшего отношения к спецификации PCI. Если для видеоконтроллера подобные вещи являются стандартным поведением -- что ж, это нужно описать в соответствующем разделе. Но не надо такое поведение одного устройства переносить на все остальные устройства.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re^7: Wiki разработчиков OS
СообщениеДобавлено: 01 сен 2009, 12:52 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 290
тест


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re^7: Wiki разработчиков OS
СообщениеДобавлено: 01 сен 2009, 15:18 

Зарегистрирован: 05 дек 2008, 03:58
Сообщения: 57
Перечитал спецификации.
Про CONFIG_ADDRESS написано что он работает только с DWord.
А вот CONFIG_DATA напротив можно делать любую запись.

The
configuration access mechanism makes use of the CONFIG_ADDRESS register (at I/O address
0CF8h though 0CFBh) and CONFIG_DATA register (at I/O address 0CFCh though 0CFFh). To
reference a configuration register a DWord I/O write cycle is used to place a value into
CONFIG_ADDRESS that specifies the PCI bus, the device on that bus, the function within the
device, and a specific configuration register of the device function being accessed.
CONFIG_ADDRESS[31] must be 1 to enable a configuration cycle. CONFIG_DATA then
becomes a window into the four bytes of configuration space specified by the contents of
CONFIG_ADDRESS. Any read or write to CONFIG_DATA will result in the MCH translating the
CONFIG_ADDRESS into the appropriate configuration cycle.
The MCH is responsible for translating and routing the processor’s I/O accesses to the
CONFIG_ADDRESS and CONFIG_DATA registers to internal MCH configuration registers, HI
or AGP/PCI_B.

Кстати тут совет возьми спецификацию PCI 3.0 в ней некоторые вещи подробнее расписаны чем в 2.3


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re^8: Wiki разработчиков OS
СообщениеДобавлено: 01 сен 2009, 16:27 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1314
Откуда: Зеленоград
Да, насчёт CONFIG_DATA моя ошибка -- спешил на работу, писал впопыхах, вот и не посмотрел дальше. Но в любом случае, занятость нескольких адресов подряд не означает _автоматически_, что к ним можно обращаться и оптом, и в розницу -- зависит от характера устройства. Для PCI, как мы видим, нельзя в розницу обращаться к CONFIG_ADDRESS, а для PIC, думаю, нельзя оптом к его двум портам, хотя они и расположены по соседним адресам -- ведь PIC по своей природе 8-разрядный.

А насчёт спецификации 3.0 -- я б взял, но у меня её нет, а в Инете не попадалась как-то. Правда, я с поиском особо не заморачивался...

ADD: Нашёл спецификацию, бум смотреть по ней.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re^9: Wiki разработчиков OS
СообщениеДобавлено: 11 сен 2009, 12:22 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1025
Откуда: Балаково
SII, а где нашёл спецификацию? На pcisig не дают.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re^10: Wiki разработчиков OS
СообщениеДобавлено: 11 сен 2009, 15:36 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1314
Откуда: Зеленоград
chizh
В гугле нашёл, где ещё...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Wiki разработчиков OS
СообщениеДобавлено: 03 ноя 2010, 18:29 

Зарегистрирован: 14 фев 2010, 20:12
Сообщения: 1
почему вики на убогом движке с рекламой?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Wiki разработчиков OS
СообщениеДобавлено: 03 ноя 2010, 19:53 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1314
Откуда: Зеленоград
Потому что своего сервера нет, всё на бесплатном.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Wiki разработчиков OS
СообщениеДобавлено: 29 ноя 2010, 03:42 

Зарегистрирован: 30 янв 2010, 19:44
Сообщения: 63
может я оплачу год хостинга?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 42 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB