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

 
 
> Размещение функций в памяти компилятором IAR 3.20, происходит сброс контроллера при ret
Olegovich
сообщение Apr 22 2005, 10:01
Сообщение #1


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

Группа: Свой
Сообщений: 131
Регистрация: 3-03-05
Из: Санкт-Петербург
Пользователь №: 3 037



Насколько я понял, компилятор размещает функции во флэше по возможности в порядке их появления/вызова.
Происходит вот что:
была функция, размещенная компилятором С (смотрел в ассемблере) где-то в районе памяти $1600-$1700, эта функция несколько раз вызывает рядом лежащую функцию, и в один прекрасный момент, при очередном вызове этой маленькой подфункции, происходит "вылетание" при операции RET, контроллер сбрасывается.
Со стеком всё хорошо.
Ради интереса беру, пишу в основном теле программы вызов этой глючной функции сразу после инициализации. Компилятор размещает её чуть-чуть в другом месте (где-то $1600), и она работает и при первом вызове, и уже при последующих так как надо. Но это не метод - ведь если одна функция отказала, то не факт, что другая сработает.
В чем может быть загвоздка?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Axel
сообщение Apr 22 2005, 11:50
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



Попробуйте выделить побольше памяти под стек.
Go to the top of the page
 
+Quote Post
Olegovich
сообщение Apr 22 2005, 11:59
Сообщение #3


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

Группа: Свой
Сообщений: 131
Регистрация: 3-03-05
Из: Санкт-Петербург
Пользователь №: 3 037



Цитата(Axel @ Apr 22 2005, 14:50)
Попробуйте выделить побольше памяти под стек.
*

Нет, со стеком все нормально.
Прерывания вообще нигде не используются...
У меня MSP430F149.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Apr 22 2005, 14:25
Сообщение #4


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(Olegovich @ Apr 22 2005, 14:59)
Нет, со стеком все нормально.
*

Если со стеком всё нормально, то видимо некорректное использование каких-то переменных (например, индекс массива запредельный) портит адрес возврата в стеке.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 15:37
Рейтинг@Mail.ru


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