The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск Libreboot 20230625, opennews (??), 26-Июн-23, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


77. "Выпуск Libreboot 20230625"  +/
Сообщение от Аноним (75), 30-Июн-23, 12:16 
> n00by, пох - есть какая-нибудь полезная книга по архитектуре компьютеров,
> чтобы от и до? Где всё, и ACPI, и BIOS, и инициализация памяти
> и чипсета, и SMM, и прерывания, и ISA,PCI,PCIE,ATA,SCSI,SATA,SAS и чипы в
> чипсете?

"Мы тут город столетиями строили, нельзя ли получить полный план города со всеми коммуникациями?!"

Вот именно такого - вроде нет, в современном его виде. Есть BIOS developer guide описывающий взлет системы. У разных систем он разный. Иногда довольно сильно разный. Скажем у новых AMD'шек - первым стартует вообще ARMовское ядро, оно кроме всего прочего DRAM инициализирует (своей фирмварью, не факт что ее вообще опенсорсную можно) и запускает x86.

На чипсеты даташиты есть. ISA в современных чипсетах уже нету, на PCI/PCIE спеки есть и для софта второе достаточно похоже на первое, хоть физика и разная. ATA/SATA/... - контроллеры на шине, и вообще-то вам драйвер надо. В BIOS если оно грузиться умеет, там extension ROM для этого встроен. Или в контроллер или в системный биос. В UEFI для него драйвер должен быть.

На ACPI - спеки есть. Читайте наздоровье. Даже на некоторые чипсеты и процы довольно низкоуровневые доки есть.

А так там забавные фокусы встречаются - типа использования части cache как SRAM пока DRAM еще нету.

Можете попробовать начать с систем поменьше, типа одноплатников. Идея похожая но меньще легасии не так наворочено, общую идею понять проще. Или с более древних компов - но это знание может оказаться бесполезным. Скажем ISA уже давно нет, а минимальные огрызки физически давно делаются чипом "SuperIO" который на каком-нибудь LPC-bus отвисает.

Ответить | Правка | К родителю #45 | Наверх | Cообщить модератору

78. "Выпуск Libreboot 20230625"  +/
Сообщение от Аноним (80), 30-Июн-23, 15:58 
>использования части cache как SRAM пока DRAM еще нету

А что как-то по другому можно? Как программы без памяти могут работать, на нескольких регистрах реального режима далеко не уедешь (а x86_64 не всегда был)?

Ответить | Правка | Наверх | Cообщить модератору

82. "Выпуск Libreboot 20230625"  +/
Сообщение от Аноним (75), 01-Июл-23, 01:14 
> А что как-то по другому можно? Как программы без памяти могут работать,

Совсем начальный код в некоторых x86, насколько я помню, примерно как-то так и переключает кеш в режим что он типа тоже SRAM. Но с этими constraints работают лишь считанные команды ассемблера, а следующий блок кода уже может работать с меньшими constraints - юзая кеш как SRAM. Где-то вроде даже flowchart подобного кода бывает. Но я не помню где это видел. Возможно в чьем-то BIOS Deverloper's Guide. Эти документы у AMD и Intel доступны, но, увы иногда не полные. И на довольно многие чипсеты даташиты можно найти (но не все, и тоже не всегда полные).

А когда DRAM активирован можно уже более-менее нормальное окружение поднять. В случае "новых AMD" как я понимаю это "assisted start" - первым стартует мелкий ARM, он кроме всего прочего и "DRAM training" делает - и когда все готово, мелкий системный оверлорд окончательно сетапит x86 ядро и отпускает его работать дальше, когда все к тому готово. А у ARM скорее всего ROM на кристалле, с которого он начальную инициализацию делает - и потом догружает себе из SPI флехи следующий модуль. У него вроде блок SRAM есть всегда.

А еще на структурном уровне BIOS бывает разбит на "boot block" (небольшой, поддерживает минимум железа) и основную тушку. Это чтобы хоть какой-то план был если апдейт не удался, бутблок моут и не перешивать. Бывает и DualBios - но паять 2 чипа дороже и это делают только в топовых мамках.

> на нескольких регистрах реального режима далеко не уедешь (а x86_64 не всегда был)?

Ну так далеко и не надо - сделать минимум для следующего шага, следующего блока кода, уже более продвинутого.

p.s. да, вы првильно поняли - момент когда неинициализированное "мертвое" железо оживает это один из самых интересных - и зачастую самых сложных моментов. Это по своему красиво. Но современный x86 на всем ходу - сравним с большим городом. Как вы создаете мегаполис с пустого места? Это довольно длинная история в полном ее варианте. И вы даже проскипаете некоторые ее части за кадром, где какие-то сервисные фирмвари и что там еще сделают часть работы.

Ответить | Правка | Наверх | Cообщить модератору

79. "Выпуск Libreboot 20230625"  +/
Сообщение от Аноним (80), 30-Июн-23, 16:10 
>Скажем ISA уже давно нет

если я верно понимаю, то pci - это расширение isa.

У одного моего знакомого есть древнющий комп под досом, сопряжённый с древнющим оборудованием через сделанную на заказ ISA-плату. Было бы неплохо эту плату перетащить в новый комп под линуксом и написать драйвер. Там не должно быть сложно, плата просто роль ацп и цап исполняет, основная часть платы там аналоговая под задачу, трогать нутро платы учитывая мои нулевые навыки в электронике и её критичность и незаменимость я бы не стал, вместо этого бы попробовал воткнуть её в pci-isa переходник.

>BIOS если оно грузиться умеет, там extension ROM для этого встроен. Или в контроллер или в системный биос. В UEFI для него драйвер должен быть.

понятно, спасибо. по-видимому в моём случае это не option rom, а часть основного биоса.

>чипом "SuperIO" который на каком-нибудь LPC-bus

в моей материнке именно так.

Ответить | Правка | К родителю #77 | Наверх | Cообщить модератору

83. "Выпуск Libreboot 20230625"  +/
Сообщение от Аноним (75), 01-Июл-23, 03:02 
> если я верно понимаю, то pci - это расширение isa.

PCI это PCI. Он бывает даже на штуках где ISA отродясь не было, как то ARM/MIPS/RISCV/etc... и если надо - и на него спеки укачать можно. У x86 в контексте PCI есть несколько своих особенностей, которых может не быть у иных архитектур (у большей части других архитектур нет "legacy IO space" в принципе, так что там абсолютно все делается через mem-mapped регионы, но современный софт и на x86 так же делает - потому и "legacy"). Электрически и логически PCI таки здорово другая шина относительно ISA.

Иногда PCI даже бывает в виде который может поразить воображение. Например ath9k_htc чипсеты usb вафли внутрях гейтуют usb -> PCI и дальше это зацеплено на более-менее обычный ath9k core "как в PCI картах". Бывает и в виде 2 чипов (один гейт, второй "сетевка атероса") так и 1 где это слили на 1 кристалл уже, но идея осталась. Так что PCI может быть чем угодно, вплоть до накристальной шины. Это ессно неуниверсально, специфично, решение "под задачу".

PCIe - c "логической" точки зрения на PCI весьма похож. С электрической - совсем другая история, для скорости заменили параллельную шину на скоростные дифференциальные lanes, что все же отливается в некую специфику которой раньше не было, скажем, message signalled interrupt (MSI) стали использовать именно в PCIe.

PCI и PCIe достаточно похожи по логике для того чтобы были возможны сравнительно простые чипы-трансляторы ("bridges"). Ну и всякие странности типа чипов-коммутаторов, умеющих разветвлять 1 интерфейс в эн. Подстава с этими продвинутостями в том что если какая-нить видяха на pcie висит за вот этим - вы картинку не увидите пока не инициализируете всю цепочку. Так что bring up топовой современной мамки в штуку типа САБЖ может быть интересным занятием. Надеюсь, объясняет почему "ранний дебаг" любят скидывать в компорт (serial/uart), "дебажный usb" и/или юзают JTAG. В системе где на экране нифига не видно - много не надебажишь, но можно зацепить другую систему к относительно простому интерфейсу и поймать выхлоп своего кода или посмотреть дебагером что там. Этот фокус полезен и в случае если допустим кернел заглох ДО того как смог видео инициализировать, я сталкивался с например НЕвзлетом PCI подсистемы в лине, видяха при этом "почему-то" недоступна :)

На PCI(-e) есть спеки, если надо. За время строительства города планы многократно дописывались и дорисовывались, разумеется, так что в полной современной версии чтиво весьма объемное. Это как город будущего или межзвездный крейсер. В маленьких кристаллах упаковано довольно много чего. С разными подсистемами, "бортовыми компьютерами" и прочим. Ну например HDD@SATA. На самом деле 2 системы, одна хост вторая периферия и скоростной линк. У HDD несколько своих процов и фирмвар, оно получает команды по интерфейсу, делает выводы что хост хотел, выполняет, возвращает результат. Ядер бывает более 1 - своя фоновая логика может быть и проч. Многие иные взаимодействия сводятся к похожим по смыслу паттернам. VGA в современных видяхах лишь слой абстракции/эмуляция. А реальная начинка совсем иная, конечно. Вон те видеодрова в лине ессно вырубают эту абстракцию и валят в "native" режим. Где мы видим весь город, небоскребы, маглевы, бортовые компьютеры которые ими рулили... ага... дайте-ка сервисным процикам пачку сервисных фирмвар. А заодно и интересные таблицы, вольтажи, частоты, PWM вентиля, ... не все команды безопасны, кто сказал что там нет self destruct? :)

> У одного моего знакомого есть древнющий комп под досом, сопряжённый
> с древнющим оборудованием через сделанную на заказ ISA-плату.
> Было бы неплохо эту плату перетащить в новый комп под линуксом и написать драйвер.

А оно точно имеет смысл в XXI веке? Эта плата чем-то уникальна по функциональности?

Мне в паре похожих по смыслу случаев оказалось проще с ноля ре-инженернуть примерно такие технологии, но в современном виде: мелкий армовский одноплатник с линем + микроконтроллер полностью заменяли примерно такой по смыслу гроб. Это мелкое, маложручее, и при правильном подходе довольно надежное. Ну да, я накодил фирмварь мк делавшую "быструю" часть и "analog IO", прицепил сие на относительно резвый SPI - да из проги в лине на одноплатнике таскаю из данные и пуляю команды. Учитывая что ISA тормоз маловероятно что там есть что-то с чем не справился бы МК. По минимуму такое может выглядеть как, простите, ардуина прицепленная к распи/банану/оранжу. Я предпочитаю более продвинутый уровень, юзая STM32, и в состоянии отрисовать себе кастомные печатки для мк в KiCad (опенсорсном, под линух). Одноплатники ессно готовые: перевыпускать 6-слойного монстрика самому довольно канительно. Хоть при сильном желании... воооон там на гитхабе олимексовый A64 c 64-бит процом и DDR, так что если кто всерьез настроился почувствовать себя OEM'ом, да опенсорсными тулсами - можно попытаться уже. Это ессно сложно и с 1 раза может не получиться даже у гуру.

Но да - как вы поняли чтобы так уметь надо быть весьма любопытным, фанатеть от направления и потому много учиться. На самом деле это главное, если вам интересно, вы пройдете путь и найдете ответы. Просто путь к пониманию как современные системы работают - довольно длинный.

> Там не должно быть сложно, плата просто роль ацп и цап исполняет, основная
> часть платы там аналоговая под задачу, трогать нутро платы учитывая мои
> нулевые навыки в электронике и её критичность и незаменимость я бы
> не стал, вместо этого бы попробовал воткнуть её в pci-isa переходник.

На самом деле ADC и DAC - особенно с скоростями и таймингами характерными для ISA на МК сделать не больно крутая проблема. И схемотехника скорее всего не больно какая сложная. В современном МК в простейшем случае будет чуть не пачка проводников из чипа на входы (+защиты от ESD, etc). Ну и кидать в SPI/UART/I2C/USB/... по вкусу/аппетитам. В более сложном может какой транслятор уровней/полярностей сигнала на операционниках. Ну да, при полном ноле в том как оно работает - имеет смысл поискать "схемотехника" который поможет это обыграть. Но вообще такой уровень реально даже в 1 лицо своротить, те винтажные штуки довольно простые были. При желании залезть в такую область имеет смысл разучить МК какой-нить, хотя-бы ардуину. Правда у ардуины DAC нет а ADC медлеенный, STM32 в этом сильно лучше (1MSPS@12 bit делается встроенными DAC/ADC, можно даже с буфером и DMA, с точными таймингами по таймеру).

И это... я не в курсе как та древняя штука будет работать в режиме трансляции PCI <-> ISA. Гейтование может портить тайминги или что-то не реализовывать и насколько это вообще будет работать - отдельный вопрос. Как пример, старый софт получающий эмулированый UART через usb-to-uart чип может не работать или работать странно, т.к. тайминги usb совсем иные и он не спососбен разворачиваться чаще чем 1 мс. Хардварный UART таких ограничений не имел, так что часть софта не работает или работает медленно/странно.

>>чипом "SuperIO" который на каком-нибудь LPC-bus
> в моей материнке именно так.

Довольно типовой паттерн дизайна. И от ISA там лишь весьма маргинальные остатки, минимальный огрызок эмуляции чтобы скормить легаси софту как якобы-ISA. Часть подобных вещей делается нехилыми хаками. Скажем IIRC usb-клаву и мыша "классике" скармливают аж вышибая DOS/bios/bootloader/etc к чертям аж SMI# и далее обработчик BIOS делает вид что это обращение и правда прокатило и это типа тоже клава. Добро пожаловать в Ring -1. И странный мир где вы многое не видели - но оно было. ME и PSP гораздо более "нервирующие" технологии, они хуже любого "Ring -1". Но всегда лучше знать как оно чем прятать голову в песок, не? :)

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру