Написание собственного BIOS

Я не сумасшедший, просто изобретаю колесо: D
Я написал загрузчики, мини-драйверы для мыши и клавиатуры, мини-ОС и так далее.

Я всегда стараюсь избегать прерываний DOS, использую только BIOS, пытаюсь продвинуться вперед на единую мини-ОС, но внезапно я решил написать свой собственный BIOS :)

В легенде сказано:
Я был программистом высокого уровня, затем программист низкого уровня. Однажды я стану программистом на машинном языке!

Биос написан в сборке? Как его прошить? Какой механизм? Могу ли я приступить к редактированию моего текущего BIOS?


person Ahmed Ghoneim    schedule 05.06.2012    source источник
comment
Надеюсь, будет полезно для вас: coreboot.org/Welcome_to_coreboot   -  person sarnold    schedule 05.06.2012
comment
Голосование за закрытие слишком широкое.   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 27.08.2015
comment
@CiroSantilli 冠状 病毒 审查 六四 事件 法轮功 как это может быть более конкретным? В итоге были четко сформулированы 4 конкретных вопроса   -  person bluejayke    schedule 21.05.2020
comment
@bluejayke С тех пор я фактически изменил свой голос на закрытие философии. Я голосую только за то, чтобы закрыть то, что в настоящее время кажется ТОЧНЫМ дубликатом, и ничего больше не должно быть закрыто.   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 21.05.2020


Ответы (5)


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

Как прошить? Варьируется от материнской платы к материнской плате, я бы начал с виртуальной машины с открытым исходным кодом и написал бы для нее биографию. Или создайте виртуальную машину, на которой вы написали биографию. Механизм варьируется от поставщика к поставщику, обычно вы загружаете dos (dos не умерло, оно очень активно в мире ПК, особенно при разработке материнских плат и встроенных системах). Я бы не стал возиться с настоящей материнской платой, если вы еще не знаете ответов на все эти вопросы, вы собираетесь заблокировать несколько материнских плат, если пойдете по этому пути.

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

Действительно ли вам нужно писать биографию? Довольно старая школа, это все равно что писать код 6502 для развлечения. Есть много задач низкого уровня, которые более полезны и столь же интересны.

Если вы можете написать asm, то написание машинного кода не так уж и сложно, вы можете просто сделать это ради удовольствия. x86 ужасен, вам следует потратить некоторое время на изучение других систем и их ассемблерного и машинного кода (и написания для них операционных систем). ARM доминирует в мире и не полагается на биографию. Мне сказали, что для установки видеокарты в системе, отличной от x86, вам все равно придется что-то поиграть в x86 в BIOS x86, чтобы понять, как подключить обычную видеокарту без необходимости запускать BIOS x86. посмотрите, как эмулятор запускает BIOS, и посмотрите, что он делает, выясните, замените это питание на init, а BIOS не сделает этого ... Написание симулятора набора инструкций или дизассемблера - следующий шаг после написания машинного кода, я бы не стал тратить впустую даже хотя на секунду на x86 я могу предложить список альтернатив (или вы можете просто поиграть с симуляторами, которые я написал или собрал).

Если вы хотите использовать BIOS x86, лучше всего написать, заменить или взломать BIOS для виртуальной машины qemu, virtualbox или другой. Замена этой BIOS на вашу, скорее всего, будет означать замену файла в каком-либо каталоге или использование параметра командной строки для указания альтернативной BIOS. Если у вас есть хороший опыт в этом, то, если на них все еще есть материнские платы с устаревшими биосами, возможно, вы сможете взломать свой путь к программированию одной (необходимо купить несколько материнских плат каждого типа, поскольку вы БУДЕТЕ кирпичом некоторые). При таком большом количестве встроенных систем, которые можно приобрести за 20–200 долларов при том же уровне накопленного опыта, нет смысла взламывать материнскую плату ПК без приличных схем и документации. Вы можете выкопать оригинальный ПК с документированной схемой и списком BIOS, а также с сокетом BIOS, поэтому, если ваш не загружается (и не разрушает материнскую плату), это не кирпич, который вы можете перепрограммировать или заменить чип. Вероятно, вы захотите использовать микроконтроллер в качестве фальшивого BIOS, поскольку найти подходящее оборудование для перепрограммирования большего количества чипов BIOS, возможно, труднее найти работающий оригинальный ПК ... Существует сообщество amiga, которое, вероятно, будет намного веселее и будет будьте счастливы, если вы улучшите / настроите их биографию, скажем, поставив современное оборудование за устаревшие системные вызовы.

person old_timer    schedule 05.06.2012
comment
на некоторых материнских платах есть второй чип BIOS, который можно использовать для восстановления основного, если он будет поврежден во время обновления. возможно, эта функция поможет избежать блокировки слишком большого количества материнских плат :) - person Stefan Paul Noack; 06.06.2012
comment
@ old_timer Сэр, я хочу написать BIOS, чтобы понять, как работает компьютер, поскольку у меня нет формального компьютерного опыта (но я разработчик программного обеспечения, пишущий программное обеспечение на Java). Пожалуйста, помогите мне с дорожной картой, как я могу понять, как микропроцессор, BIOS, ОЗУ, ОС и т. Д. Наконец запускают мой код, чтобы сделать что-то стоящее; с какого момента я должен начать узнавать об этом; какой источник можно узнать. Я бы с нетерпением дождался вашего ответа. - person nawazish-stackoverflow; 13.04.2017
comment
x86 - это последнее место, с которого я бы начал, и уж точно не пытаюсь загрузить машину, это в лучшем случае кошмар. Просто потому, что он у вас есть - худшая причина. Начните с микроконтроллеров за 5 или 10 долларов, изучите основы, ознакомившись с некоторыми простыми вещами, такими как gpio и таймеры, и освоитесь с программированием на голом металле (в основном на C требуется очень мало asm, если таковое имеется). Затем, возможно, Raspberry Pi, MIP или PowerPC, а затем, если вы все еще чувствуете необходимость, попробуйте x86. Вы найдете практически нулевую информацию о том, что вам нужно для замены BIOS, и можете поджарить несколько материнских плат даже с десятилетиями опыта. - person old_timer; 13.04.2017

Если вы хотите написать BIOS для компьютера, совместимого с IBM PC (которым сегодня является большинство настольных ПК, хотя и с большим количеством расширений для набора команд ЦП и некоторыми другими интерфейсами шины), то я предлагаю вам просмотреть < strong> IBM PC, IBM PC XT и < strong> Технические справочные руководства IBM PC AT . В частности, руководство по IBM PC AT, так как это стандарт де-факто.

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

person SeanRamey    schedule 27.03.2018

FWIW Modbin - это программа DOS, которая, как следует из названия, модифицирует образы BIN, особенно с целью как простых, так и довольно серьезных изменений существующего кода BIOS.

Если вы можете получить старый mobo (многие из них выброшены, все еще работающие), я бы посоветовал вам поиграть с BIOS. Это информативно и весело, если кто-то так склонен, а вы так думаете :) Было время, когда я загружал образы BIOS с мобильных устройств, у которых были такие же или достаточно похожие наборы микросхем, хотя и сделанные другим производителем ... иногда со значительным преимуществом, включая такие простые, как продолжение получения обновлений BIOS после того, как производитель оригинального мобильного устройства упал или обанкротился, а также варианты и изменения, ориентированные на функции и производительность.

Это привело к "горячей миганию", которая подтягивает вставленную микросхему BIOS, так что контакты едва соприкасаются, и после загрузки, вытаскивает тот и заменяет неисправный (часто тот, который я сбрасывал), продолжая работать и перепрошивая его, используя функция кэширования BIOS, которая поддерживала систему в активном состоянии. Забавный материал для тех из нас, кто убежден в компьютерных фанатиках, и дал мне уверенность в написании драйверов устройств для OS / 2.

person Jmes Hanley    schedule 21.10.2015

BIOS может быть написан на любом из ваших любимых языков, хотя языки более низкого уровня дают вам больше контроля. Сборка и машинный код почти одинаковы, разница заключается в интерфейсе микрокода и в том, что вы вводите, например. для машинного кода вы должны ввести только 2 символа, а сборка предоставит вам буквенно-цифровые символы. Моя охота за индивидуальным BIOS началась, когда мне нужно было, чтобы компьютер загружался каждые несколько часов, и я не нашел ни одного BIOS, который бы это делал.

Чтобы перепрограммировать BIOS, следуйте инструкциям производителя. Теперь BIOS заменен на UEFI (для дополнительной безопасности). Оформить заказ: https://www.pcworld.com/article/187437/how-to-update-your-bios.html.

Ссылка на инструкции x86 и amd64: https://www.felixcloutier.com/x86/
Инструкции x86 с расширениями: https://en.wikipedia.org/wiki/X86_instruction_listings
Ссылка на инструкцию i386: https://css.csail.mit.edu/6.858/2014/readings/i386.pdf
Руководство по сборке x86: https://www.cs.virginia.edu/~evans/cs216/guides/x86.html
Набор инструкций Intel Ссылка: https://программноеобеспечение.intel.com/sites/default/files/managed/a4/60/325383-sdm-vol-2abcd.pdf

person Zimba    schedule 30.04.2019

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

Вы можете попробовать что-то вроде такой техники: http://hackaday.com/2010/11/18/build-your-own-soic-progamming-clip/

Этот доклад, который я видел сегодня: https://conference.hitb.org/hitbsecconf2015ams/sessions/how-many-million-bioses-would-you-like-to-infect/

Он объяснил это более подробно, хотя вы, возможно, не искали заражения, некоторые методы доступа к биографии описаны, где программный клип является одним из них.

person hallo    schedule 29.05.2015
comment
Пожалуйста, добавьте подробности из ваших ссылок, чтобы сделать этот ответ более точным. - person Fund Monica's Lawsuit; 29.05.2015