Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Отладочные платы » SK-NUC976
Примеры программирования NUC976
VetalGerq
Добавлено 13.06.2024 17:10
0
Сообщение: 1
VetalGerq
0

Пункты: 603
Регистрация: 16.04.2024
Ранее никогда не занимался программированием микроконтроллеров или микропроцессоров. Не могу разобраться как управлять пинами или можно ли вывести отладочную информацию в UART или USB(разъем x5).
Как я понял команды можно найти в Technical Reference Manual. Но вот какие библиотеки или файлы подключить к проекту не понимаю.
Подскажите с чего начать или скиньте какой-нибудь пример примитивной программы.
Спуститься к концу Подняться к началу
Персональная информация
VetalGerq
Добавлено 17.06.2024 13:23 Сообщение: 2
VetalGerq
0

Пункты: 603
Регистрация: 16.04.2024
Немного перефразирую вопрос:
В buildroot есть много демо-проектов, в какой из них смотреть чтобы найти пример управления пинами или пример вывода в консоль?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 19.06.2024 01:47 Сообщение: 3
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Немного перефразирую вопрос:
В buildroot есть много демо-проектов, в какой из них смотреть чтобы найти пример управления пинами или пример вывода в консоль?

Цитата
Немного перефразирую вопрос:
В buildroot есть много демо-проектов, в какой из них смотреть чтобы найти пример управления пинами или пример вывода в консоль?

в свое время для qt-4.8 я использовал такую конструкцию:
Код
// заводим переменные
QString tempStr;
QString fileback="/sys/class/backlight/atmel-pwm-bl/brightness";
QFile fileout(fileback);
// пишем в файл значение 64
tempStr = QString::number(64);
fileout.open(QIODevice::ReadWrite);
QTextStream streamout(&fileout);
streamout << tempStr << endl;

вместо backlight/atmel-pwm-bl/brightness можно прописать свой путь, например для gpio45 это будет gpio/gpio45/value
я в qt профан, все вопросы решал через гугль..
ЗЫ не знаю как в современных версия QT, но раньше в дистрибутиве были отдельные каталоги с examples..
посмотрите например тут https://doc.qt.io/qt-5/qtexamples.html

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
VetalGerq
Добавлено 02.07.2024 10:53 Сообщение: 4
VetalGerq
0

Пункты: 603
Регистрация: 16.04.2024
Цитата

вместо backlight/atmel-pwm-bl/brightness можно прописать свой путь, например для gpio45 это будет gpio/gpio45/value


Вот этот момент по подробнее! Это получается, что управление платой производятся посредством файлов в системе?

Цитата

я в qt профан, все вопросы решал через гугль..
ЗЫ не знаю как в современных версия QT, но раньше в дистрибутиве были отдельные каталоги с examples.

посмотрите например тут https://doc.qt.io/qt-5/qtexamples.html


С Qt проблем не испытываю, главная проблема понимания программирования железа.

UDP сервер уже работает, задача сейчас разобраться как управлять пинами и вывести отладочную информацию(типа тех канал)
Спуститься к концу Подняться к началу
Персональная информация
VetalGerq
Добавлено 02.07.2024 11:37 Сообщение: 5
VetalGerq
0

Пункты: 603
Регистрация: 16.04.2024
В данный момент пытаюсь найти .h файл в котором описаны контакты платы
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 15.07.2024 01:03 Сообщение: 6
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
момент по подробнее! Это получается, что управление платой производятся посредством файлов в системе?

не всей платой а ресурсами доступными через /dev или sysfs
типовой вариант - назначаете нужный контакт как функцию gpio, тогда он отображается в системе и вот через его аттрибуты можно управлять из userspace (вашей софтины)
в зависимости от версии ядра пины и прочее настраиваются для ядер (версия +/-)
<=3.0 в файле платы (т.н. boardfile)
>3.0 видимо уже через dts
ресурсы gpio смотрите в
Код
ls -l /sys/class/gpio

там же можно посмотреть какие gpio какому банку принадлежат

ну и на всякий случай - следите за правами доступа, т.к. изначально весь контроль над аппаратурой принадлежит руту, а всякие софтины на QT от пользователя будут посланы..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
VetalGerq
Добавлено 17.07.2024 13:47 Редактировалось 17.07.2024 13:49 Сообщение: 7
VetalGerq
0

Пункты: 603
Регистрация: 16.04.2024
В файлах 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.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 21.07.2024 22:18 Сообщение: 8
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
разыскал в коробках плату с nuc976 от Павла, все там более заморочно
1. насколько я помню - функции gpio_set/get относятся к ядру и модулям и пользоваться ими из юзерспейса (QT etc) нельзя
2. каталог /sys/class/gpio пуст и у меня от слова совсем - видимо специфика китайской реализации gpio драйвера
3. если все же есть необходимость покрутить пинами (gpio) из своего софта, то проще перевести нужные контакты в класс leds - прописать в файле платы
тогда появятся файлы в sysfs с нужным функционалом, у меня так организован сигнал swoff - выключение питания
Код
root@nuc976solar:~# ls -l /sys/class/leds/
total 0
lrwxrwxrwx 1 root root 0 Jul 21 19:58 blue -> ../../devices/platform/leds-gpio/leds/blue
lrwxrwxrwx 1 root root 0 Jul 21 2024 green -> ../../devices/platform/leds-gpio/leds/green
lrwxrwxrwx 1 root root 0 Jul 21 19:57 red -> ../../devices/platform/leds-gpio/leds/red
lrwxrwxrwx 1 root root 0 Jul 21 19:57 swoff -> ../../devices/platform/leds-gpio/leds/swoff

и там
Код
root@nuc976solar:~# ls -l /sys/class/leds/swoff/
total 0
-rw-r--r-- 1 root root 4096 Jul 21 19:57 brightness
-rw-r--r-- 1 root root 4096 Jul 21 19:58 desired_brightness
lrwxrwxrwx 1 root root 0 Jul 21 19:58 device -> ../../../leds-gpio
-rw-r--r-- 1 root root 4096 Jul 21 19:58 gpio
-rw-r--r-- 1 root root 4096 Jul 21 19:58 inverted
-r--r--r-- 1 root root 4096 Jul 21 19:58 max_brightness
drwxr-xr-x 2 root root 0 Jul 21 19:58 power
lrwxrwxrwx 1 root root 0 Jul 21 19:58 subsystem -> ../../../../../class/leds
-rw-r--r-- 1 root root 4096 Jul 21 19:58 trigger
-rw-r--r-- 1 root root 4096 Jul 21 19:58 uevent

где зажечь/погасить можно записью (0, 1) в brightness

чтобы привязать электрический контакт к логическому в ядре используем формулу
32xZ+P
где Z={банк A=0, B=1, etc), а P номер gpio
примеры где я использовал контакты с разъема Х3 электросхемы nuc976
Код
led1 PG11 32x6+11=203
led2 PG13 32x6+13=205
led3 PG14 32x6+14=206
led4 PD7 32x3+7=103
swoff PI14 32x7+14=238

где swoff это контакт 5 разъема Х3

итого план:
- выбираете gpio
- прописываете в ядре, пересобираете ядро, грузитесь
- мультиметром/осциллографом проверяете правильность работы через echo 1 > /sys/class/leds/my-leds/brightness
- если через echo успешно управляется, то и в QT тоже все заработает

Цитата
И можно ли самому создавать проект? При попытке запуска своего проекта выдаёт: Cannot run: No command given.

вот тут не подскажу, может библиотеки QT не скопировали на плату, может пути не прописали или еще чего упустили

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-NUC976