【发布时间】:2020-01-24 22:44:39
【问题描述】:
我有一个基于 Intel 的主机系统,带有我公司设计的 PCIe 子卡。我们能够枚举它以允许与英特尔处理器共享内存。我正在寻找可通过 PCIe 访问的子卡内存空间,以被 BIOS/UEFI 识别为可引导。
我可以选择实现众多 HCI 标准之一,但这似乎会很慢,因为这个子卡是由处理器驱动的,而且 HCI 必须在软件中实现。一个更具体的问题是,在枚举子卡后是否存在 BIOS/UEFI 可以识别的已知可引导内存格式?谷歌搜索对我和这些标准并没有取得太大的成功,而且在启动过程中 bios 或 UEFI 如何符合上述标准似乎是部落知识,很难发现。
其他细节:
- 我想在主机 CPU 上启动 Linux 或 Vxworks。
- 两个图像都驻留在子卡上的非易失性存储器中。
- 子卡处理器负责通过 PCIe 将共享内存中的图像呈现给主机 CPU。
- 就主机 CPU 所知,您几乎可以将子卡视为 NVMe 或 SATA SSD 扩展卡,但子卡负责的功能不仅仅是启动主机 CPU,这就是这些类型的设备的原因不适用于我的应用程序。
【问题讨论】:
-
您的意思是您希望主机 CPU 从该内存空间运行指令吗?如果该卡有自己的可启动 CPU,您不能让它在开机时自行启动吗? (对不起,如果这是废话,我不开发卡或编写 PCIe 驱动程序。我认为“可引导”在这种情况下具有一些我不知道的特定技术含义。)
-
@peter 我实际上想在主机 CPU 上启动 Linux,但 Linux 映像存储在子卡的内存中。我将更新我的笔记以澄清。
-
也许您可以公开某种简单的存储设备,其中包含一个存根引导加载程序,该引导加载程序跳转到您要执行的 PCIe 内存。然后它将显示在 BIOS 的设备启动菜单列表中,允许您的卡的用户配置他们的 BIOS 以从它启动或不启动。例如也许是一个带有 USB 大容量存储的 USB 控制器?还是软盘控制器?或者也许将存根引导加载程序放在标准引导 ROM 中,该 ROM 会跳转到 PCIe 读/写内存中的正确地址?
标签: x86 embedded bios pci-e uefi