Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Рисунок 11. SCSI-контролер с несъемным BIOS (слева), он нам не подходит. Справа SCSI-контроллер со съемным BIOS,
который легким движением руки превращается в плату удаленного управления
Дополнительный UART-контроллер приобретать не нужно. Лучше воспользоваться тем, что встроен в материнскую плату, а при желании можно задействовать еще и интегрированный Ethernet или любое другое средство коммуникации.
Разработка прошивок обычно ведется на Ассемблере, но при желании можно использовать и высокоуровневые языки типа Си/Си++. Только ни в коем случае не используйте стандартные библиотеки ввода/вывода и прикажите линкеру отключить Start-Up. Для этого достаточно переименовать функцию main в нечто вроде MyMain. Поскольку Си не поддерживает базирования, откомпилированный код должен быть полностью перемещаем (то есть выполняться независимо от базового адреса загрузки в память). Этого можно добиться, отказавшись от глобальных переменных и выключив все опции компилятора, которые могут генерировать неперемещаемый код, о котором мы даже не подозреваем (например, контроль «срыва» стека). Если вы не уверены, что хорошо знаете «задний двор» компилятора, – не используйте его! Программируйте на Ассемблере. Он не подведет!
Код прошивки исполняется в 16-разрядном сегменте реального режима, однако никто не запрещает нам переходить в защищенный режим и выходить оттуда, правда, не совсем понятно, зачем это нужно. Использовать служебные функции BIOS недопустимо, поскольку часть аппаратуры еще не инициирована, да и сам BIOS еще не распакован. Работайте только через порты ввода/вывода, однако перед этим не забудьте, что оборудование должно быть инициализировано вручную. В частности, интегрированный COM-порт еще не имеет ни базового адреса, ни IRQ, ведь PnP-менеджер, распределяющий системные ресурсы, еще не получил управления! Приходится открывать документацию на южный мост чипсета и программировать все железо с нуля. Это самый низкий уровень «общения» с аппаратурой! Необычайно сложный, но в то же время захватывающе интересный! К счастью, серверный мост уже частично инициализирован, поэтому настраивать контроллер памяти не обязательно.
Теперь поговорим о методиках эмуляции и перехвата. Для вывода информации на экран BIOS использует свою собственную сервисную службу INT 10h. Она же используется на стадии первичной загрузки операционных систем семейства Windows и UNIX. Перехватив это прерывание, мы сможем грабить весь вывод на экран и передавать его на удаленный компьютер («грабить» – вполне легальный термин, позаимствованный у англоязычных инженеров, которые говорят в этом случае «grab», звучит грубовато, зато почестному).