OSDev

для всех
Текущее время: 13 июл 2020, 00:40

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




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

Зарегистрирован: 05 дек 2008, 03:58
Сообщения: 57
Хочется иметь на всякий случий резервную копию базы wiki.


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

Зарегистрирован: 05 дек 2008, 03:58
Сообщения: 57
Ну к примеру если PCI принадлежит к ПК. Но неимеет отношение к IA-32
USB существует на многих платформах. ПК, КПК, роутер, медиа плеер и прочее.
I2C тоже много где при миняется.
И прочее тоже.


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

Зарегистрирован: 05 дек 2008, 03:58
Сообщения: 57
Я в wiki про Pentium опобликовал одну интерестную статейку. Несовсем там где надо.
Просто хотел поделиться.
To SII
Просто хотел что-бы вы ее прочитали. А куда пристроить решайте сами. Или другими словами делайте с ней что хотите.


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

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1402
Насчёт PCI, USB и т.п. Сами шины существуют много где, и это совершенно понятно. Но работа с ними зависит от аппаратной платформы. Грубо говоря, конфигурирование устройств PCI на ПК выполняется одним способом (через два порта ввода-вывода с заранее известными адресами), а на Сановских серверах -- другим (потому что их архитектура несколько отличается). Естественно, справку о том, как осуществляется доступ к конфигурационному пространству на ПК, следует разместить в разделе о ПК. То же самое относится и к УСБ. Шина сама универсальна, однако её хост-контроллеры в определённой степени зависят от того, на каком компутере установлены. Ну и, наконец, пока мы имеем дело только с ПК, ну а если в будущем понадобится -- структура разделов будет пересмотрена. Пока же я вижу смысл отделять справочные сведения (Устройство ПК) от практики программирования.

Статью почитаю, когда время будет, тогда и будем думать, что, куда, зачем, почему и как.


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

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1402
Статейку чуть переместил, но в том же разделе. Язык перевода не слишком хорош, конечно, но пущай будет, как есть -- не переводить же заново :)


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

Зарегистрирован: 05 дек 2008, 03:58
Сообщения: 57
To Grinders. Я конечно понимаю что я пишу с ошибками, но я проверял. Так что не понимаю почему меня забанили.

А еще поповоду последних текстов SII. Мне они совершенно не нравятся.

Цитата:
(0 и 1 для гибких дисков A: и B:, 80h для диска C: и так далее).
Столь странный адрес загрузки объясняется, по-видимому, историческими причинами: самые первые ПК комплектовались оперативной памятью очень небольшого даже по тогдашним меркам объёма, а загрузочный сектор должен грузиться в такую область памяти, которая гарантированно присутствует. Область 7C00h—7DFFh занимает предпоследние 512 байт младших 32 Кбайт ОЗУ, так что можно предположить, что именно 32 Кбайта были минимально возможным объёмом оперативной памяти на первых ПК, оснащённых дисками.

Я считаю что это не место в MBR кто-то сам говорил о справочном стиле. А к MBR это мало относиться.
Во вторых спорно само сопоставление дисков 0=A 80=C все-таки "С" это логический диск а грузим мы физический. Да и такое обозначение использует по большей части Майкрософт.

LBA и CHS.

Может не не стоит писать в разделе LBA про CHS и в разделе CHS про LBA. Просто упомянуть и все.

Во вторых по моему страницы перегружены информацией.
В третьих ни стиль ни структура мне ненравятся.


Цитата:
они всё равно остаются разрывными, поскольку нумерация секторов в этом формате ведётся с единицы

Как разрыв связан с тем что нумерация от 1 ???
Разрывы связанны с тем что нельзя переходить треки при чтении. И разделы дисков выровнены по границе CHS. Но об этом надо писать в соответствующем разделе.

Кстати что касается LBA. В конце примеры где применяется. Не помню как в словаре пишут, но по моему лучше поставить вначале убрать союз "но" упомянуть о Флешках.


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

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 283
Ответ от SII (он запостить не может, разбираемся)

По поводу МБР и загрузчика. Согласен, что описание процесса загрузки должно лежать в другом месте. И будет лежать, я уже попробовал это сделать, но обломился: с работы почему-то не работает запись на вику, только чтение.

Номера дисков. Эту нумерацию придумал не я, а разработчики БИОС. 0 и 1 действительно соответствуют двум флопам (А и Б), а нумерация винтов начинается с 80. Позже попробую это развёрнуто описать (видимо, в статейке про дисковый сервис БИОС). Сама претензия по поводу использования букв понятна и в общем-то правильна.

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

Насчёт разрывности. А что, самому догадаться сложно? Даже в том случае, когда адресация CHS оторвана от реальной геометрии диска (как было в достаточно поздних системах), нулевой номер сектора использовать было нельзя. В результате получались такие "виртуальные номера" секторов на диске: сначала 1-63 (нулевой цилиндр, нулевая головка, секторы 1-63), потом 65-127 (нулевой цилиндр, первая головка, секторы 1-63), 129-191 (нулевой цилиндр, вторая головка, секторы 1-63) и т.д. Через каждые 63 значения пропускается одно, что неудобно, куда лучше сплошная нумерация, как в LBA.

Разделы не обязаны быть выровнены по какой-то там границе (кстати, что такое граница CHS?); по крайней мере, таблица разделов допускает начало раздела с любого положения. Как конкретные оси к этому отнесутся -- это уже другой вопрос, можно проверить на практике.

Если про флэшки забыл, добавлю, когда смогу запись вести.


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

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Хотелось бы, чтобы изменения произведённые в течении одного дня объединялись в одно изменение. По отдельным авторам конечно, а не все вообще. Можно сделать и автоматически, но можно и на странице "история" сделать кнопку для команды объединения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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
Сообщения: 1402
Цитата:
В разделе про таймер пропал пример перепрограммирования.


Пример, будучи практической, а не теоретической частью, перенесён в раздел практики: 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. Если для видеоконтроллера подобные вещи являются стандартным поведением -- что ж, это нужно описать в соответствующем разделе. Но не надо такое поведение одного устройства переносить на все остальные устройства.


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

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


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

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


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

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