Карта имплементирует XROMBAR с нужным размером BIOS. По RST ставит бит, если хочет, чтобы BIOS запускался. Сбрасывает - BIOS матери после вычитки содержимого.
Цитата:
И как после включения этого бита содержимое ROM появляется в памяти на отображаемом пространстве?
Как сделаете, так и появится. XROMBAR - это грубо говоря "особенный" MEMBAR. Т.е. карта обязана декодировать обращения к памяти от XROMBAR до XROMBAR+заявленный size и отдавать данные (т.е. код Addon BIOSа), пока стоит бит 0.
BIOS матери глянет, проверит сигнатуру, VID/DID, CRC, выкинет в ОЗУ компа, замапит на C0000-F0000 и отдаст управление на точку входа. Код инициализации может после выполнения объявить, что размер run-time кода у него нулевой или меньше, чем заявлено в ROMBAR.
Цитата:
не инициализирующий код, копируемый в память, а содержимое на отображаемом пространстве)
А вот это я не понимаю. У Вас есть MEMBAR. Что там есть - так что выдадите картой, то и есть.
Приведу конкретный пример моего любимого девайса)
Есть PCI-плата. На ней FPGA, отвечающая за интерфейс PCI. Имплементируеся IOBAR, MEMBAR (или 2 MEMBAR для PCIe) и ROMBAR. В FPGA унутре есть память aka ОЗУ на 2K, декодер работает так - при активном бит 0, обращения к ROMBAR уходят на это ОЗУ. При неактивном - обращения к одному из MEMBAR уходят на это ОЗУ.
В этом ОЗУ по RST появляется код BIOS. Неважно откуда - из прошивки FPGA, с SPI-флешки, которую умеет читать FPGA, заливается микропроцессором с платы (тогда память двухпортовая). Все, оно работает.
Цитата:
Я имею ввиду, как используется возможность перепрограммирования ROM (чаще всего в спецификациях на микросхемы flash-rom через посылку определённых команд по смещению 555h на отображаемой области в памяти)?
Или даже просто нужно, чтобы весь ROM отображался в память ( а это порой объём до 1Мб).
Ничего не понял. Какого ROM, куда отображается память, при чем здесь BIOS?
Карта имплементирует XROMBAR с нужным размером BIOS. По RST ставит бит, если хочет, чтобы BIOS запускался. Сбрасывает - BIOS матери после вычитки содержимого.
Как сделаете, так и появится. XROMBAR - это грубо говоря "особенный" MEMBAR. Т.е. карта обязана декодировать обращения к памяти от XROMBAR до XROMBAR+заявленный size и отдавать данные (т.е. код Addon BIOSа), пока стоит бит 0.
BIOS матери глянет, проверит сигнатуру, VID/DID, CRC, выкинет в ОЗУ компа, замапит на C0000-F0000 и отдаст управление на точку входа. Код инициализации может после выполнения объявить, что размер run-time кода у него нулевой или меньше, чем заявлено в ROMBAR.
А вот это я не понимаю. У Вас есть MEMBAR. Что там есть - так что выдадите картой, то и есть.
Приведу конкретный пример моего любимого девайса)
Есть PCI-плата. На ней FPGA, отвечающая за интерфейс PCI. Имплементируеся IOBAR, MEMBAR (или 2 MEMBAR для PCIe) и ROMBAR. В FPGA унутре есть память aka ОЗУ на 2K, декодер работает так - при активном бит 0, обращения к ROMBAR уходят на это ОЗУ. При неактивном - обращения к одному из MEMBAR уходят на это ОЗУ.
В этом ОЗУ по RST появляется код BIOS. Неважно откуда - из прошивки FPGA, с SPI-флешки, которую умеет читать FPGA, заливается микропроцессором с платы (тогда память двухпортовая). Все, оно работает.
Ничего не понял. Какого ROM, куда отображается память, при чем здесь BIOS?