Тесты libgpiod не работают на pcduino3 nano
Итак, я установил archlinux arm на свой pcduino3 nano, но обнаружил, что имею дело с новой версией ядра Linux, которая обеспечивает новый способ взаимодействия с gpios.
Доступного пакета нет, поэтому я скачал libgpiod и скомпилировал его, но мне не удалось запустить в нем gpiod-test.
[root@alarm tests]# ./gpiod-test
# random seed: R02S4d1e0dec9c5f919815bc9b266db3af00
# gpiod-test-DEBUG: running libgpiod test suite
# gpiod-test-DEBUG: 92 tests registered
Bail out! gpiod-test-FATAL-ERROR: unable to initialize gpio-mockup library: No such file or directory
(/home/alarm/git/libgpiod-1.6.3/tests/.libs/lt-gpiod-test:24257): gpiod-test-ERROR **: 11:51:36.869: unable to initialize gpio-mockup library: No such file or directory
Trace/breakpoint trap (core dumped)
[root@alarm tests]# uname -a
Linux alarm 5.16.2-2-ARCH #1 SMP PREEMPT Sat Jan 22 03:08:40 UTC 2022 armv7l GNU/Linux
То же самое произошло, когда я попытался запустить версию CPP.
Вывод ошибки немного длинный, поэтому я опубликовал только последнюю часть.
-------------------------------------------------------------------------------
Line objects can be compared
-------------------------------------------------------------------------------
tests-line.cpp:552
...............................................................................
tests-line.cpp:552: FAILED:
due to unexpected exception with message:
unable to create the gpio-mockup context: No such file or directory
===============================================================================
test cases: 33 | 4 passed | 29 failed
assertions: 36 | 7 passed | 29 failed
Кроме того, я не могу запустить gpioset
[root@alarm tests]# gpioset gpiochip0 231=0
gpioset: error setting the GPIO line values: Invalid argument
Другие инструменты, такие как gpioinfo, работают хорошо.
gpiochip0 - 288 lines:
line 0: unnamed unused input active-high
---
line 287: unnamed unused input active-high
И каждый раз, когда я хочу использовать set_direction_input() или любую другую подобную функцию в gpiod.hpp
terminate called after throwing an instance of 'std::system_error'
what(): error setting GPIO line direction to output: Operation not permitted