Ранее никогда не занимался программированием микроконтроллеров или микропроцессоров. Не могу разобраться как управлять пинами или можно ли вывести отладочную информацию в UART или USB(разъем x5).
Как я понял команды можно найти в Technical Reference Manual. Но вот какие библиотеки или файлы подключить к проекту не понимаю.
Подскажите с чего начать или скиньте какой-нибудь пример примитивной программы.
Немного перефразирую вопрос:
В buildroot есть много демо-проектов, в какой из них смотреть чтобы найти пример управления пинами или пример вывода в консоль?
в свое время для qt-4.8 я использовал такую конструкцию:
вместо backlight/atmel-pwm-bl/brightness можно прописать свой путь, например для gpio45 это будет gpio/gpio45/value
я в qt профан, все вопросы решал через гугль..
ЗЫ не знаю как в современных версия QT, но раньше в дистрибутиве были отдельные каталоги с examples..
посмотрите например тут https://doc.qt.io/qt-5/qtexamples.html
не всей платой а ресурсами доступными через /dev или sysfs
типовой вариант - назначаете нужный контакт как функцию gpio, тогда он отображается в системе и вот через его аттрибуты можно управлять из userspace (вашей софтины)
в зависимости от версии ядра пины и прочее настраиваются для ядер (версия +/-)
<=3.0 в файле платы (т.н. boardfile)
>3.0 видимо уже через dts
ресурсы gpio смотрите в
там же можно посмотреть какие gpio какому банку принадлежат
ну и на всякий случай - следите за правами доступа, т.к. изначально весь контроль над аппаратурой принадлежит руту, а всякие софтины на QT от пользователя будут посланы..
В файлах qt на Linux нашёл nuc970-gpio.h и .c(путь: builroot/output/build/uboot-custom/drivers) , но в них имеются зависимости которые отсутствуют по указанной директории.
На самом деле там куча вариантов этих файлов, там и #define всех контактов прописаны и есть описания функций gpio_set/get, но проблема в том что не могу найти какие нужны конкретно. Я указывал следующий путь:builroot/output/build/uboot-custom/include, т.к. всё файлы которые подключаются в gpio.c есть в этой директории. Но проблема в том что там используются функции, которые не определены. Откуда вывод, что я подключаю не те файлы.
По вашему примеру нашёл следующие файлы на плате: gpio170, gpio291 и gpiochip0, но они пусты. :(
Может есть пример кода, хотя бы не большой(я просто профан в конкретно этих моментах). Может по примеру получится что-нибудь понять.
Дефолтно в affine подключается путь: builroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include. Но в ней нет ничего связанного с gpio.
И можно ли самому создавать проект? При попытке запуска своего проекта выдаёт: Cannot run: No command given.
разыскал в коробках плату с nuc976 от Павла, все там более заморочно
1. насколько я помню - функции gpio_set/get относятся к ядру и модулям и пользоваться ими из юзерспейса (QT etc) нельзя
2. каталог /sys/class/gpio пуст и у меня от слова совсем - видимо специфика китайской реализации gpio драйвера
3. если все же есть необходимость покрутить пинами (gpio) из своего софта, то проще перевести нужные контакты в класс leds - прописать в файле платы
тогда появятся файлы в sysfs с нужным функционалом, у меня так организован сигнал swoff - выключение питания
и там
где зажечь/погасить можно записью (0, 1) в brightness
чтобы привязать электрический контакт к логическому в ядре используем формулу
32xZ+P
где Z={банк A=0, B=1, etc), а P номер gpio
примеры где я использовал контакты с разъема Х3 электросхемы nuc976
где swoff это контакт 5 разъема Х3
итого план:
- выбираете gpio
- прописываете в ядре, пересобираете ядро, грузитесь
- мультиметром/осциллографом проверяете правильность работы через echo 1 > /sys/class/leds/my-leds/brightness
- если через echo успешно управляется, то и в QT тоже все заработает
вот тут не подскажу, может библиотеки QT не скопировали на плату, может пути не прописали или еще чего упустили