реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Сбои при заполнении RAM белее чем на 50%, IAR for MSP430 V3.42A/W32 (3.42.1.9)
rimpocha
сообщение Apr 3 2008, 18:11
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-03-07
Из: Новосибирск, Seattle
Пользователь №: 25 935



MSP430F417, IAR for MSP430 V3.42A/W32 (3.42.1.9)

Есть функции (штук 10) оперирующие внутренними автоматическими массивами структур (по ~35 байт каждая структура). В строки этих структур пишется текст sprintf'ом, потом этот массив структур передается по шине.

Всего оперативки 1 килобайт. Когда количество используемой RAM переваливает за 500-600 байт, структуры передаются с искажением и в некоторых случаях при передаче контроллер подвисает.

Насколько я себе представляю, проблема в размещении данных в памяти. То ли происходит переполнение стека большими автоматическими переменными, то ли просто линковщик неправильно размещает сегменты... хбз.

Воркэраунды есть. Но хотелось бы докопаться до сути.
Кто-нить сталкивался?


--------------------
НГТУ, Физико-технический факультет, кафедра Лазерных систем
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 3 2008, 18:23
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



printf/sprintf в IAR (особенно модели Large), требует до 1кБ памяти на стеке при работе с float. Это вам ни о чем не говорит?
Go to the top of the page
 
+Quote Post
rimpocha
сообщение Apr 15 2008, 15:25
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-03-07
Из: Новосибирск, Seattle
Пользователь №: 25 935



Цитата(rezident @ Apr 4 2008, 01:23) *
printf/sprintf в IAR (особенно модели Large), требует до 1кБ памяти на стеке при работе с float. Это вам ни о чем не говорит?


Я использую форматер _PrintfSmall. Он отъедает 150 байт стека.
Ошибку я нашел. Пришлось напаивать JTAG на образец.
Печально, что IAR не ловит переполнение стека.


--------------------
НГТУ, Физико-технический факультет, кафедра Лазерных систем
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Apr 15 2008, 17:29
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(rimpocha @ Apr 15 2008, 18:25) *
Я использую форматер _PrintfSmall. Он отъедает 150 байт стека.
Ошибку я нашел. Пришлось напаивать JTAG на образец.
Печально, что IAR не ловит переполнение стека.

А какую версию используете? Последние вроде ловят - перекомпилировал один из старых проектов и обнаружил ошибку. Почему-то считал, что static const в функции разместит данные во флэши. 07.gif
Просмотрел - версия есть. В 4.XX точно есть контроль стека.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
VAI
сообщение Apr 16 2008, 03:19
Сообщение #5


Профессионал
*****

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



Цитата
Почему-то считал, что static const в функции разместит данные во флэши

Я листинг смотрю, чтоб проконтролировать, правильно ли объявил...
Тоже на этом попадался...


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
etoja
сообщение Apr 16 2008, 03:44
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



поставь конденсаторы параллельно питанию рядом с выводами процессора.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 13:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01388 секунд с 7
ELECTRONIX ©2004-2016