У меня есть встроенное приложение реального времени с основным циклом, работающим на частоте 10 кГц. Он работает на TI TMS320C, настроенном для загрузки с флэш-памяти. Недавно я добавил инициализированный массив в исходный файл, и внезапно временные ошибки облажались (слишком сложно, чтобы объяснить это хорошо - по сути, запись в последовательный порт больше не завершается вовремя.)
Вещи, которые меня смущают:
- Я даже не обращаюсь к новым данным , просто объявляю инициализированный массив.
- Это зависит от размера - проблема появляется, только если массив> 40 слов.
- Я знаю, что я не переполняю никакие сегменты данных в карте ссылок.
- Нет кэширования данных, поэтому это не связано с нарушением целостности кэша.
Любые идеи о том, как простое увеличение размера сегмента .cinit во флэш-памяти может повлиять на время вашего кода?
Дополнительная информация:
Я подумал, что, возможно, код переместился, но он хорошо отделен от данных. Я проверил по карте памяти, что все сегменты кода имеют одинаковые адреса до и после ошибки. Я также проверил, что ни один из сегментов не заполнен - единственные адреса, которые меняются на карте, - это несколько в разделе .cinit. Этот раздел содержит значения данных, используемые для инициализации переменных в оперативной памяти (например, мой массив). К нему нельзя обращаться после вызова main ().