Особенности программирования ISA/PCI ROM модулей

Тема в разделе "WASM.RESEARCH", создана пользователем sarin, 29 май 2008.

  1. sarin

    sarin Member

    Публикаций:
    0
    Регистрация:
    2 июн 2005
    Сообщения:
    30
    Собственно, сабж:

    Рассматривается как пример вариант (P)SATA или LAN BOOTROM, широко применяемые в внешних PCI/PCIe (P)SATA-контроллерах и сетевых картах. EFI - не интересно.
    Замутить планируется 16k/32k/64k ROM на M$ платформе (НЕ Linux/BSD).

    1) Чем пользоваться - C? ASM?
    2) Какой компилятор подходит для 16-bit и/или 32-bit кода?
    2) Как пользоваться стеком, переменными, где их размещать (ROM ведь read-only) ?
    3) Есть ли какие то особенности?
    4) Где почитать?

    Пока нашел только это, но полного понимания вопроса пока не сложилось:

    1) http://www.geocities.com/mamanzip/articles.html
    2) http://rayer.ic.cz/romos/romose.htm
    3) http://www.rom-o-matic.net/ + http://sourceforge.net/projects/etherboot/ + http://netboot.sourceforge.net/
    4) http://www.fitzenreiter.de/ata/ata_eng.htm
    5) http://www.bootix.com/download/download_en.html
     
  2. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Не на все сетевых карты имеется ROM.
    Для встроенных железок используется системный BIOS.

    Платформа выбранна не верно. Нужна x86, а к ОС отношение не имеет.
    Биос инициализуется при старте процессора и он находиться в реальном режиме 16бит. У него есть функция переключения в 32 бита.

    ROM это read-only memory. Но в современном железе используется Flash(EEPROM-Electrically Erasable Programmable Read-Only Memory). Число циклов перезаписи состовляет 1 000. Читать можно сколько хочешь.
    Теперь что касается загрузки первые 640кб(минус системные лучши еще проверить сколько доступно) в твоем распоряжении.

    Помимо прочего советую по изучать момент загрузки. Если биос устройства не помищается в 64kb то он может быть временно загружен в базовую память.

    ASM любой MASM 6.хх(следующее версии только под виндоус компилируют) ,TASM, FASM, NASM и тд.
    С - Watcom C или GNU C
    Выбирать советую то что лучше всего знаешь.

    Спецификаци PnP, PCI, а также разные спецификации про BIOS на сайте phonex.


    А что замутить планируешь?
     
  3. Ra_

    Ra_ New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2007
    Сообщения:
    289
  4. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Ra_
    нашёл оригинальный способ набивания постов? почти в каждой теме такой пост.
     
  5. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    В новых UEFI биосах можно писать драйверы на C/C++.
     
  6. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    reverser
    На си можно было писать и раньше, еще до появления UEFI.
     
  7. sarin

    sarin Member

    Публикаций:
    0
    Регистрация:
    2 июн 2005
    Сообщения:
    30
    Хорошо. Тогда еще пара вопросов.

    1) Какой из 16-битных компиляторов оптимизирует код "на приличном уровне"?

    2) Есть ли GNU-тый С/C++ для 16 bit?