|
IAR проблемы со стеком ... |
|
|
|
May 19 2008, 13:42
|
Группа: Участник
Сообщений: 11
Регистрация: 16-05-08
Пользователь №: 37 560

|
lcd.txt ( 1.66 килобайт )
Кол-во скачиваний: 196Господа, может подскажет кто, где почитать толковую инфу (желательно на русском) как компилятор распоряжается памятью АВРа. В частности периодически возникают ошибка CSTACK. Методом тыка изнменяя параметр в опциях ИАРа ошибка исчезает. Но программа глючит. Компилируется нормально а в железе непредсказуемые глюки связанные с передачей значений переменных внешним функциям... Образ кода сейчас подготовлю. Пробовал оптимизацию менять, переменные в разных местах обьявлять... Глючит в подсчете sum3 и в некоторых позициях sum2. Причем в зависимости от различных модификаций в разных местах. В начале была мега8 сейчас перешел на м128. на 128 еще хуже стало  Вообще дисплей отказывается текст писать...
Сообщение отредактировал Pavlike - May 19 2008, 13:54
|
|
|
|
|
 |
Ответов
|
May 21 2008, 07:45
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
IAR не злоупотребляет стеками. Исключение составляют лишь стандартные ф-ции printf и т.п. и то при сложных форматах вывода. Глубину стека он пишет по каждой процедуре Если также посмотреть глубину стека прерываний и учесть вложенность, то с небольшой погрешностью можно узнать потребность в стеке.
Количество параметров при вызове ф-ции вполне может быть больше 2. Здесь проблем нет никаких. Другое дело, что злоупотреблять этим не стоит, как собственно и передавать объёмные данные. Лучше в последнем случае использовать указатель.
При использовании указателей, есть шанс запортить другие данные (при неверном расчёте), включая системные, например стек. Думаю, именно это у вас и происходит. Пример прост - пытаетесь записать в 10 элемент массива данные, а выделили под массив 5. Внимательно просмотрите те процедуры исполнение которых приводит к краху. Пройдите их по шагам.
|
|
|
|
|
May 21 2008, 14:55
|
Группа: Участник
Сообщений: 11
Регистрация: 16-05-08
Пользователь №: 37 560

|
Спасибоо, пробую.. Обидно то, что на м8 все работало а при переходе на м128 работоспособность меняется в зависимости от оптимизации  (от вообще ничего не выводит на дисп, до почти работает но несовсем) Я в мейне обьявил переменную uchar val; судя по коду он ее положил в Р24, по ходу я вызываю из библиотеки функцию вывода на дисп. Дык он при вызове, регистры не сохраняет в стеке и смело там использует Р24 чем порит его  как заставить в стеке сохранять? или может как-то по иному обьявить переменную?
|
|
|
|
Сообщений в этой теме
Pavlike IAR проблемы со стеком ... May 19 2008, 13:42 Kuzmi4 2 Pavlike -
например здесь в оригинале - http://w... May 19 2008, 14:41 Pavlike 'Kuzmi4'
СПАСИБО! May 19 2008, 14:46 SasaVitebsk 1) Очень сомнительно что дело в стеке.
2) Никогда ... May 19 2008, 18:37 Pavlike Листинг я с самого начала изучал.... но ничего т... May 20 2008, 12:59 GDI Сделайте МАР файл - там указывается максимальная н... May 20 2008, 13:16 Pavlike А где рамер искать?
Цитата(Pavlike @ May 20 ... May 20 2008, 13:55 GDI Во-первых сделайте его в html - там есть такая гал... May 21 2008, 06:47   Pavlike Цитата(Сергей Борщ @ May 21 2008, 15:33) ... May 21 2008, 18:21    Сергей Борщ Цитата(Pavlike @ May 21 2008, 21:21) В то... May 22 2008, 08:27 GDI Чтобы иар не портил переменные в регистрах, объявл... May 23 2008, 07:14 Сергей Борщ Цитата(GDI @ May 23 2008, 10:14) Чтобы иа... May 23 2008, 10:40 GDI Я лишь предлагаю быстрое и гарантированное решение... May 23 2008, 11:11 Сергей Борщ Цитата(GDI @ May 23 2008, 14:11) Я лишь п... May 23 2008, 11:53 tag Цитата(Pavlike @ May 19 2008, 17:42) Вооб... May 23 2008, 11:18 GDI ЦитатаПричем недопонимание в подавляющем большинст... May 23 2008, 12:07 Pavlike Всем большое спасибо за участие! Просиженная н... May 26 2008, 11:47 Dog Pawlowa Цитата(Pavlike @ May 26 2008, 14:47) Нигд... May 26 2008, 14:28 arttab Если включили УСАРТ, то этот вывод настраивается н... May 26 2008, 14:04
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|