В нашем CI мы используем Jenkins. В jenkinfile я запускаю образ докера, который создает двоичные файлы для прошивки на нуклео-плате stm32. Чтобы быть более точным, процесс прошивки выполняется как процесс пост-сборки в файле CMakeLists.txt в образе докера. Я знаю, что плата stm32 доступна в образе докера, поскольку я тестировал ее с помощью lsusb. Но ошибка openOCD:
Ошибка: ошибка libusb_open () с LIBUSB_ERROR_NO_DEVICE
Я также попытался вызвать ту же команду openOCD из Jenkinfile (то есть за пределами изображения докера), и там она выдает мне ошибку:
libusb_open () не удалось с LIBUSB_ERROR_ACCESS
Если я использую команду в терминале, она работает. Я думаю, это как-то связано с udev и правилами доступа. Но я понятия не имею, как они используются или создаются.
Вопросов:
- Почему openOCD не обнаруживает устройство в образе докера, даже если оно указано при вызове lsusb?
- Почему openOCD не может получить доступ к устройству при вызове из файла Jenkins, даже если на том же компьютере работает та же команда в терминале?
- Если проблема второго вопроса заключается в отсутствии правил udev для openocd, как я могу сгенерировать их по сценарию, чтобы они работали в докере?
Заранее большое спасибо за вашу помощь.