Обнаружил, что если убрать Cross Call в опциях компилятора, то время компиляции нормальное (порядка пары десятков секунд). Но после этого программа перестает нормально работать. Проблема начинается при вызове функции menu_init(). Внешне это проявляется выводом "мусора" на ЖКИ и пересбросу МК. Размеры CSTACK, RSTACK увеличил в 10 раз. Не помогает. Программа работает нормально только при максимальной оптимизации по размеру (с включенной опцией Cross Call). Из описания компилятора (IAR 5.20.3) : "Эта опция уменьшает размер RSTACK путем запуска cross-call optimizer N раз". Странно однако, обычно эту опцию многие отключают, чтобы не было проблем. У меня же наоборот получается... На что следует обратить внимание при выключении этой опции?
|