затыкается наглухо и на uart'ах оверраны происходят. Точно локализовать не получается... Отключаешь часть периферии с ДМА и нет проблемы. Подключаешь - сыпется... Это не что-то одно. т.к. по одному я отключал уже всё, не помогает....
Камень MIMXRT...
Часть проблем с DMA может быть связана с кешем. Проверьте в какие регионы памяти складываются/берутся данные.
Да, я понимаю. Но дело не в том, что данные искажаются, а в том, что DMA просто какие-то каналы не успевает обрабатывать (на это похоже).
Ах вот оно что. А приоритеты прерываний проверяли? Если повысить приоритет что-то изменится?
Если на UART скорость понизить проблема остаётся?
От скорости уарта не зависит.
Мдааа. А пинами можете подёргать в прерываниях по завершению DMA и на осциллографе посмотреть как часто они происходят и в какие моменты по отношению к приходящим/уходящим данным. Да, муторно, но просто я уже теряюсь в догадках.
А пробовал. Попадаю в прерывание - вижу флаг оверран. Чищу фифо, снимаю флаг ошибок и сразу же попадаю в него снова. Так что остальные прерывания почти (!) не успевают поработать == все процессорное время уходит на это увлекательное занятие. Ну и вишенка на торте - только в поле на объекте )) на столе не воспроизводится )
Так надесь вы брек проинт не ставите там?
Нет. Брейкпоинтов в релизной сборке вообще нет.
Обсуждают сегодня