ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
2 июля
73692 Топик полностью
FDA (08.11.2006 12:57, просмотров: 1) ответил slog2 на Как определить сколько программе на Си в IAR для AVR нужно CSTACK и RSTACK?
Вот тут многие смеются на PIC'ами, а там ведь таких проблем нет! Стек аппаратный - главное не вылезти за 32 уровня вложенности, но даже и это легко проверить, т.к. есть специальный флаг и возможность сброса процессора при переполнении стека. А о передача параметров в функции и процедуры вообще думать не надо. Пиши себе на Си и радуйся! Правда, есть там, конечно, пара тонкостей (это касается компилятора от Hi-Tech). Например, в области локальных переменных функции можно создать массив типа char размером со всё ОЗУ, но с типом unsigned int это уже не пройдёт и т.п. тонкости. Но это действительно тонкости, которые, кстати, обходятся на этапе написанияпрограммы, т.е. компилятор просто не сможет скомпилировать подобные вещи. В IAR же можно всё отлично скомпилировать, но получить абсолютно неработоспособный код! Поищите мои вопросы по этой теме в данной конференции. Я как-то делал декодирование NMEA на ATmega162 - всё проклял! Функции типа printf, strlen и т.п. вели себя непредсказуемо. Проблема решилась только после задания других значений размера стека. Сейчас вот заложил ATmega48 в один девайс. Программа несложная там, но требует много памяти для обмена данными с ПК. Вроде 512 байт ОЗУ должно было хватить на всё с запасом - хрен два. Пришлось чуть ли не треть под стек отдавать!!! Но это уже бред какой-то. Проще уж тогда на асме всё писать! Вобщем, лично я очень иаровским компилятором. Понимаю, что проблема именно в нём, а не в AVR'ах, но и от последних я тоже не в восторге.