Я пытаюсь портировать Driveboardapp с ядра 3.8 на ядро 4.14.
Driveboardapp - это приложение, написанное на python и предназначенное для работы на станке для лазерной резки лазером. Оно использует UART1, WiFi и GPIO.
Разработчики рекомендуют запускать приложение на черной доске beaglebone, используя образ на основе Ubuntu 14.04 LTS с ядром 3.8
С этим образом у меня возникают проблемы со стабильностью сети, и я обнаружил, что более свежий официальный образ beaglebone, основанный на Debian 9.5 с ядром 4.14, гораздо более надежен.
К сожалению, я не могу заставить функционал gpio работать, как и ожидалось, с этой новой ОС.
Это код Python для установки пинов gpio:
try:
fw = file("/sys/class/gpio/export", "w")
fw.write("%d" % (71))
fw.close()
except IOError:
# probably already exported
pass
# set the gpio pin to output
# echo out > /sys/class/gpio/gpio71/direction
fw = file("/sys/class/gpio/gpio71/direction", "w")
fw.write("out")
fw.close()
# set the gpio pin high
# echo 1 > /sys/class/gpio/gpio71/value
fw = file("/sys/class/gpio/gpio71/value", "w")
fw.write("1")
fw.flush()
fw.close()
Когда я запускаю приложение в debian9.5 иногда , оно разрывается с таким сообщением:
root@beaglebone:~/driveboardapp# python backend/app.py
Traceback (most recent call last):
File "backend/app.py", line 7, in <module>
import config
File "/root/driveboardapp/backend/config.py", line 194, in <module>
fw = file("/sys/class/gpio/gpio71/direction", "w")
IOError: [Errno 2] No such file or directory: '/sys/class/gpio/gpio71/direction'
Если я перезапущу приложение, оно может сломаться в той же точке или может успешно завершиться и в конечном итоге сломаться в следующей точке кода, использующего gpio.
До сих пор я пытался добавить небольшой спящий режим перед попыткой записи файла, но он все равно не удался.
Репо приложения Driveboard https://github.com/nortd/driveboardapp
Мои правки в коде до сих пор https://github.com/luky83/driveboardapp/blob/debian9.5/backend/config.py
Спасибо за любой совет.