Проблемы с чтением памяти - PullRequest
1 голос
/ 19 июля 2011

Когда я запускаю свой код через отладчик, после ряда шагов он в конечном итоге теряется и выполняет команды не по порядку.Я не уверен, переполняется ли стек или что.

Это ошибка, которую я обычно получаю:

MSP430: Ошибка чтения блока памяти на 0xffe2e на странице 0 длины 0x1d2: Неверный параметр(s)

Есть предложения о том, что это может быть?Я кратко прочитал о возможных проблемах с обработкой некоторых прерываний.

Кроме того, я пытаюсь заполнить мою RAM определенным значением, чтобы я мог сказать, переполняется ли стек, любые предложения о том, как заполнить всю RAM, скажем, значением 0x1234?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 июля 2011

Я также видел эту ошибку при использовании Code Composer Studio и программатора USBFET от TI, хотя мне не удалось найти единственную, определенную причину.

Если вы используете CCS, вот несколько советов:

1) Поймать прерывания ACCV (UNMI) и VMA (SYSNMI) и установить точку останова в обработчиках. Если одно из этих отключений, проверьте стек на наличие подсказок относительно того, что вызвало прерывание.

2) Если у вас есть обработчики прерываний, которые повторно разрешают прерывания (бит GIE), убедитесь, что они не запускаются повторно.

3) Я видел эту ошибку (необъяснимо) при переходе через оптимизированный код; так что это может помочь отключить оптимизации.

Если вы используете code composer studio, в качестве альтернативы инициализации ОЗУ вы можете установить точку останова при переполнении стека. Кроме того, с приостановленным сеансом отладки CCS дает вам возможность заполнить часть памяти любым значением, которое вы выберете через подокно «Память». How to fill MSP430 memory

0 голосов
/ 19 июля 2011

Какой отладчик и компилятор вы используете?Я обнаружил, что msp430-gcc и msp430-gdb / gdbproxy могут сильно запутаться с включенной оптимизацией GCC.Однако иногда испускается неработающий код без их включения (это действительно качественный продукт).

Самый простой способ заполнить память - это изменить файл запуска crt0.s и связать его самостоятельно.Когда память установлена ​​в 0, вы можете изменить шаблон там.

Какое устройство вы используете?На 16-разрядных устройствах 0xffe2e находится за пределами адресного пространства процессора, вероятно, индекс массива или аналогичный, который стал отрицательным.

...