Repka Pi 4 sc16is752 device tree overlay

An_me

New member
28.05.2026
1
0
1
Нужно подключить rs232-rs485 hat к Repka Pi 4 (Repka OS, Optimal ver. 2.2).



Прежде всего, нужно добавить поддержку sc16is752 (SPI -> 2 UART).
На Raspberry Pi 4 получилось завести эту микросхему через SPI1 путем добавления в /boot/firmware/config.txt:

dtoverlay=spi1-1cs,cs0_spidev=off
dtoverlay=sc16is75x-spi,sc16is752,spi1-0,int_pin=24

После этого появлялись порты /dev/ttySC0 и /dev/ttySC1.

Для Repka Pi 4 пытался различные device tree конфигурацию, и ничего не работает.

Например, одна из последних:

/dts-v1/;
/plugin/;

/ {
compatible = "allwinner,sun50i-h6";
fragment@0 {
target = <&spi0>;
__overlay__ {
status = "okay";
};
};

fragment@1 {
target = <&spi0>;
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";

sc16is752: sc16is752@0 {
compatible = "nxp,sc16is752";
reg = <0>; /* CE0 */
spi-max-frequency = <4000000>;
interrupt-parent = <&gpio>;
interrupts = <357 2>; /* IRQ_TYPE_EDGE_FALLING */
clocks = <&klok>;

klok: klok {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <14745600>;
};
};
};
};
};

Менял spi0, spi1, interrupts. Пробовал различные варианты, что смог найти на github, но ничего не работает.
Пытался также декомпилировать overlay из Raspberry Pi, но даже с минимальными правками не работает.
Впервые пишу device tree overlay. Не могу понять что делаю не так.

Подключил плату к Репке не через 40-пиновый разъем, а через провода к боковым выводам.
Подключение Шилд - Repka (вариант подключения 2), номер 40-пинового вывода:

VCC - +5
GND - GND
SCLK - 23 (SPI0-CLK)
MOSI - 19 (SPI0-MOSI)
MISO - 21 (SPI0-MISO)
CS - 24 (SPI0-CS0)
IRQ - 31 (GPIO)
EN - 32 (GPIO)

Шаги по применению overlay:

1) Сохранение/редактирование dts файла в /root/ :
vi sc16is752-n.dts

2) Компиляция файла:
dtc -@ -I dts -O dtb -o sc16is752.dtbo sc16is752-n.dts

3) Копирование dtbo файла в /boot/overlays/
cp sc16is752.dtbo /boot/overlays/

4) Добавление строки sc16is752 в /boot/repkaEnv.txt в строку overlays. Получаем overlays=i2c1 spi0 sc16is752

После перезагрузки ядро не стартует на device tree overlay. Просто зависает.

## Executing script at 4fc00000
Repka U-Boot started
53 bytes read in 3 ms (16.6 KiB/s)
repkaEnv.txt loaded successfully
41705 bytes read in 7 ms (5.7 MiB/s)
repka-pi.dtb loaded successfully
overlays: i2c1 spi0 sc16is752
223 bytes read in 3 ms (72.3 KiB/s)
i2c1.dtbo loaded successfully
1097 bytes read in 4 ms (267.6 KiB/s)
spi0.dtbo loaded successfully
1036 bytes read in 4 ms (252.9 KiB/s)
sc16is752.dtbo loaded successfully
failed on fdt_overlay_apply(): FDT_ERR_NOTFOUND
26058760 bytes read in 2610 ms (9.5 MiB/s)
ERROR: Did not find a cmdline Flattened Device Tree

Starting kernel ...

Если я правильно понимаю, то

root@Repka-Pi:/boot# cat /boot/config-6.12.9.4-repka-pi4 | grep "CONFIG_SERIAL_SC16IS7XX"
CONFIG_SERIAL_SC16IS7XX=m
CONFIG_SERIAL_SC16IS7XX_I2C=m
CONFIG_SERIAL_SC16IS7XX_SPI=m

Показывает, что драйвер в ядре есть, нужно только добавить device tree overlay.

Помогите, пожалуйста, понять, что делаю не так.