【发布时间】:2012-08-04 17:50:17
【问题描述】:
我正在开发一个原始的 x86 实模式 USB 访问项目。这涉及自定义引导扇区、第二阶段引导加载程序和一些琐碎的硬件驱动程序。
最终目标是提供一个可以开机、通过USB接口发送数据、通过USB接口接收数据、并将结果值打印到屏幕的产品。除了 USB 访问之外,我已经完成了一切。
我已经发现 BIOS 不提供对板载 USB 的访问。从 osdevver 到breakthorn,我已经浏览了几十个站点。我什至看过 USB 2.0 规范。
没有人提供任何有关在 x86 实模式下使用 x86 程序集直接访问 USB 根集线器的相关或有用信息,而无需通过某些预先存在的操作系统。
是否没有为 USB 根集线器设置标准 IN/OUT 端口?如果有,具体说明标准通信的文档在哪里,允许软件告诉集线器要发送什么数据以及将数据发送到哪个连接的设备?
【问题讨论】:
-
x86 实模式,...不支持操作系统?这可能意味着与您的芯片组的 PCI 控制器接口,使用 PCI 控制器来检测、(重新)初始化您的芯片组的 USB 控制器。然后是设置内存映射和 IRQ 处理的麻烦(你可能没有足够的空间在实模式下访问 1MB 和 8 个 IRV 中执行)。我可能在这里有一些细节错误,但你几乎肯定不想这样做。而是构建在像 ecos.sourceware.org 这样的小型嵌入式操作系统之上。
-
那么 USB Root Hub 会从属于 PCI 控制器吗?
-
这是一部不合时宜的恐龙和人类电影。 USB 出现在保护模式操作系统成为主流之后很久。必然如此,您永远不能将所需的设备驱动程序塞进实模式操作系统中可用的地址空间中。
-
如果可以的话,我会将 Managu 的第一条评论标记为答案。