![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 03.07.2008
Сообщений: 3
|
![]()
Здравствуйте уважаемые господа. Я на этом форуме новичок поэтому заранее прошу извинить если вопрос не по адресу. Я не профессиональный программист а так любитель. Обладаю разрозненными знаниями. Мой вопрос состоит в следующем: Возможно ли написать на языке Assembler процедуры, которые должны быть записаны в модуль расширения ПЗУ? Можно создать на ассемблере com и exe файлы это я знаю. Но как действовать дальше. Модуль BIOS начинается со специальной двухбайтной сигнатуры и имеет специальное строение. Как обеспечить переход от com файла с образу для прошивки ПЗУ? Это только одна из главных под задач. Мне это нужно для создания на базе старых пк программных автоматов. Можно конечно использовать современные контроллеры, да недостаточно времени для изучения архитектур и систем команд контроллеров, а старые добрые ПК все знают как облупленных. Для старых ПК делаю самоделки для шин расширения ISA. В пределе хочу избавиться от всех стандартных карт расширения (особенно от видео карты, которая портит всю кровь), так как мне собственно нужен только процессор, оперативка, стандартные интерфейсы для передачи данных и последующей обработки на более мощных ПК, ну и набор процедурок управления целевыми устройствами (ЦАП, АЦП и т.д.) в ПЗУ. Вторая проблема - не знаю точек входа в процедуры ПЗУ. Где найти как узнать тоже не знаю. Общая последовательность загрузки POST всем хорошо известна, часть адресов ПЗУ тоже доступна в документации. Но куда встраиваться в ПЗУ (по какому адресу добавить свою прошитую микросхему) чтобы избежать остановки POST из-за отсутствия например видео карты я незнаю. Вообщем основная идея это трансформация "страя материнка" - > "программный автомат" Буду благодарен за любую информацию.
|
![]() |
![]() |
![]() |
#2 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Цитата:
Тебе нужна литература о программаторах и о том что пишут. А вообще - конечно можно, яркий пример этому AVR Studio
I'm learning to live...
|
||
![]() |
![]() |
![]() |
#3 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
FASM может выдать бинарный файл любой структуры
Вот например rar "в машинных кодах" ![]() Код:
Другое дело, что дизассемблировать BIOS ROM тяжело, но загрузившись в IDA можно подправить пару-тройку нужных байт ![]()
пыщь
|
![]() |
![]() |
![]() |
#4 |
Регистрация: 03.07.2008
Сообщений: 3
|
![]()
Спасибо за отклики. К сожалению директивы use16/use32 я использовать не могу. Поскольку разрядность микросхем равна 8. Разделять на два банка ПЗУ не хочется для 16 разрядного доступа т.к. легко запутаться при программировании. Да и аппаратно больше корпусов микросхем. Кроме того адресация должна быть абсолютной, а код не содержать сложной косвенной адресации. Константы надо тоже хранить прямо в коде. Форматы com и exe, насколько я помню, предполагают перемещение кода в оперативке, для чего кажется используется префикс программного сегмента (табличка в начале файла), что позволяет дисковой операционной системе настраивать сегментные регистры процессора при загрузке программы в ОЗУ. С ROM так не получится. Операционной системы нет. Микросхема это собственно и есть управляющая программа - монитор. Микросхема может быть установлена только на границе параграфа и только в области адресов BIOS иначе POST её не обнаружит. Вот только я как раз и не знаю абсолютного адреса для встраивания в код BIOS так чтобы сохранилась возможность нормального функционирования системы, чтобы была доступна таблица векторов прерываний BIOS ведь там необходимые функции для работы с часами, последовательным портом и т.д. Конечно дисковые функции не нужны, видео функции не нужны, клавиатура нужна только как дискретные датчики. Так как получить двоичный образ для прошивки? Как исключить из кода com эту табличку? Какие использовать ключи компиляции для FASM чтобы сгенерировать такой код. Кроме того я знаю что POST сканирует определенные адреса в поиске ROM карт расширений. Но вот беда без видео карты я вообще до этого места не доберусь т.к. без видео карты система выходит в останов. В BIOS есть опция где выбирается режим работы видео карты, там есть опция "отсутствует". При установке этой опции система все равно останавливается.
|
![]() |
![]() |
![]() |
#5 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
"FORMAT binary" сделает просто бинарный файл, а не com, PSP у него нет, т.е. именно то что нужно - просто "сырой" код, компилируется и линкуется без всяких ключей.
Советую почитать Мыщъх`а http://www.insidepro.com/kk/046/046r.shtml
пыщь
|
![]() |
![]() |
![]() |
#6 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]()
biff, а зачем Вам именно курочить BIOS, не говоря уже о том, что сколько на свете разных материнок, столько и разных BIOS'ов и это может превратиться в неподъёмную задачу, а не поставить просто плату расширения (Вы же так и так их будете ставить) и реализовать на ней всё необходимое? И даже вопрос загрузки с неё по идее можно решить "прикинувшись" "сетевой платой" с бутромом.... Да и без видеоадаптеров машины прекрасно работают, если выключить останов по ошибкам...
|
![]() |
![]() |
![]() |
#7 |
Регистрация: 03.07.2008
Сообщений: 3
|
![]()
Огромное спасибо за ссылку. Отличная статья. Спасибо за замечание по поводу двоичных файлов. До этого при помощи ассемблера я составлял программки только формата com и exe, ну ещё делал ассемблерные вставки в программы на Delphi для карт расширений. Когда готовил прошивки ПЗУ (например для дешифраторов адреса) то просто готовил шестнадцатиричный код вручную по старинке как во времена "спектрумов". Вот у меня и есть пробел между низкоуровневым программированием и железяками. По поводу вообще зачем всё это. С одной стороны я радиолюбитель. С другой балуюсь программированием. Поскольку, как сделать микропроцессорную самоделку не программируя? Я использую старые материнки старых моделей ПК. Где стоит BIOS на микросхемах с ультрафиолетовым стиранием. Ломать сам BIOS я не собираюсь так как без него материнка просто не рабочая железяка. Я пытаюсь использовать вобщем-то стандартные средства, которые заявлены производителями - это возможность создания специализированных микропроцессорных систем на базе ПК. Просто почему-то вся информация об этом умещается на паре печатных листов. И где побольше узнать о этой возможности я не знаю. Насколько я понял из литературы которую нашел, есть возможность просто добавить свою прошитую микросхему расположенную на карте расширения в слот ISA (для PCI не умею делать очень сложно) и этот модуль получит управление от POST ну а дальше дело техники. В такой переделке самая бесполезная вещь это видео карта, так как ни какой полезной работы не выполняет а наоборот тормозит систему циклами пересылки видео данных. И бесполезно торчит на плате. Я проводил эксперименты с разными типами видео карт при работе со своими картами расширения в итоге обнаружил что для нормальной работы АЦП на самодельной карте расширения нужно заново подбирать время тайм аутов при замене видео карты. Здоро бы было вообще её исключить. Но как я понял инициализация видео карты происходит раньше, когда еще нет таблицы прерываний BIOS, а в этом случае нормальная работа системы еще не возможна. Вот если я расположу свою микросхему ПЗУ по адресам ПЗУ видео карты с простейшим кодом возврата, то что будет с системой? Для экспериментов у меня штук 10 всяких материнок. От 8088 до P2. Может это конечно и глупо, поскольку есть масса современных контролеров. Везде масса рекламы подталкивающей к использованию контроллеров. Понятно это бизнес. К творчеству это имеет отдаленное отношение. Цены технологии: программатор 10 000 руб. сам контроллер около 3000 руб. То есть технология по курсу евро. Я беру ПЗУ с УФ стиранием со старой материнки или отечественную РФ2 или РФ5. Делаю на 5 - 6 корпусах простейший программатор, подключаемый к LPT порту и всё. ценник 200 руб а то и даром. Карта расширения тоже не чень сложная. Питание материнки требуется минимальное - обычный трансформаторный БП 60 - 80 Вт (если нет дисководов). Сложности только с каналом питания +5 вольт так как стандартной "кренки" для стабилизации не хватает. Софта разработано на все случаи жизни от простейших частотомеров до сложнейших спектрографов. Вот и думаю что же не попользоваться хорошо сделанными готовыми заготовками. Спасибо за интересную дискурсию.
|
![]() |
![]() |
![]() |
#8 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
Респект =) Как чего-то напаяешь - выкладывай фотки где-нибудь в раздел "Железо"
![]()
пыщь
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как к BIOS обращаться. Нужно чтение/запись BIOS. | Dethon_ASM_Scarel | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 7 | 26.10.2011 11:40 |
написать модуль в Делфи для построения графика | Анютик | Общие вопросы Delphi | 2 | 26.03.2008 03:04 |
Написать программы на языке программирования С++ или Pasckal: | НиколаМГВРК | Помощь студентам | 3 | 01.02.2008 16:19 |
Изучение формата написания программы на языке Assembler и ее отладки в симуляторе Av | Anna_fors | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 6 | 21.08.2007 14:52 |