【问题标题】:Can libusb be ported onto a microcontroller?libusb 可以移植到微控制器上吗?
【发布时间】:2014-03-03 08:27:06
【问题描述】:

我期待在 USB 设备上实现一些文件操作,该设备将插入基于微控制器的台式设备。该设备没有任何 OS/RTOS,仅在我计划开发的固件代码上运行。 固件将具有嵌入式设备通常具有的所有必要功能(UART、定时器、SPI、I2C、外部存储控制器等)。

我的问题是:

  1. 能否将 libusb 库整合到我计划开发的固件中?
  2. libusb 是否可以在基于非操作系统的环境中工作?还是我必须选择一个可以移植到微控制器上的操作系统,然后在用户空间中使用 libusb 库?

【问题讨论】:

  • 最好问一个开放的“我该如何解决这个问题?” 的问题,而不是想你自己的解决方案然后问“我该怎么做这个解决方案有效吗?”。您可能应该问的问题是“我如何在 xxxx 微控制器上支持 USB 文件系统设备”。 usblib 可能不合适,因为您的系统无法使用依赖项(例如 POSIX API 和驱动程序模型),但如果您对所使用的微控制器不那么谨慎,您会得到更好更有用的答案。
  • @Clifford - 提出的实际问题不是如何做,而是一个简单的问题
  • 是的,只要有足够的内存,即使没有操作系统也可以做到这一点。然而,更有趣的问题是它是否是您问题的正确解决方案,即使您的目标是台式 PC。您提到“文件操作”,这通常不是人们想要对 libusb 做的事情,而是使用大容量存储和文件系统驱动程序。许多带有 USB 主机或 OTG 端口的嵌入式芯片已经具有用于安装和访问 USB 大容量存储“棒”的示例代码。
  • “不”有一个深思熟虑的理由,可以节省人们数周的时间来解决问题并逐渐发现更有经验的工程师已经知道的障碍。
  • @WedaPashi :那么我建议,除非您打算嵌入 Linux,否则您将使用 USB“裸机”支持作为选择标准的一部分。即使您使用的是 RTOS 内核,大多数都不需要设备模型,因此需要集成裸机解决方案。例如 STM32 有 USB on-the-go Host and device library (UM1021),我已经成功地使用了裸机以及 Keil RTX、FreeRTOS 和 Segger embOS。

标签: embedded microcontroller libusb libusb-1.0


【解决方案1】:

libusb 目前仅支持 Linux、OS X、Windows、Windows CE、Android 和 OpenBSD/NetBSD。所以是的,它确实需要一个底层操作系统。除非您的微控制器是可以运行 Linux 的 ARM,否则如果不将低级代码移植到微控制器硬件并使其在没有操作系统的情况下运行,就不可能运行 libusb,这将是大量工作。

如果您有一个具有 USB 功能的微控制器,那么制造商很可能已经有一个库来访问 USB 功能,并且/或者有可用的第三方库。

【讨论】:

  • 好的。感谢您的信息。再问一个问题:你说它只支持Linux、Windows等少数几个操作系统平台,它支持任何RTOS吗?因为我很少看到我们使用 RTOS 和 USB 驱动程序的场景。
  • 操作系统列表来自here,这与我在 libusb 中看到的其他文档一致。我还没有看到 libusb 支持任何嵌入式 RTOS。
  • 我使用了集成了 VCP 类的 FreeRTOS。那是采用 ST USB 代码并使用它。正如 tc 所说,制造商为其处理器提供 USB 代码。如果没有几个可以使用 USB 的 FreeRTOS 实现,我会感到惊讶。
  • 这在其结论中并不是特别准确 - 考虑到有效地移植它可能就像将任何原生 API 包装在 libusb 样式中一样简单。给定的应用程序可能只使用 libusb API 的 子集。不,特别需要一个操作系统 - 异步部分(如果需要)可能会被 USB 中断触发。
猜你喜欢
  • 2013-07-07
  • 1970-01-01
  • 2013-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
相关资源
最近更新 更多