OSDev http://osdev.su/ |
|
QSinit http://osdev.su/viewtopic.php?f=4&t=808 |
Страница 4 из 5 |
Автор: | dixie [ 25 сен 2022, 20:37 ] |
Заголовок сообщения: | Re: QSinit |
Ну, тут живая (как минимум, undead ) 16/32 система, написанная в эпоху роста PC. Из плюсов в этом то, что она готова к глючным биосам, т.е. использование редких сервисов минимально. Но VDM это таки жесть, да. Осевой VDM суров в целом, ось же умеет роутить реальные прерывания в VDM, если нету системного драйвера, который их обрабатывает. Когда-то оч. давно даже отлаживал досовский SB16 софт с прямым доступом к железу в осевой VDM. Но тут весь BIOS эмулировать не надо, т.е. железо остаётся в том же состоянии, в котором его оставила EFI фирмварь. Задача - проскочить от её до старта собственных драйверов системы. Там уже ACPI разберётся с прерываниями, а всё остальное даст и клавиатуру и диски и прочее ... А сервисы BIOS - строго на уровне необходимого ... пришлось, конечно, даже экзотику типа int 14h эмулировать ибо ось гонит вызовы из VDM прямо в BIOS. Надо хотя бы код ошибки корректный отдать, поскольку некоторые игрушки пытаются лезть к компортам именно так В итоге слово Virtual в VDM получило куда более явное наполнение. Но оно работает - и славно. Всяческая тьма досовского софта - текстовые редакторы, игры, итд. |
Автор: | dixie [ 21 мар 2023, 00:11 ] |
Заголовок сообщения: | Re: QSinit |
Много лет собирался проапдейтить описание с картинками и это таки удалось |
Автор: | SII [ 21 мар 2023, 07:57 ] |
Заголовок сообщения: | Re: QSinit |
Смотрю, EFI тоже используете. Поэтому вопрос на засыпку: есть ли где готовое описание сей фигни, достаточно подробное для, грубо говоря, продвинутого хелловорлда, но без лишних заморочек? (Так-то понятно, что надо брать и читать стандарт, но лениво только ради "побаловаться"). |
Автор: | dixie [ 21 мар 2023, 10:17 ] |
Заголовок сообщения: | Re: QSinit |
Сам я начал с того, что взял древнейший EFI тулкит и пример оттуда за основу. Оно аж под EFI 1.0/1.1, но чудесно работает до сих пор и моя сборка на нём и основана - с добавлением хедеров для более новых протоколов Это, как бы, наиболее гуманный вариант по сравнению с монстроидальными вещами типа UDK ... Для сборки хватает любого 64-битного cl из виндовой DDK .... Если это не подходит, то можно просто глянуть примеры оттуда Это то, с чего оно когда-то начиналось 20 лет назад. Собрать тот же apps\osloader и запустить из EFI шелла - оно до сих пор так в реальных загрузчиках OS и происходит (с тем небольшим исключением, что некоторые творческие фирмвари подразумевают вызов SetVirtualAddressMap и вешаются потом на рантайм функциях если его не сделать - но для для Hello, world-а оно и не надо ). |
Автор: | SII [ 21 мар 2023, 12:16 ] |
Заголовок сообщения: | Re: QSinit |
Спасибо, будет (надеюсь) время -- гляну А сам UEFI ограничивает загруженный им код в плане доступа к железу? Т.е. можно ли, скажем, самому запрограммировать контроллер USB, UART и всё такое примерно так, как делалось бы под ДОСом (т.е. забив на систему и взяв управление на себя)? Или пляски нужны? |
Автор: | dixie [ 21 мар 2023, 18:22 ] |
Заголовок сообщения: | Re: QSinit |
А как фирмварь может это сделать? Ring 0, плоская память (некоторые, правда, прячут таблицу страниц, замапив по её адресам нули) ... Никто не мешает писать что угодно в железо, другой вопрос, что собственные драйвера фирмвари поведут себя неизвестным образом. Поэтому, у меня, например, запрещёна прямая посекторная запись на системный EFI раздел с которого стартанул модуль - хз как и что они там кэшируют ... Тоже самое со всеми USB клавами, мышами, флешками и пр ... Но всё это работает только пока есть boot сервисы - выход в OS подразумевает их удаление и остаётся только самый минимум (доступ к переменным и ребут). Тут уже только чистое железо и загрузчик. Писать в компорты никто не запрещает ... GDT подменяю на свою, сохранив в начале все селекторы фирмвари, IDT тоже патчу напрямую - и это всё работает практически везде на x64. Стоит только иметь в виду, что вставные внешние компорты могут быть запрещены на PCI, фирмварь парится их разрешением только если включен CSM. Плюс, фирмварь может сама ходить в реальный (в VESA биос, например). Поэтому все селекторы при уходе в код фирмвари должны быть валидны ... иначе оно молча помрёт на чём-ньть, когда туда полезет чтобы поставить графический режим (например). В общем, тьма подводных камней вполне себе присутствует ... |
Автор: | SII [ 22 мар 2023, 13:54 ] |
Заголовок сообщения: | Re: QSinit |
Ну, я вообще давно от программирования под ПК отошёл, всё на микроконтроллерах сижу (на АРМах, главным образом), вот и не в курсе, как ЕФИ себя ведёт: под него ничего ж не делал. А что там полно подводных камней -- оно как бы очевидно: Интел же делала, а они отродясь ничего прямо в плане архитектуры не делали. COM-порт на моих материнках железный, почему про него и спросил: его ж завести проще простого, а значит, легко дать знать внешнему миру, что ты живой. |
Автор: | dixie [ 23 мар 2023, 11:36 ] |
Заголовок сообщения: | Re: QSinit |
У меня тоже привычка к компорту/логгированию всего, с тех пор как много лет писал под TV боксы ... Нахождение багов исключительно по логам, итд EFI хорош своим деревом устройств ... но всё это только для начальной загрузки - т.е. подразумеваемая схема - загрузчик OS читает в память все свои базовые драйвера, выходит из EFI в голое железо (там реально ничего не остаётся из сервисов) и стартует уже всё своё ... В какой-то степени это даже рационально - ибо ест EFI куда больше, чем BIOS и эту память лучше отдать OS. |
Автор: | SII [ 23 мар 2023, 12:29 ] |
Заголовок сообщения: | Re: QSinit |
Эх, хорошо на мэйнфреймах, в т.ч. современных: никаких тебе BIOSов и EFI (вообще никакого ПЗУ нет, вся память -- оператива), загрузка, с точки зрения программиста, инициируется чисто аппаратно и всегда стандартная, работа с периферией тоже стандартизована (одинаковые базовые наборы команд для любых типов дисков, например; разница -- в "геометрических" характеристиках и во всяких вспомогательно-диагностических вещах, для ОС бесполезных)... |
Автор: | dixie [ 24 мар 2023, 11:52 ] |
Заголовок сообщения: | Re: QSinit |
Ну, PC - это, ж, своего рода, "живой музей эволюции". Ну кто в здравом уме придумает ту же MBR разбивку, например? Со всеми дикими заморочками её расширенного раздела. Чисто результат метода проб и ошибок ... И так всё. |
Страница 4 из 5 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |