Ник:
Пароль:

Контакты

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

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:3
Форум » starterkit.ru » Процессорные модули » ES-T113-NANO(-LV), SK-T113-MOD
Вопросы по схеме, SPI & UART
sasamy
Добавлено 07.03.2025 00:01 Сообщение: 21
sasamy
4.71

Регистрация: 14.08.2009
Цитата
В osless системах делаю кольцевой DMA буфер, каждый тик своей работы, обычно 10мс, программа забирает по его указателям принятое и обрабатывает. Передача тоже через DMA. Никаких накладных расходов в программе, все аппаратно.


тут такое не прокатит - надо менять подход
Спуститься к концу Подняться к началу
Персональная информация
Hsb
Добавлено 07.03.2025 11:57 Сообщение: 22
Hsb
0

Регистрация: 18.02.2025
Да, но все-таки, получается, что в драйвере ошибка - DMA в DTS есть, а в драйвере DMA не включается?
Я описывал, что ДМА включается. если заменить для AW_16550A:
// .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10,
.fcr = UART_FCR_DMA_SELECT | UART_FCR_ENABLE_FIFO |
Но при этом включается неправильно:
[ 199.286348] dma dma0chan5: Invalid DMA configuration
а в DTSI:
dmas = <&dma 16>, <&dma 16>;
Как это исправить - непонятно.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 07.03.2025 13:18 Сообщение: 23
sasamy
4.71

Регистрация: 14.08.2009
Цитата
Да, но все-таки, получается, что в драйвере ошибка - DMA в DTS есть, а в драйвере DMA не включается?


возможно, только что это меняет - я вам дал тест где очевидно что на скорости 4 000 000 бод достаточно fifo 256 байт без dma чтобы драйвер успевал принимать буфер 4095 байт без потерь. В Linux у вас не получится сделать как вы делали на baermetal и управлять DMA напрямую. У вас цель задачу решить средствами ОС или сделать из ОС baremetal?
Если уж рассуждать об ошибках то тут очевидно ошибка в выборе интерфейса и протокола для обмена на такой скорости.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 07.03.2025 14:06 Сообщение: 24
sasamy
4.71

Регистрация: 14.08.2009
Цитата
я вам дал тест где очевидно что на скорости 4 000 000 бод достаточно fifo 256 байт без dma чтобы драйвер успевал принимать буфер 4095 байт без потерь.


кстати, надо ещё проверять дейтвительно ли UART работает на такой скорости, помоему там надо ещё частоту apb1 увеличить чтобы получить такую частоты UART.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 07.03.2025 16:08 Сообщение: 25
sasamy
4.71

Регистрация: 14.08.2009
Цитата

кстати, надо ещё проверять дейтвительно ли UART работает на такой скорости, помоему там надо ещё частоту apb1 увеличить чтобы получить такую частоты UART.


явно надо повышать частоту apb1 - сделал циклическую передача-приём без вывода дампа в случае прохождения теста - видно что скорость даже ниже чем 115200. Чтобы повысить частоту UART-ов надо увеличить частоту apb1 - штатно она 24 МГц. Пример 200 МГц с ahb

buildroot-2022.08.3-sk-t113/output/build/linux-custom/arch/arm/boot/dts/sun8i-t113-nano-lv-emmc.dts

Цитата


&ccu {
assigned-clocks = <&ccu CLK_APB1>;
assigned-clock-rates = <200000000>;
};



так можно проверить состояние всех клоков

mount -t debugfs none /sys/kernel/debug
cat /sys/kernel/debug/clk/clk_summary

Цитата

psi-ahb 13 14 0 200000000 0 0 50000 Y
apb1 2 2 0 200000000 0 0 50000 Y


Стало явно быстрей, сделал дополнительно рандомные даные, тесты проходят без ошибок

Цитата

# ./utest
Usage: ./utest [-s srcdev] [-d dstdev] [-b baud] [-c count]
Now: srcdev /dev/ttyS2, dstdev /dev/ttyS2, baud 4000000, count 4095
send 4095 bytes
received 4095 bytes
test OK

send 4095 bytes
received 4095 bytes
test OK

send 4095 bytes
received 4095 bytes
test OK

send 4095 bytes
received 4095 bytes
test OK
.......
Спуститься к концу Подняться к началу
Персональная информация
Hsb
Добавлено 07.03.2025 21:12 Сообщение: 26
Hsb
0

Регистрация: 18.02.2025
Спасибо, я разбираюсь с дма, пока не получается.
Спуститься к концу Подняться к началу
Персональная информация
dolmatov
Добавлено 17.05.2025 19:39 Сообщение: 27
dolmatov
0

Регистрация: 03.07.2016
Цитата

на t113 есть ещё вариант - обрабатывать UART на ядре xtensa - в buildroot есть для него freertos, после приёма целового пакета через прерывание сообщать в Linux и отдавать целый пакет. Но боюсь вам снаскоку это будет слишком затратно по врмени, там надо будет и freertos программировать и модуль ядра Linux дописывать.


freertos для ядра xtensa в buildroot для Т113? Где то об этом можно прочитать? Или это ваше(by starterkit) ноу-хау?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 18.05.2025 00:51 Сообщение: 28
sasamy
4.71

Регистрация: 14.08.2009
Цитата

freertos для ядра xtensa в buildroot для Т113? Где то об этом можно прочитать? Или это ваше(by starterkit) ноу-хау?


не ноухау

https://github.com/YuzukiHD/FreeRTOS-HIFI4-DSP

просто слегка причесали и пару драйверв для линукс дописали для загрузки из линукса freertos на xtensa и обмен между ОС через msgbox с прерываниями и конечно интеграция этого в buildoot чтобы собирать одной галочкой
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 18.05.2025 00:59 Сообщение: 29
sasamy
4.71

Регистрация: 14.08.2009
Цитата

Где то об этом можно прочитать?


я не уверен выложил ли Павел buildroot-2022.08.3-sk-t113 в материалах к платам, это по большей части эксперимент

Цитата

В ядре Linux добавил драйеры для загрузки и запуска elf имиджей
на DSP ядре и драйвер с примером двухстороннего обмена через аппаратный
msgbox между Linux на ядре ARM и FreeRTOS на DSP, соотвественно
добавил сборку адаптированного порта FreeRTOS для DSP.
Собирается всё в buildroot, дефолтные конфиг

make sk_dsp_defconfig

это минимальный конфиг + сборка имиджа для загрузки в DSP dsp.elf

добавить сборку прошивки для DSP в любом конфиге можно просто поставить галочку

make menuconfig

Target packages --->
Hardware handling --->
[*] freertos-hifi4

После сборки прошить как обычно, чтобы загрузить и запустить прошивку на DSP
ядре надо выполнить в терминале чтобы указать имя файла прошивки и запуск

# echo -n dsp.elf > /sys/class/remoteproc/remoteproc0/firmware

# echo start > /sys/class/remoteproc/remoteproc0/state
[ 57.029445] remoteproc remoteproc0: powering up 1700000.dsp
[ 57.058207] remoteproc remoteproc0: Booting fw image dsp.elf, size 97808
[ 57.065235] remoteproc remoteproc0: remote processor 1700000.dsp is now up
DSP uart

DSP uart - это пишет DSP при запуске, он использует для вывода своих сообщений
тот же uart что и linux. Выключить DSP

# echo stop > /sys/class/remoteproc/remoteproc0/state

Пример freertos для DSP управляет двумя GPIO

#define GPIO_IN GPIO_PIN(PORTD, 12)
#define GPIO_OUT GPIO_PIN(PORTD, 13)

вход (PORTD 12) при замыкании на землю генерирует прерывание и отправляет
сообщение ядру ARM 0x12345678 через 3 канал msgbox, у ядра ARM срабатывает
прерывние и обработчик выводит в лог ядра

[ 1467.235446] test-msgbox 3003000.mailbox: isr ch 3 recv 0x12345678

Выход (PORTD 13) выдаёт меандр с периодом 2 сек, периодом можно
упралять из консоли, например

# echo "100" > /dev/test_msgbox
DSP set delay 100

устанавливает половину периода 100 милисекунд
(по умолчнию 1000 милисекунд 1000 + 1000 = 2000 мсек -> 2 сек)

Код freertos можно менять после сборки, для сборки после правки
можно выполнить make в директории исходников freertos

buildroot-2022.08.3-sk-t113/output/build/freertos-hifi4

и скопировать имидж

buildroot-2022.08.3-sk-t113/output/build/freertos-hifi4/build/dsp.elf

на плату в директорию

/lib/firmware/dsp.elf

Код драйвера Linux с примером работы с msgbox

buildroot-2022.08.3-sk-t113/output/build/linux-custom/drivers/misc/msgbox

scp build/dsp.elf root@192.168.0.136:/lib/firmware

Спуститься к концу Подняться к началу
Персональная информация
dolmatov
Добавлено 19.05.2025 19:10 Сообщение: 30
dolmatov
0

Регистрация: 03.07.2016
Цитата

я не уверен выложил ли Павел buildroot-2022.08.3-sk-t113 в материалах к платам, это по большей части эксперимент
]


Заказал комплект. Надеюсь что Павел выложил ...
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Процессорные модули » ES-T113-NANO(-LV), SK-T113-MOD