Я ищу либо вызов режима ядра, который я могу сделать из драйвера, утилиты пользовательского пространства, либо системный вызов, который попросит ядро посмотреть на шину PCI и либо полностью повторно запустить его инициализацию, либо инициализировать конкретное устройство. В частности, мне нужно, чтобы ядро распознало устройство, которое было добавлено в шину после загрузки, а затем сконфигурировало его адресное пространство, прерывание и другие параметры конфигурации, и, наконец, включило устройство, чтобы я мог загрузить драйвер для него (если только это не все происходит как часть загрузки драйвера).
Я застрял на ядре серии 2.4.x для этого и сейчас работаю с 2.4.20, но перейду на 2.4.37, если это будет важно. Дистрибутив - это урезанный Red Hat 7.3, работающий на оперативном диске, но я могу добавить любые инструменты, необходимые для его работы (при условии, что они хорошо работают с серией 2.4).
Если бы некоторая справка помогла уточнить, что я пытаюсь сделать: при холодной загрузке, однажды в Linux, я использую GPIO для программирования FPGA. Часть FPGA, однажды запрограммированная, реализует простое устройство PCI. В настоящее время, после программирования FPGA, я перезагружаю систему, и после распознавания Linux распознает устройство и загружает драйвер для него.
Вместо необходимости перезагрузки , я хотел бы просто попросить ядро сделать все, что он делает во время загрузки, чтобы найти устройства PCI (у меня есть Ядро, настроенное для поиска устройств PCI самостоятельно, вместо того, чтобы запрашивать у BIOS эту информацию, поэтому BIOS не нужно будет знать об этом устройстве (надеюсь)).
Я считаю, что Linux способен видеть устройство после того, как оно запрограммировано, но до перезагрузки, потому что scanpci
покажет устройство после того, как я запрограммирую его, как и lspci -H 1
. Мне просто нужен способ вставить его в /proc/pci
, настроить и включить.