Перейти к основному содержимому

8 записей с тегом "overlay"

Посмотреть все теги

Overlay для RS485 на UART1 с GPIO управлением направления

· 1 мин. чтения
dmn
maintainer

Оверлей для RS485 на UART1

Оверлей для RS485 на UART1 (Napi-C) c контролем направления через GPIO (DE=GPIO2_B4)

Конфигурация DTS

root@rockpi-s:~/S3# cat uart1-de.dts
/dts-v1/;
/plugin/;

/ {
compatible = "rockchip,rk3308";

fragment@0 {
target = <&uart1>;
__overlay__ {
status = "okay";

pinctrl-names = "default";
pinctrl-0 = <&uart1_xfer>;

linux,rs485-enabled-at-boot-time;
rs485-rts-active-high;
rs485-rts-delay = <0 0>;
rts-gpios = <&gpio2 12 0>;
};
};
};

#rs485 #napic

Получение текущего DTS из загруженной системы

· 1 мин. чтения
dmn
maintainer

Получить текущий dts из dtb, с которой загрузилась система:

dtc -I fs -O dts /sys/firmware/devicetree/base > /tmp/running.dts

Это ключевой файл, отображающий как система "понимает" всю перефирию и интерфейсы.

Внимательно изучайте файл running.dts через текстовый редактор - он ключ к пониманию как система интерпретирует интерфейсы.

И, кстати, этот dts можно "скормить" в ChatGPT и задавать вопросы или сформировать просьбу сделать overlay.

#kernel #dts

Компиляция ядра NapiLinux - быстрый метод

· 2 мин. чтения
dmn
maintainer

Как скомпилировать только ядро NapiLinux

Это "грязный" быстрый метод, который позволяет не компилировать всю систему, а быстро включить какие-то опции ядра и проверить новое ядро в системе.

Правильный способ компиляции NapiLinux — через пакет Yocto.

1. Сделать клон ядра с нужной ветки (branch)

Бранч — это версия репозитория ядра. Для разных платформ она разная, и нужно выбрать ту, которая вас интересует:

  • rk-6.1
  • orange-pi-6.6
  • rk35xx

и т. п. (выбирайте на сайте GitLab)

git clone https://gitlab.nnz-ipc.net/pub/napilinux/kernel.git --branch=rk-6.1 --depth=1
cd kernel/

2. Настроить переменные для архитектуры (ARM64)

export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-

3. Подготовить конфиг

  • Конфиги лежат в папке /arch/arm64/configs
  • В каждой ветке нужно выбрать свой конфиг:

Для Napi:

make napi_defconfig

Для CM4:

make opi_cm4_defconfig

4. Настройка конфигурации

После этого появится файл .config, в котором вы можете изменить опции ядра под себя.

5. Запускаем компиляцию ядра

make -j10

6. Результаты сборки

  • Имидж ядраarch/arm64/boot/Image
  • Главная DTB (дерево устройств) — arch/arm64/boot/<файл>.dtb
  • Оверлеиarch/arm64/boot/dts/rockchip/

7. Замена ядра в системе

Теперь можно заменить файлы Image и .dtb в /boot, затем перезагрузить систему.

8. Важно про overlay root!

NapiLinux использует root (/) как виртуальную партицию overlay, поэтому просто переписать ядро и другие файлы из системы не получится (на деле вы запишете их в overlay, и u-boot их не увидит).

Что делать?

  • Если работаете на SD-карте — выньте SD, примонтируйте обе физические партиции и запишите новые файлы в их /boot

  • Если работаете с NAND/eMMC — загрузитесь с SD, примонтируйте обе партиции и запишите туда файлы вручную

Просмотр структуры партиций

Посмотреть структуру партиций можно командами:

lsblk
lsblk -f

#napilinux #napikernel

Перенос blue-led на GPIO2B4 в Armbian

· 1 мин. чтения
dmn
maintainer

Перевод blue-led на GPIO2B4

Перевод blue-led на GPIO2B4 (Аrmbian). (В предыдущем примере GPIO3B3 попало на SPI1-CLK)

Файл конфигурации


root@rockpi-s:~# cat blue-led-gpio2b4-1.dts

/dts-v1/;
/plugin/;

/ {
fragment@0 {
/* у вас узел именно под /leds */
target-path = "/leds/blue-led";
__overlay__ {
gpios = <&gpio2 12 0>; /* GPIO2_B4, ACTIVE_HIGH */
linux,default-trigger = "heartbeat";
default-state = "on";
status = "okay";
};
};
};

#napi #dts

Перенос heartbeat диода на пользовательский GPIO через overlay

· 2 мин. чтения
dmn
maintainer

Как перенести "софтовым" методом heartbit (диод активности) с встроенного GPIO на свободный  

По умолчанию диод на GPIO находится на  GPIO0A5, у нас в NAPI его нет на "гребёнке",  подтому мы его перекинем на GPIO3B3, который есть на "гребёнке" и ничем не занят.

Научимся делать user-overlay к ядру 

Добавляем оверлей в Armbian

Сделать файл blue-led-gpio3b3-2.dts и добавить его как оверлей 

armbian-add-overlay blue-led-gpio3b3-2.dts

Команда сама скомпилирует dtbo, перенесем его в нужную папку и добавит запись в файл armbianEnv.txt.

Останется только перегрузится и убедиться, что диод "прикрепился" к нашему пину (визуально он станет сразу помигивать). Как проверить на каком GPIO оказался диод - в конце поста.

Файл dts для Armbian

/dts-v1/;
/plugin/;

/ {
fragment@0 {
     /* у вас узел именно под /leds */
     target-path = "/leds/blue-led";
     __overlay__ {
         gpios = <&gpio3 11 0>;      /* GPIO3_B3, ACTIVE_HIGH */
         linux,default-trigger = "heartbeat";
         default-state = "on";
         status = "okay";

         /* убрать pinctrl у конкретного LED, чтобы не валилось на -22 */
         /delete-property/ pinctrl-names;
         /delete-property/ pinctrl-0;
     };
};
};

Добавляем оверлей NapiLinux

Необходимо скомпилировать из dts файла, dtbo файл через утилиту dtc на любом Linux-хосте.

dtc -@ -I dts -O dtb -o blue-led-gpio3b3.dtbo blue-led-gpio3b3.dts

Делаем папку 

mkdir /boot/overlay-user Получившийся файл dtbo (blue-led-gpio3b3.dtbo) закинуть  в  /boot/overlay-user

Добавить строчку в файл /boot/uEnv.txt

user_overlays=blue-led-gpio3b3 Файл dts для NapiLinux

/dts-v1/;
/plugin/;

/ {
fragment@0 {
     /* у вас узел именно под /leds */
     /* target-path = "/leds/blue-led"; */
     target-path = "/gpio-leds/blue-led";
     __overlay__ {
         gpios = <&gpio3 11 0>;      /* GPIO3_B3, ACTIVE_HIGH */
         linux,default-trigger = "heartbeat";
         default-state = "on";
         status = "okay";

     };
};
};

Проверка на каком gpio blue-led 

hexdump -v -e '1/4 "0x%08X "' -e '"\n"' /proc/device-tree/gpio-leds/blue-led/gpios
Должно выдать: <phandle gpio3, 0x0000000B, 0x00000000>

#gpio #napi #dts

Конфигурация uEnv.txt для Сборщик компакт 0.3

· 1 мин. чтения
dmn
maintainer

uEnv.txt для Сборщик компакт 0.3 (с блоком питания 1,2А)

verbosity=7
fdtfile=rk3308-napi-c.dtb
console=ttyS0,115200n8
overlays=rk3308-uart1 rk3308-uart3-m0 rk3308-i2c1-ds1338 rk3308-i2c3-m0 rk3308-usb20-host
kernelimg=Image
extraargs=

🔥Важно: RS485 у этой модели находится на /dev/ttyS3

#fcc #fcc03 #fcc3308

Конфигурация UART на модуле CM4 в Токосборщике

· 1 мин. чтения
dmn
maintainer

В Токосборщике на модуле CM4 UART-ы расположились следующим образом:

✔️UART3 - внешний датчик Modbus ✔️UART9 - модуль расширений (Zigbee) ✔️UART7 - встроенный датчик тока

Для корректной работе Debian, необходимо подключить оверлеи с uart7,9 в файле /boot/orangepiEnv.txt

root@orangepicm4:~# cat /boot/orangepiEnv.txt 
verbosity=1
bootlogo=false
extraargs=cma=128M
overlay_prefix=rk356x
overlays=uart7-m2 uart9-m2
rootdev=UUID=a0f8ca89-7eb7-4a1e-947a-2341637b4782
rootfstype=ext4
console=serial

#fcucm4 #orangecm4 #fcu

Подключение UART4 в NapiLinux

· 1 мин. чтения
dmn
maintainer

Для подключения uart4 в NapiLinux необходимо:

✔️Создать папку /boot/overlay-user ✔️Положить в нее файл rk3308-uart4.dtbo ✔️Добавить строчку в файл /boot/uEnv.txt

user_overlays=rk3308-uart4 

✔️Перезагрузить систему ✔️Должно появиться устройство /dev/ttyS4

#napi #napioverlay #dts