【发布时间】:2021-03-04 23:44:27
【问题描述】:
在我们的 CI 中,我们使用 Jenkins,在 jenkinfile 中,我运行了一个 docker 映像,该映像创建了要闪存到 stm32 核板上的二进制文件。更准确地说,闪烁过程是在 docker 映像中的 CMakeLists.txt 文件中作为后期构建过程完成的。我知道 stm32 板在 docker 映像中可用,因为我使用 lsusb 对其进行了测试。但是 openOCD 出现的错误是:
错误:libusb_open() 使用 LIBUSB_ERROR_NO_DEVICE 失败
我还尝试从 Jenkinfile 调用相同的 openOCD 命令(所以在 docker 映像之外),它给了我错误:
libusb_open() 因 LIBUSB_ERROR_ACCESS 而失败
如果我在终端中使用该命令,它就可以工作。我认为这与 udev 和访问规则有关。但我不知道它们是如何使用或生成的。
问题:
- 为什么openOCD在docker镜像中找不到设备,即使它 调用 lsusb 时是否列出?
- 为什么 openOCD 在从 Jenkinsfile 即使在同一台机器上使用相同的命令 终端工作?
- 如果第二题的问题是缺少udev规则 openocd,我如何以脚本方式生成它们,以便它们 在码头工作?
非常感谢您提前提供的帮助。
【问题讨论】:
标签: docker jenkins stm32 openocd