В ядре 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