Пишем свой ROM BIOS
Со стародавних времён хотел попробовать создать собственный ROM BIOS, который будет записан в отдельную микросхему и будет выполнять какие-то полезные действия. Например, ROM BIOS установлен в видеокартах (по крайне мере старых), контроллерах дисков и много где ещё — это фактически расширения обычного BIOS. Понимаю, что это всё старьё и тягаться с возможностями современного UEFI бессмысленно, но мне очень хотелось создать свой собственный образ, который находится физически в отдельной микросхеме и работает при старте системы. Поэтому пришлось даже для этих целей найти старый комп.
Когда я только решил влезть в этот вопрос, столкнулся с тем, что достаточно мало толковой информации, которая была бы хорошо и чётко изложена. Возможно, я плохо искал, примеров того, как писать свою программу в бутсектор жёсткого диска было много, а вот толкового мануала по созданию BIOS Extension — кот наплакал.
В этой статье мы с вами разберём создание своего ROM BIOS, дальше я расскажу про тонкости и нюансы, напишу низкоуровневый «Hello world», сделаю настоящий интерпретатор BASIC ROM, который стартует при включении компьютера, как в первых IBM PC.
❯ Теория работы расширения BIOS
Думаю, все знают, что такое BIOS, многие заходили в его настройки при старте компьютера. Но, оказывается, есть возможность делать для него модули расширения и создавать там свой функционал.
Если говорить об архитектуре IBM BIOS, то он может быть расширен отдельными модулями, и всё будет работать как единый код. Поэтому в персональную ЭВМ могут быть добавлены дополнительные микросхемы ПЗУ, которые будут включать в себя эти модули.
Многие из вас видели эти микросхемы на сетевых картах, но они также присутствуют в видеокартах VGA Video BIOS, системный (основной) BIOS, BIOS IDE жёсткого диска и многие другие.
Для того чтобы системный BIOS нашёл дополнительный модуль в памяти, есть специальная процедура, которая позволяет его найти. Во время самотестирования POST, после загрузки векторов прерывания в ОЗУ, резидентный код BIOS начинает проверять ПЗУ на наличие специальных байтов заголовка, которые помечают начало дополнительного модуля BIOS. Поиск этих заголовков идёт в диапазоне абсолютных адресов 0C8000h — 0F4000h .
Заголовок имеет определённый вид:
- Два байта обозначают начало секции: 0x55 и 0xAA .
- Сразу за двумя первыми байтами заголовка, следует третий байт, который содержит длину дополнительного кода BIOS. Это количество блоков, длиной 512 байт, необходимых для хранения этого кода. Это ещё значит, что раздел кода расширения BIOS не может быть длиннее:
После того как заголовок был найден, проверяется — является ли последующий раздел настоящим расширением BIOS. Для этого выполняется проверка целостности для указанного количества блоков по 512 байт. Значения каждого байта в блоке суммируются сложением по модулю 0x100 — эффект такой же, как при делении суммы всех байтов на 4096(d). Остаток 0 указывает, что расширение BIOS содержит корректный код. Проще говоря, последний байт должен хранить контрольную сумму, сумма всех предыдущих байтов, с которой даёт нуль.
Как только заголовок идентифицирован, контрольная сумма проверена, то управление будет передано к третьему байту этого расширения, и начинается выполнение программы, содержащейся в этом расширении. Например, видеокарта инициализирует свои регистры, благодаря которым вы можете видеть что-либо на мониторе после включения. Или находят диски, подключённые к компу.
Дальше, когда код был выполнен, управление вновь передаётся к резидентному BIOS, и поиск в памяти дополнительных блоков BIOS продолжается. Этот процесс завершается, когда достигается абсолютный адрес 0F4000h , после которого уже и начинается загрузка с диска.
Внимательный читатель может заметить, что в одной и той же области памяти не может быть двух одинаковых образов, поэтому производители плат расширения для компьютеров дают возможность переназначать адреса, которые использовались с их расширениями BIOS, чтобы не было конфликтов.
Например, в большинстве систем тех лет, есть три стандартных BIOS, которые, как правило, всегда расположены в одном и том же месте:
- Системный BIOS: основной системный BIOS расположен в блоке памяти размером 64 КБ от F0000h до FFFFFh .
- VGA Video BIOS: это BIOS, который нужен для инициализации и управления видеокартой. Обычно он находится в блоке размером 32 КБ от C0000h до C7FFFh . Находится непосредственно на плате видеокарты.
- BIOS жёсткого диска IDE: BIOS, который управляет жёстким диском IDE, если в вашей системе есть IDE, расположен от C8000h до CBFFFh . На старых платах расположен на плате контроллера жёстких дисков, на новой системе, как я понимаю, непосредственно на материнской плате.
Просмотр памяти BIOS реальной видеокарты
Переходим по смещению C000h , что как раз соответствует физическому адресу C0000h . Можно сразу увидеть два «магических» числа заголовка: 55h и AAh , затем идёт число 7Ch , которое говорит нам, что это расширение занимает 63488 байта.
Из теории должно быть понятно, что если мы хотим написать программу, то нам надо в начале кода делать заголовок, который будет содержать волшебные числа и размер кода в секторах, а в конце кода считать контрольную сумму. И если с первым всё более-менее понятно, то сложность доставляет добавление контрольной суммы.
В общем-то, этой информации должно быть достаточно, чтобы взять и написать свой BIOS.
❯ Пишем «Hello Wold» в расширении BIOS.
Когда начинал искать информацию по теме, наткнулся на следующую PDF, которая и стала кладезем информации. Это какая-то презентация, как собирать BIOS-расширения. В конце неё даётся ссылка на репозиторий с прекрасным примером и описанием. Это замечательный пример того, для чего можно было создавать свои расширения в BIOS — защищённая загрузка на жёсткий диск с паролем. Да, во времена UEFI всё это потеряло всякий смысл. Но мы хотим разобраться с этой частью.
Попробовал это расширение, оно у меня высыпалось с ошибкой. Но я понял, что оно работает, потому что оно запустилось и напечатало ошибку. Значит можно взять код, который выводил ошибку и сделать из него «Hello World».
Обкорнав этот пример, получилось настоящий «Привет мир». Сам ассемблеровский код разбирать не буду, он достаточно очевиден, но обращу внимание на некоторые моменты. Код весь можно посмотреть в моём репозитории. Программа собирается транслятором nasm, на мой взгляд, самый удобный и простой транслятор для начинающих, работает как в DOS, Windows, так и в Linux. Для удобства сборки написал Makefile.
Пробежимся по коду hello.asm:
Начинаем работать с нулевого смещения. Вначале мы определяем define rom_size_multiple_of equ 512 , который содержит размер блока. Bits 16 говорит, что NASM должен генерировать код для процессора, работающего в шестнадцати битном режиме.
db 0x55, 0xAA — это заголовок, магические числа, которые обозначают начало область начала расширения BIOS.
db rom_size/512 — это один байт, который определяет размер секторов нашей программы. Рассчитывается автоматически с помощью макроса, для этого в конце программы добавлен следующий макрос:
Макрос rom_end — получает размер программы в байтах. Далее идёт расчёт размер памяти, кратно блоку 512 байт и сохраняется в макрос rom_size . И это значение уже подставляется в байт в памяти, где рассчитывается количество блоков. Надеюсь, вы не запутались, тут просто происходит рекурсивная трансляция.
После того как заголовок определён, идёт команда jmp start , которая осуществляет прыжок на начало исполнения программы. В конце кода программы, перед макросами расчёта её размеров, резервируется 1 байт для расчёта контрольной суммы:
В качестве способа ввода-вывода используется стандартное прерывание BIOS int 10h , которое расписывается в любой книжке по ассемблеру, поэтому не вижу смысла подробно на этом останавливаться. Многие студенты пишут подобные опусы на лабораторках в институте.
Самое интересное — расчёт контрольной суммы, и он осуществляется с помощью дополнительной программы addchecksum.c. Её исходники я также позаимствовал из проекта AHCI BIOS Security Extension. Код этой программы тоже стоит разобрать, потому что он интересен и полезен. Не так много работающих примеров, которые умеют считать контрольные суммы для расширения BIOS.
С помощью перехода в конец файла fseek(f, 0, SEEK_END); мы получаем размер файла int f_size=ftell(f); . Далее с начала файла образа читаем побайтно и суммируем полученные значения в однобайтовой переменной sum (то есть отбрасывая бит переноса). После чего инвертируем полученное значение и записываем его в последний байт нашей программы fputc((0x100-sum)&0xff, f); , где мы заранее зарезервировали нулевой байт данных. В результате, если просуммировать весь код программы, он должен быть равен нулю, вместе с нашей контрольной суммой (последний байт хранит отрицательное число контрольной суммы).
Собрать это всё можно следующими двумя командами:
Результатом всех операций, если вы всё сделали правильно, будет файл hello.rom . Осталось найти способ протестировать работоспособность этого бинарника.
❯ Способы отладки BIOS Extension
Самый очевидный и проблемный способ — это прошить программатором микросхему ПЗУ, вставить в специальную панельку на плате ISA или PCI, затем эту карту вставить в комп, включить его и убедиться, что ничего не работает. Есть вообще путь настоящего джедая — это встроить код прям в BIOS на материнской плате, но всё это долго, муторно и неудобно. Есть более простые и удачные решения.
Всё хорошее придумано для нас — это виртуальные машины, в данном случае использовал VirtualBox и qemu. Второй вариант быстрее и проще, первый — доступен в Windows, а поскольку большую часть времени работаю в wsl под Windows, для меня это актуально. Да, я знаю, что qemu есть для Windows, но таков путь.
VirtualBox
Для того чтобы протестировать ROM BIOS Extension, я создал пустую виртуальную машину. Там не требуется даже подключать жёсткий диск, он не нужен. Далее необходимо подключить данный образ к виртуальной машине. В Windows делал следующим образом, запускаю PowerShell и выполняю:

После этого можно просто подменять файл c:\tmp\hello.rom и всё будет работать. В Linux тоже всё работает, команда такая же, разве что не требуется лезть по явному пути, так как путь до VBoxManage уже содержится в переменной PATH.
Копирую файл hello.rom в c:\tmp\ и пробую запустить виртуальную машину.
Тестирование образа ROM в VirtualBox
Всё отлично работает. Но для меня qemu показалось намного удобнее и проще, без всех этих плясок с созданием машины и прописыванием путей до образа. И запустить её можно из любой папки.
Запуск BIOS в qemu
Протестировать в виртуальной машине qemu можно одной командой, прямо из папки с получившимся бинарником:
- -net none говорит, что сети у нас нет.
- -option-rom — указывает образ ROM-файла.
Запускаем тестирование программы из Makefile
Оба инструмента имеют право на жизнь, но мой выбор — это qemu, плюс там удобно будет ещё и посмотреть, что происходит с моей программой.
❯ Тестирование на реальном железе
Если первая часть статьи показалась вам сложной, то нет — это была самая простая часть проекта. Самая сложная часть, которая отняла у меня большую часть времени — это запуск всего на реальном железе.
Вообще, не так много способов установить свой собственный ROM в память компьютера, самый простой – это подобрать сетевую карту, у которой есть кроватка для установки ROM. Вроде бы прошивай ПЗУ, устанавливай в кроватку и вперед, но как обычно, путь был тернист.
Попытка на 386 машине
Изначально планировал весь проект реализовать на 386 машине, железо которой мне было любезно предоставлено spiritus_sancti.
386 материнская плата
Чтобы оживить его, пришлось пройти настоящий квест по разворачиванию DOS на Compact Flash, оказалась не такая простая задачка, с танцами. О чём подробно описал у себя в ЖЖ. Все эти мытарства были нужны для того, чтобы увидеть образ ПЗУ в памяти ЭВМ.
Для прошивки взял микросхему M2764, программатор долго её не хотел видеть, всё давал ошибки ножек. Но всё же дал её прошить.
Прошивка микросхемы
После прошивки вставил её в панельку сетевой карты и стал ждать чуда.
ПЗУ M2764 в панельке сетевой карты
Но чуда не произошло, сколько я не плясал с бубном, но видел при загрузке только такую картину:
BIOS найден не был, попытка загрузиться на дискетку
Тогда я тщетно пытался разыскать свой код в памяти с помощью утилиты debug (для этого и ставил DOS). Но безуспешно, в результате решил взять железо посвежее для своих опытов.
Pentium 4 и сетевая карта Realtek RTL8139
Поскребя по сусекам в своём гараже, обнаружил там системный блок с Pentium 4, который долгое время стоял под дождём, но оказался живым. И подумал, что он вполне может подойти для моих целей. Винт был мёртв и хрустел французской булкой, но меня это не волновало, главное, чтобы работал BIOS и PCI.
Потрошка подопытного, все шлейфы отключены, во избежание
При включении оказался вполне себе бодрым и живым, разве что пришлось заменить батарейку BIOS.
Старт, всё живое, дисков нет
Чтобы код с сетевой карты выполнился, необходимо обязательно указать загрузку с LAN. Как это ни странно, по умолчанию выполняться он не будет, хотя мануалы гласят об обратном.
Включаем исполнение кода на сетевой карте
Есть верный способ сделать что-то хорошо — это повторить за кем-то. Поэтому, решил взять не только куски кода из проекта AHCI BIOS, но и рекомендации по выбору сетевой карты:
Вместо 28C64 решил использовать микросхему M2764, которая у меня уже была в наличии. Карта очень распространённая и купить её не проблема, главное следить, чтобы в ней была панелька.
Как я узнал из статьи «Boot manager для 486-го компьютера», для работы BOOT ROM сетевую карту нужно конфигурировать. Нашёл с трудом драйвера для RTL8139 под ДОС и даже настроил, чтобы всё корректно работало.
Настройка сетевой карты в драйверах
Ставлю прошитое ранее ПЗУ в эту сетевую карту, ииии…
Установленное ПЗУ. Железка снята для удобства многократной установки платы
Устанавливаю её в системный блок, загружаюсь и ничего. Как я не бился, как ни крутился, что не делал — не получается. Именно тогда я озадачился поиском программы просмотра памяти. С помощью RAMVIEW смотрел всю память, но так и не встретил там участка с моим образом (ключевое слово «Hello Word» в начале сегмента).
Стало понятно, что нужно брать сетевую карту, у которой уже есть настоящий, живой Boot ROM и смотреть как же он работает. Это сетевые карты типа PXE.
Рабочий вариант: сетевуха с образом PXE
Идея простая, найти сетевую карту с рабочим ПЗУ, затем посмотреть, как оно устроено. Отпаять с неё микросхему ПЗУ, зашить свою прошивку и припаять обратно. Но потом я подумал: а зачем отпаивать, если можно поставить просто панельку. Так я и поступил.
PXE-сетевые карты стоят на досках объявлений дешевле, чем микросхемы ПЗУ в магазине. Поэтому, купил сразу несколько плат, чтобы было место для экспериментов. Выбор пал на распространённую модель: 3Com 3C905C-TXM.
Сетевая карта с PXE
Ставлю её в компьютер, и, о чудо, она грузится!
PXE ROM успешно обнаружен!
Можно даже посмотреть, как выглядит образ PXE ROM в памяти компьютера, с помощью утилиты RAMVIEW.
Образ PXE ROM в памяти компьютера
Здесь для меня была ценная информация, где я смогу найти образ своей программы в памяти компьютера. Всё точно так же, магические два числа и размер образа в секторах.
Дело стало за малым: отпаять микросхему и припаять панельку. На деле оказалась не такая простая процедура, как я думал, даже пришлось носить к профессиональному монтажнику (благо есть такая возможность), но у меня всё получилось.
Снимаем микросхему ПЗУ
Монтируем панель для микросхем
Прошиваем
Устанавливаем микросхему на своё законное место. Для сравнения плата с панелькой и микросхемой, запаянной штатно:
Всё, теперь всё готово к тестированию. Вставляем плату в компьютер, и всё работает!
Суровый аппаратный Hello World
Этот удивительный момент даже заснял на видео.
Теперь даже можно проверить, что в памяти видно эту программу. Обратите внимание на строку «Hello world.» в конце.
По адресу PXE теперь живёт «Привет мир»
Всё это конечно прикольно, но хочется чего-то более полезного и функционального, ведь умение делать свой ROM BIOS дарит много новых возможностей. А давайте сделаем настоящий ROM BASIC?
❯ BIOS ROM BASIC
Старожилы помнят, что в первых персональных компьютерах IBM интерпретатор BASIC был встроен в ROM BIOS. И мне показалась забавной загружаться вместо ОС в интерпретатор BASIC.
Главная задача, которая стояла предо мной — это найти хорошие исходники BASIC, написанные на ассемблере. Может показаться забавным, но Microsoft официально, в своём репозитории выложила исходники GW-BASIC. Однако, внимательно посмотрел на них, почитал статьи тех, кто пытался их собрать, например, и понял, что дело гиблое. В результате я отказался от идеи использовать этот исходник, хотя, конечно, это было бы очень аутентично.
Мне же посоветовали исходники bootBASIC, который занимает всего 512 байт, и рассчитан для работы в загрузочном секторе жёсткого диска. По счастливому стечению обстоятельств, в качестве транслятора там тоже использовался nasm.
Я сделал клон этого проекта, за пару часов добавил функционал, чтобы он компилировал ещё образ для ROM сетевой карты: добавил в начале магическое число, размер и в конце контрольную сумму — теперь вы всё знаете и сами умеете.
Осталось только собрать образ ROM простой командой:
И проверить его:
Но всё это не спортивно, интересно попробовать в реальном железе. И таки да, оно работает!

Как говорится, лучше один раз увидеть, чем тысячу раз прочитать. Поэтому вот вам небольшое кинцо.
❯ Заключение

Кто бы мог подумать, что создание своего образа BIOS окажется таким интересным и продолжительным квестом. Мне пришлось купить около десятка сетевых карт, чтобы наконец найти рабочую. Проблемы с ROM, которые у меня были, вероятнее всего связаны с плохим качеством микросхемы ПЗУ.
Очень много этапов экспериментов не вошло в статью, как минимум у меня около десятка различных вариаций «Hello world», написанных в разной стилистике ассемблера. Поле для экспериментов просто непаханое. Несмотря на то, что это старьё, такой опыт полезен для разработки на голом железе и может быть использован при программировании других модулей.
Хоть литературы по теме немного, создавать свой ПЗУ BIOS совершенно несложно. Это не сильно отличается от примеров создания загрузчика в бутсектор жёсткого диска. Просто нужно помнить, что есть ещё контрольная сумма, которую тоже нужно уметь считать и записывать в конец образа ROM.
Writing my own BIOS
I’m not crazy, just reinventing the wheel 😀
I wrote boot-loaders, mouse & keyboard mini-drivers, mini OS and so on.
I’m always trying to avoid DOS interrupts, using BIOS ones only, trying to go forward a unity mini OS, but suddenly I decided to write my own BIOS 🙂
The Legend said :
I was high-level programmer, then low-level one. One day I’ll be machine-language programmer!
Is a BIOS written in assembly? How can I flash it? What’s the mechanism? Can I start editing my current BIOS?
![]()
![]()
5 Answers 5
A BIOS can be written in assembly but doesn’t have to be, some parts need to be to get the parameters for the system call since they don’t match the compilers calling convention.
How do you flash it? Varies from motherboard to motherboard, I would start with an open source virtual machine and write a bios for that. Or create a virtual machine where you have written the bios. The mechanism varies from vendor to vendor, generally you boot dos (dos is not dead, it is very much alive in the PC world, esp motherboard development and embedded systems). I wouldn’t mess around with a real motherboard, if you don’t already know the answers to all of these questions you are going to brick a number of motherboards if you take that path.
You can try to take a bios upgrade for your mother board and reverse engineer it (although there is probably a click through agreement that says that you wont). If you figure it out you can both load it and hack at at. I wouldn’t go there, you will brick your system before you figure it out.
Is writing a bios really what you are after? Fairly old school, would be like writing 6502 code for fun. There are many low level problems that are more useful and as interesting.
If you can write asm the writing machine code is not that difficult at all, you could just go do that for fun. x86 is dreadful, you should spend some time learning other systems and their asm and machine code (and writing operating systems for them). ARM dominates the world and doesn’t rely on a bios. I have been told that to get a video card up on a non-x86 system you still have to fiddle something in x86 on the x86 bios, could figure out how to bring up a mainstream video card without the need to run the x86 bios. watch an emulator run the bios and see what it does, figure it out replace that power on init without the bios doing it. Writing an instruction set simulator or disassembler is the next step beyond writing machine code, I wouldn’t waste even a second of time on x86 though, I can suggest a list of alternatives (or you could just play with the simulators I have written or collected).
If an x86 bios is the way you want to go, your best path is to write, replace, or hack on a bios for a virtual machine being qemu, virtualbox, or other. Replacing that bios with yours would likely be replacing a file in some directory or using a command line option to specify an alternate bios. Once you are well experienced in that then if there are still motherboards with legacy bioses on them perhaps you can hack your way into programming one (need to buy several of each type of motherboard as you WILL brick some). With so many embedded systems out there that can be had for $20 to $200 with the same level of experience gained, it doesn’t make sense to hack on a pc motherboard without decent schematics and documentation. You could dig up an original PC with the schematic and bios listing being documented, and the bios being socketed so if yours doesn’t boot (and doesn’t destroy the motherboard) it isn’t a brick you can reprogram or replace the bios chip. Probably want to use a microcontroller to stand in as a fake bios, as finding the right hardware to reprogram more bios chips is perhaps harder to find that working original PC’s. There is an amiga community that is likely a lot more fun and would be happy to have you improving/tweaking their bios, say putting modern hardware behind the legacy system calls.
Написание собственного BIOS
Я не сумасшедший, просто изобретаю колесо: D
Я написал загрузчики, мини-драйверы для мыши и клавиатуры, мини-ОС и так далее.
Я всегда стараюсь избегать прерываний DOS, используя только BIOS, пытаясь продвигать unity mini OS, но внезапно я решил написать свой собственный BIOS:)
легенда сказал :
Я был программистом высокого уровня, потом низкого. Однажды я стану программистом машинного языка!
написан ли BIOS в сборке? Как могу я помахать им? Каков механизм? Могу ли я начать редактирование текущего BIOS?
4 ответов
BIOS может быть записан в сборке, но не обязательно, некоторые части должны быть, чтобы получить параметры для системного вызова, поскольку они не соответствуют Соглашению о вызове компиляторов.
Как прошить его? Варьируется от материнской платы к материнской плате, я бы начал с виртуальной машины с открытым исходным кодом и написал bios для этого. Или создайте виртуальную машину, на которой вы написали bios. Механизм варьируется от поставщика к поставщику, как правило, вы загружаете dos (dos не мертв, это очень жив в мире ПК, разработке материнских плат esp и встроенных систем). Я бы не возился с реальной материнской платой, если вы еще не знаете ответов на все эти вопросы, вы собираетесь заложить кирпичом ряд материнских плат, если вы пойдете по этому пути.
вы можете попробовать взять обновление bios для вашей материнской платы и реконструировать его (хотя, вероятно, есть соглашение, в котором говорится, что вы не будете). Если вы поймете это, вы можете загрузить его и взломать на. Я бы не пошел туда, вы заложите кирпичом свою систему, прежде чем поймете это.
действительно ли вы пишете bios? Довольно старая школа, было бы похоже на написание кода 6502 для удовольствия. Есть много проблем низкого уровня, которые являются более полезными и интересными.
Если вы можете написать asm код пишущей машины не так сложно, вы можете просто пойти сделать это для удовольствия. x86 ужасен, вы должны потратить некоторое время на изучение других систем и их asm и машинный код (и написание операционных систем для них). ARM доминирует в мире и не полагается на bios. Мне сказали, что для того, чтобы получить видеокарту в системе, отличной от x86, вам все равно нужно что-то возиться в x86 в x86 bios, можно выяснить, как поднять основную видеокарту без необходимости запускать x86 bios. посмотрите, как эмулятор запускает bios и посмотрите,что он делает, выясните, замените это питание на init без bios. Написание тренажера набора инструкций или дизассемблер-это следующий шаг после написания машинного кода, я бы не стал тратить ни секунды времени на x86, хотя, я могу предложить список альтернатив (или вы можете просто поиграть в симуляторы я написал или собираются).
Если bios x86-это то, что вы хотите, ваш лучший путь-написать, заменить или взломать bios для виртуальной машины qemu, virtualbox или другого. Замена этого bios на ваш, вероятно, заменит файл в каком-либо каталоге или с помощью команды опция line для указания альтернативного bios. После того, как вы хорошо опытны в этом, то если есть еще материнские платы с наследием bioses на них, возможно, вы можете взломать свой путь в программировании один (нужно купить несколько каждого типа материнской платы, как вы будете кирпич некоторые). С таким количеством встроенных систем, которые могут быть за $20 до $ 200 С таким же уровнем опыта, не имеет смысла взломать материнскую плату ПК без достойных схем и документации. Можно нарыть оригинальный ПК со схемой и списком bios документируется, а bios закрепляется, поэтому, если ваш не загружается (и не разрушает материнскую плату), это не кирпич, который вы можете перепрограммировать или заменить чип bios. Вероятно, хотите использовать микроконтроллер, чтобы стоять в качестве поддельного bios, так как найти правильное оборудование для перепрограммирования большего количества чипов bios, возможно, сложнее найти, что работает оригинальный ПК. Существует сообщество amiga, которое, вероятно, намного веселее и будет рад вас видеть улучшение / настройка их bios, скажем, размещение современного оборудования за устаревшими системными вызовами.
Fwiw Modbin-это программа DOS, которая, как следует из названия, изменяет изображения BIN, особенно с целью простых qnd довольно экстремальных изменений существующего кода BIOS.
Если вы можете получить старый mobo (многие выбрасываются все еще работают), я бы рекомендовал вам поиграть с BIOS. Это информативно и весело, если кто-то так склонен, и Вы, кажется,:) было время, когда я загружал изображения BIOS с mobos, которые имели те же или похожие чипсеты, хотя сделано другим изготовителем. иногда для значительного преимущества, включая такие простые, как продолжение получения обновлений BIOS после того, как оригинальный производитель mobo уронил мяч или пошел животом вверх, а также функции и параметры производительности и изменения.
Это привело к «горячему миганию», которое тянет вверх чип BIOS с носком, так что штыри едва вошли в контакт и один раз загрузились, потянув его и заменив плохой (часто тот, который я fuxored), в то время как все еще работает и мигает, используя кэшированную функцию BIOS, которая поддерживала активность системы. Забавные вещи для тех из нас, кто выродок убеждения и дал мне уверенность, чтобы написать драйверы устройств для OS / 2
есть способы прошить bios, кроме того, чтобы компьютер работал, возможно. Но это требует некоторого оборудования. Хотя это не должно быть слишком дорого.
Он объяснил это более подробно, хотя вы, возможно, не ищете инфекции, некоторые технологии для получения bios покрыты, где клип программирования является одним из них.
Если вы хотите написать BIOS для IBM PC совместимого компьютера (который является то, что большинство настольных ПК сегодня, хотя и с большим количеством расширений для набора инструкций CPU, и некоторые различные интерфейсы шины), то я предлагаю вам посмотреть через IBM PC, IBM PC XT и IBM PC AT технические справочники. В частности, IBM PC AT manual, как таков фактический стандарт.
в этих руководствах есть список программ полного BIOS, который IBM использовала на своих компьютерах, и они находятся на языке ассемблера. Возможно, вам придется немного порыться в этих руководствах (особенно в IBM PC at one), чтобы найти их, поскольку некоторые из них не перечислены непосредственно в оглавлении, но они есть. Надеюсь, те первые версии BIOS, может вам для начала.
Шьем биос через Atmega328
Пост не призывает к действию, все манипуляции проводите на свой страх и риск.
Был прекрасный тихий вечер.
На улице мороз -30, а я в теплом доме с кружкой чая.
Неожиданно приходит глупейшая мысль «А почему все обновляют биос, а я нет?»
Ну а что же, надо действовать! Опыт какой-никакой!
Качаю прошивку, (msi) завожу через M-Flash, игнорирую табличку «данная версия bios не предназначена для вашего устройства», я же лучше знаю.
Загружаем. иии. получаю кирпич весом в 20 кг.
Тут можно было бы и закончить, отнести в сервис, выслушать всяческие издевательства со стороны сотрудников СЦ, заплатить за восстановление bios, и жить себе спокойно. Но кучерявые волосы на голове нашептали быть в душе Евреем, а значит будем восстанавливать своими руками, но уже завтра.
Разбираем кирпич на части, смотрим:
Flash bios в данном случае это то, на котором желтая бумажка с надписью E7673IMS

Чем шьют bios? SPI программатором.
Но дома только ST-link, USB — UART TTL преобразователь, и куча различных МК.
Черпаем информацию, ага, SPI программатор на Arduino! Где то у меня была одна реплика..
Берем ноутбук своей женщины
Качаем ПО, шьем МК, и подключаем.
В вышеуказанном посте Arduino pro mini, у меня же реплика Arduino nano, распиновка отличается.
+ я запитывал от стабилизатора на 3.3в(а не от 5в, как в посте)
Хотел еще сделать делитель напряжения для понижения логических уровней, но и так сойдет 🙂
Впаиваю огрызки витой пары напрямую в материнку к flash.

Подключаем к ноутбуку, в программе выбираем размер flash(в моем случае 8192 кбайт), качаем на этот раз прошивку для МОЕГО bios, шьем 15 минут.

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

Кирпич весом 20 кг снова становится рабочей машиной.
Эта история навевает воспоминаниями из детства. где подвигом было поменять настройки в bios, а о прошивке и речи не шло, так как все боялись случайного отключения эл.энергии
А сейчас можно убить, и без проблем восстановить bios, без «мам, пап и кредитов»
Это был мой первый опыт прошивки flash.
Спасибо за внимание, обсудить мою рукожопость можно в комментариях
P.S. Дамп старого биоса я снял перед тем, как всё умертвить, но цель была поставить именно новый
P.P.S. Если работает, не трогайте

6.8K постов 39.9K подписчик
Правила сообщества
ЕСЛИ НЕ ХОТИТЕ, ЧТОБЫ ВАС ЗАМИНУСИЛИ НЕ ПУБЛИКУЙТЕ В ЭТОМ СООБЩЕСТВЕ ПРОСЬБЫ О ПОМОЩИ В РЕМОНТЕ, ДЛЯ ЭТОГО ЕСТЬ ВТОРОЕ СООБЩЕСТВО:
Посты с просьбами о помощи в ремонте создаются в дочернем сообществе: https://pikabu.ru/community/HelpRemont
К публикации допускаются только тематические статьи с тегом «Ремонт техники».
В сообществе строго запрещено и карается баном всего две вещи:
В остальном действуют базовые правила Пикабу.
Возможно было бы удобнее было подпаяться к разъему JSPI1, а не к самой флешке. А еще лучше — если есть ответная колодка к этому разъему
Ох уж эти очумелые ручки. Как то вырубили свет на этапе Erase, но Мамка реагировала и обращалась к флоппику. Нашёл дискету, написал батничек, запустил. Заработало.
Расстрельный сервис по ремонту техники
Здравствуйте, уважаемые пикабушники, это мой первый пост.
Случилась у меня беда, стала шуметь и подтекать стиральная машинка. Позвонил в сервисный центр с сайтом helpanu точка ру. 19 февраля приехал мастер, Роман (если его зовут так на самом деле). разобрал проверил — говорит подшипники надо менять. Указанная на сайте цена замены подшипника барабана от 3990 (оригинал) 1-2 часа работы, Роман предложил дешевле. Вышло в районе 7т за замену двух. Мастер сказал, что у него нет инструмента надо увозить барабан в сервис. Роман говорил очень грамотно, сказал, что документы предоставит после ремонта и если возникнут проблемы, то его паспортные данные есть у фирмы, можно будет разобраться. А дальше начались отговорки: постоянно по телефону сообщал, что у него то ребенок один следить надо, то крестовина рассыпалась надо еще денег на замену (2 тыс. дополнительно), то бак повредили в процессе и нужно время, то он приезжал с баком и не смог попасть в квартиру, хотя в первый раз спокойно попал точно ко времени, когда надо было прийти за денюжкой на ремонт машинки. Потом он и вовсе сказал, что его уволили (не до конца уверен, что это так, все только с его слов), и фирма должна предоставить нового мастера. После моих частых звонков в фирму сначала со мной связался менеджер назвавший себя Ярослав и сказал, что в течении 3 дней решат вопрос, затем стали сбрасывать звонки. На данный момент 09.03.23 у меня не работает стиральная машинка, деньги за ремонт не вернули.
На сообщения, плохие отзывы отвечают односложно. Одноименная группа вк почти мертвая со старыми и накрученными положительными отзывами. Другие сайты с отзывами проверял (гугл-отзывы, яндекс-отзывы, 2гис и многие другие в том числе указанные у них на сайте), выглядят накруткой.
Не знаю как до них достучаться. Считаю, что подобного рода фирмы не могут продолжать существование в современном мире, развод уровня старых времен. Даже владелец не указан. Прошу помощи у сообщества, сам с подобной наглостью ранее не сталкивался.

Безопасность в новостройках
ФЗ N 123 ст. 137 п. 4 узлы пересечения должны иметь огнеупорность не ниже ограждения;
ГОСТ Р 53306 п.п. 3.1, 3.2: для трубопроводов из полимеров предписываются отсечные защитные устройства, обжимные муфты из расширяющихся материалов;
СП 40-107-2003 п. 4.23 для ПП канализаций надо монтировать ППМ со вспучивающимися прослойками;
СП 41-102-98 п. 5.7 – обязательность гильз для труб;
Еще больше интересного контента про стройку, экспертизы и приемку квартир Вы можете посмотреть на моем канала MrNadzor
Латр-2м 220в 2а. Ремонт, восстановление. Новая игрушка в коллекцию инструмента
Приобрел с барахолки данный ЛАТР, как не рабочий, сказали упал и больше не работает. Уже дома подключил в сеть, гудит, искрит, значит жить будет. Скрипел токосъемник.

Откололся корпус в районе клемм подключения 220в. Бывший хозяин заклеил.

Так же была в обрыве перемычка между 2 и 5 клеммами, она и служила причиной моего счастливого приобретения.

Скрип токосъемника, он не крутился как положено, а ползал по катушке.




принялся чистить межвитковое:

колёсик токосъемный я просто развернул:



Вот и все, готов ЛАТР к работе. Пользуюсь им редко, поэтому, такого ремонта мне хватит на долго. Кому нужно по надежнее, могут изготовить, заменить ролик токосъемника. Перемычку оторванную внутри ЛАТРа, заменил на провод с более хорошим сечением.
Где — то видел вопрос — а можно ли смазать токосъемник, чтоб не скрипел? — Нет. Сначала проверьте почему он скрипит.
Удачных всем ремонтов.
Благодарю за внимание.

Ответ на пост «Вторая серия автосервиса, уже не смешно. Закон Мерфи»
Когда был маленьким ,батя всегда ремонтировал сам, а я рядышком смотрел, ключи подавал. Вырос думал не буду заморачиваться буду в сервис отдавать, но как показала практика, лучше делать самому, приехал я как то в сервис, поменять салентблоки на реактивной тяге на Ниссан альмера н16 (там если кто не знает три сайлентблока). Захожу я значит в сервис, а там кусок сала расстекшийся сидит в кресле, рассказываю причину приезда, мне в ответ, -«2000 сторона», и ладно бы хоть поднял посмотрел, так нет просто ценник влупил, не пойми за что. В свое время устроился в снабжение в автосервис, запчасти подбирал, насмотрелся на механиков, один умел делать остальные три не то что делать, масло поменять не могли. Через год всех этих смотрин с братом взяли кредит, купили подъемники оборудование, открыли маленький сервис, брат в электрике шарит, любую проблему с проводкой чинил, ну а я слесаркой занимался, и клиенты пошли и постоянники появились, только проблема в другом нас нашла. Арендодатель видя что клиентов то много едет, начал ценник на аренду поднимать, причем каждый месяц начали мы с 15 тысяч аренды, закончили 75, плюс если какой то автомобиль оставался на ночь на парковке возле сервиса за нее 100 рублей плати, закрылись мы. Гараж сняли маленький без ямы, на домкратах поднимали, так и продолжили потихоньку. Многие клиенты ушли со словами, что должен быть подъемник, без подъемника не сервис, но многие остались. Со временем подкопили, свой гараж купили. Так и к чему я это все пишу, я был и со стороны клиента и со стороны сервиса, могу сказать что и клиенты бывают приезжают, такие ушлепки, так и мастеров в сервисе хер найдешь, да и хороший мастер в сервис работать не пойдет, не надо это. Те кто нашел хорошего мастера держись за него, ну а те кто ищут поспрашивайте знакомых, гаражники намного лучше относятся к своей работе, хоть с ними бывают неприятности, но все же не так как в сервисах.