Я работаю с OMAP1113 lcdk, и у меня есть базовое приложение для обработки аудио (некоторая фильтрация + эквалайзер, ничего особенного). По историческим причинам у меня объявлено много статических и глобальных данных, переменных, массивов и структур …
В основном мое приложение работает нормально. Но если только я объявляю еще один массив статических переменных, я не вижу выходного сигнала. При этом я к нему не обращаюсь, он только объявлен.
Изначально у меня есть следующие .bss
c31031f0 c31031f0 000006a0 00000000 rw-
c31031f0 c31031f0 000006a0 00000000 rw- .bss
и .far раздел
c3000000 c3000000 0005c994 00000000 rw-
c3000000 c3000000 0005c994 00000000 rw- .far
Я пытаюсь объявить static float tmpArr[8]
и увидеть провал.
Эти разделы связаны с памятью DDR, которая объявлена следующим образом:
DDR c3000000 00800000 00103f56 006fc0aa RW X
Так что его неиспользуемый размер — 0x6fc0aa, это большая комната для размещения :).
С чем это может быть связано? Любые хиты очень ценятся.
Проблемы такого рода могут быть сложными для отладки. Вам нужно посмотреть на структуру памяти целевой системы и посмотреть, выходит ли какой-либо из ваших разделов за ее границы.
Действительно трудно дать общий совет в таких случаях. Легко потратить дни и недели на отладку, чтобы найти причину (или нет). Вы можете попытаться удалить части вашей кодовой базы из вашей сборки, чтобы понять, что может сделать ее ненадежной. Интеграция может быть кошмаром на некоторых встроенных системах.
У меня не было проблем с OMAPL138, хотя. Работали приложения обработки сигналов на ARM9 и C674x DSP.
Других решений пока нет …