Вендор по проекту сделал для нас карточку PCI. Ничего особенного, shared memory, base address registers, network interfaces. Всё как обычно. Но поставка карточки (физически девайса) отложилась на неопределенный срок.
Драйвер (модуль ядра) и библиотеку для host application я уже написал. Но поскольку реальной железки нету, не могу полноценно всё протестить.
Т.е. work flow из host application (library) у меня такой:
(драйвер уже загружен)
1) инициализация устройства (там подготовка буферов, портов и т.д.)
2) запись в буфер (или регистры) через DMA
(на карточке что-то там прочиталось, она там что-то поделала, выставила user-defined interrupt)
3) ожидаю прерывания
4) дождался, прочитал данные (или из порта, или из буфера, или из регистров)
Вопрос: как сэмулировать PCI устройство? Ну т.е. что-то, что бы мне ответило. Поскольку в PCI Subsystem каждое устройство имеет свои таблицы идентификации: VendorID, DeviceID и прочий шлак.
P.S. Или всё таки отложить, и ждать вендора? (Тут вся фигня еще в том, что PM как бэ намекнул, что еще и вендор может смениться, и будет другая железка.)
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
МД>P.S. Или всё таки отложить, и ждать вендора? (Тут вся фигня еще в том, что PM как бэ намекнул, что еще и вендор может смениться, и будет другая железка.)
Здравствуйте, Мёртвый Даун, Вы писали:
МД>Вопрос: как сэмулировать PCI устройство? Ну т.е. что-то, что бы мне ответило. Поскольку в PCI Subsystem каждое устройство имеет свои таблицы идентификации: VendorID, DeviceID и прочий шлак. МД>P.S. Или всё таки отложить, и ждать вендора? (Тут вся фигня еще в том, что PM как бэ намекнул, что еще и вендор может смениться, и будет другая железка.)
Ну ценность такого теста сомнительна, потому что ты будешь тестить что-то не совсем то, что будет на самом деле. Если б меня настолько прижало, я б девайс сэмулировал в QEMU, там примеров не так чтоб очень много, но есть — Intel E1000, XHCI, и еще пригоршня, но это, скорее, потому, что я больше ни черта не знаю.
Здравствуйте, Мёртвый Даун, Вы писали:
МД>Вопрос: как сэмулировать PCI устройство? Ну т.е. что-то, что бы мне ответило.
МД>P.S. Или всё таки отложить, и ждать вендора?
С готовым устройством не знаешь как разобраться, когда каждая новая версия прошивки меняется, а тут ещё вендор другой.
МД>Тут вся фигня еще в том, что PM как бэ намекнул, что еще и вендор может смениться, и будет другая железка.
А зачем он намекнул? Программист всё равно ничего сделать дальше не сможет. А если это говноконтора, то ему ещё поставят в вину, что он ничего не делал. Как говорится, намекай, не намекай, всё равно получишь гуй.
Да, aik предложил правильное решение. Есть хорошая статья как сделать PCI устройства для QEMU — http://tic-le-polard.blogspot.ru/2015/01/emulate-pci-device-with-qemu.html
Но Ваш конкретный случай — это все таки Ваш случай. Возможно вопрос лежит в административно-управленческой области, а не в технической.