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

 
 
> IAR проблемы со стеком ...
Pavlike
сообщение May 19 2008, 13:42
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 16-05-08
Пользователь №: 37 560



Прикрепленный файл  lcd.txt ( 1.66 килобайт ) Кол-во скачиваний: 196
Господа, может подскажет кто, где почитать толковую инфу (желательно на русском) как компилятор распоряжается памятью АВРа. В частности периодически возникают ошибка CSTACK. Методом тыка изнменяя параметр в опциях ИАРа ошибка исчезает. Но программа глючит. Компилируется нормально а в железе непредсказуемые глюки связанные с передачей значений переменных внешним функциям... Образ кода сейчас подготовлю.

Пробовал оптимизацию менять, переменные в разных местах обьявлять... Глючит в подсчете sum3 и в некоторых позициях sum2. Причем в зависимости от различных модификаций в разных местах.
В начале была мега8 сейчас перешел на м128. на 128 еще хуже стало sad.gif Вообще дисплей отказывается текст писать...

Сообщение отредактировал Pavlike - May 19 2008, 13:54
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GDI
сообщение May 23 2008, 11:11
Сообщение #2


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

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



Я лишь предлагаю быстрое и гарантированное решение конкретной проблемы. При вложенных вызовах функций ИАР действительно может перезаписать локальные переменные которые он разместил в регистрах, но я не склонен с ходу объявлять такое поведение глюками компилятора, конечно же здесь имеет место недопонимание между программистом и компилятором. Можно и нужно искать причины этого недопонимания, но иногда надо сперва получить результат - конкуренты не дремлют и начальство не спит. smile.gif


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 23 2008, 11:53
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(GDI @ May 23 2008, 14:11) *
Я лишь предлагаю быстрое и гарантированное решение конкретной проблемы. При вложенных вызовах функций ИАР действительно может перезаписать локальные переменные которые он разместил в регистрах, но я не склонен с ходу объявлять такое поведение глюками компилятора,
Решение проблемы - это поиск и устранение ее причины. Вы же предлагаете некий обход проблемы, который может помочь, а может вылезти боком или здесь или дальше - если все переменные делать глобальными, то память кончится очень быстро и начнутся проблемы налезания стека на данные. Если компилятор действительно портит локальные переменные (а это пока не доказано) - то это явный глюк компилятора, но пока не доказан сам факт порчи. Если факт будет доказан - то более удачное решение - взять адрес переменной. Это заставит компилятор разместить ее на стеке и переменная не будет занимать место после завершения функции. Но опять же - компиляторы нынче ух какие умные, могут соптимизировать и это smile.gif

Цитата(GDI @ May 23 2008, 14:11) *
конечно же здесь имеет место недопонимание между программистом и компилятором. Можно и нужно искать причины этого недопонимания, но иногда надо сперва получить результат - конкуренты не дремлют и начальство не спит. smile.gif
С некоторой натяжкой можно согласиться. Причем недопонимание в подавляющем большинстве случаев со стороны программиста. И опять же, такое быстрое решение обязательно вылезет потом. Ведь никто не будет возвращаться к этому месту пока не навернется что-то еще. "Работает - не трогай". И значит бездумное использование такого обходного маневра будет продолжаться и дальше, где надо и чаще - где не надо. А когда вдруг перестанет работать - на поиск причины уйдет мама дорогая сколько времени. И когда будет найдена настоящая причина - часть "обходов" будет убрана, а часть так и останется забытой, ожидая времени, когда приподнести очередной сюрприз.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
- - SasaVitebsk   IAR не злоупотребляет стеками. Исключение составля...   May 21 2008, 07:45
|- - Pavlike   Спасибоо, пробую.. Обидно то, что на м8 все работ...   May 21 2008, 14:55
|- - Сергей Борщ   Цитата(Pavlike @ May 21 2008, 17:55) Я в ...   May 21 2008, 17:33
|- - 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
- - 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


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

 


RSS Текстовая версия Сейчас: 5th September 2025 - 05:44
Рейтинг@Mail.ru


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