-
- Судя по некоторым опытам с обычным CM4, то, если не используется DMA, есть риск: пока вошел в прерывание, пока вышел, уже новый запрос пришел, а приоритет высокий - пока буфер не уйдет, все висит. В результате переполнялся УАРТ. - VLLV(11.09.2024 11:03)
- Вообще-то написать модуль ядра не так уж сложно. Есть статьи на хабре, есть примеры. Само ядро при этом пересобирать не нужно. - Cкpипaч(22.08.2024 17:55)
- Заглянуть в сорцы драйвера, использует ли он DMA. Если нет - исправить. Если нет DMA для SPI - то сильно чесать репу. Для NUC970 решал похожую пробоему через переключение прерывания SPI с IRQ на FIQ и ассемблерный обработчик. - LightElf(22.08.2024 02:52)
- Наши программизды когда-то уверяли меня, что в подобных случаях
настройки ядра Linux ковырять нужно. На всякий случай - я не
программист, за что купил .... - reZident(21.08.2024 19:33)
- А можно малость поподробней т.к. поменять пару ключей в
каком-нибудь .cfg это одно, а править исходники и компилировать
ядро как выше предлагают это сильно другое и вообще мрак. Кстати
заглянув в TRM (spruh73q) выяснилось что блок SPI поддерживает
посылки в диапазоне 4-32 бита. Переключение в
SPI_IOC_WR_BITS_PER_WORD = 32 дало передачу уже неразрывними
блоками по 4 байта с аналогичными промежутками между ними. Все
обмены через ioctl являются синхронными, для асинхронного Chip_n_Go_3(43 знак., 22.08.2024 17:10, ссылка)
- За подробностями нужно к программистам. А я к ним не отношусь.
Просто на мой вопрос - можно ли доп.платы подключать к
микрокомпьютерам типа Raspberry Pi, Banana Pi, Orange Pi
посредством SPI? - они махали на меня руками и говорили, что для
этого нужно лезть в настройки ядра Linux или даже в само ядро (то
ли имеющийся драйвер править, то ли писать свой собственный
драйвер). И вместо SPI предлагали подключать наши платы через UART
или на крайняк через USB. reZident(383 знак., 22.08.2024 17:30)
- Когда искал примеры под Linux, находил сорцы где в память
user-процесса отмаппированно пространство регистров управления
блока GPIO чипа с последующей прямой работой с ними, так что народ
извращается по всякому... - Chip_n_Go_4(22.08.2024 18:11)
- Это не решает вопрос возникновения разрывов в произвольных местах.
Вытесняемая многозадачность однако, любое прерывание порушит
времянки. - LightElf(02.09.2024 15:07)
- Задержки между байтами стабильны, этож не программный SPI. К тому-же была надежда что пакет данных передается с участием DMA. - Chip_n_Go_7(02.09.2024 20:18, )
- Это не решает вопрос возникновения разрывов в произвольных местах.
Вытесняемая многозадачность однако, любое прерывание порушит
времянки. - LightElf(02.09.2024 15:07)
- Когда искал примеры под Linux, находил сорцы где в память
user-процесса отмаппированно пространство регистров управления
блока GPIO чипа с последующей прямой работой с ними, так что народ
извращается по всякому... - Chip_n_Go_4(22.08.2024 18:11)
- За подробностями нужно к программистам. А я к ним не отношусь.
Просто на мой вопрос - можно ли доп.платы подключать к
микрокомпьютерам типа Raspberry Pi, Banana Pi, Orange Pi
посредством SPI? - они махали на меня руками и говорили, что для
этого нужно лезть в настройки ядра Linux или даже в само ядро (то
ли имеющийся драйвер править, то ли писать свой собственный
драйвер). И вместо SPI предлагали подключать наши платы через UART
или на крайняк через USB. reZident(383 знак., 22.08.2024 17:30)
- А можно малость поподробней т.к. поменять пару ключей в
каком-нибудь .cfg это одно, а править исходники и компилировать
ядро как выше предлагают это сильно другое и вообще мрак. Кстати
заглянув в TRM (spruh73q) выяснилось что блок SPI поддерживает
посылки в диапазоне 4-32 бита. Переключение в
SPI_IOC_WR_BITS_PER_WORD = 32 дало передачу уже неразрывними
блоками по 4 байта с аналогичными промежутками между ними. Все
обмены через ioctl являются синхронными, для асинхронного Chip_n_Go_3(43 знак., 22.08.2024 17:10, ссылка)