Почему обновление до более поздней версии Code Composer Studio/Compiler увеличивает размер программы для MSP430-F148?
У меня есть проверенная, рабочая и поставляемая программа прошивки (язык C) для микроконтроллера TI MPS430-F148. Он был тщательно обработан для размещения в доступной памяти и разработан с использованием Code Composer Studio версии 5.2.1 / версии 4.1.1 компилятора TI.
Я экспортировал проект из Code Composer Studio 5.2.1 и импортировал его в TI Code Composer Studio версии 7.4.0. При сборке проекта я получаю это сообщение об ошибке:
"ошибка #10099-D: программа не помещается в доступную память."
За этим последовало предупреждение о том, что моя программа была создана с версией компилятора 4.1.1, но будет использоваться другая версия компилятора:
"Этот проект был создан с использованием версии компилятора, которая в данный момент не установлена, - 4.1.1 [MSP430]. Во время сборки будет использоваться другая версия компилятора - 16.9.6.LTS".
Дополнительный текст в предупреждении предложил получить и установить более раннюю версию компилятора. Я нашел и установил версию, ближайшую к версии 4.1.1, то есть версии 4.1.9.
Затем проект был построен без ошибок, с запасной памятью, как и ожидалось. Прошло последующее тестирование. Проблема решена, но вопрос остается.
Я предполагал, что более высокая версия Code Composer Studio с более высокой версией компилятора, использующей те же файлы проекта и тот же исходный код, все равно будет производить код, который помещается в доступную память.
Что не так с моим предположением?
1 ответ
Ваше основное предположение - что это тот же самый компилятор - неверно: это другой компилятор, даже если это "просто" другая версия. Вы должны относиться к нему так же, как к новому компилятору.
Я не могу сказать вам точную причину его нового поведения без исходных кодов, но я думаю, что это другой способ оптимизировать скорость. ChangeLog может дать вам подсказку, например: включить / выключить некоторые оптимизации для скорости / размера. Или, как предполагает Мандраенке, фактические причины - это просто разные настройки где-то еще в цепочке, мое первое предположение было бы в Makefile
,
Вы должны изменить свой компилятор, некоторые даже скажут всю цепочку инструментов сборки, только если вам нужно исправить серьезную ошибку, некоторые дополнительные опции или поддержку более нового стандарта, особенно с большим количеством современных микроконтроллеров. И с текущими размерами жестких дисков, вероятно, не самая плохая идея заархивировать компилятор [1] вместе с исходным кодом.
[1] лицензия вашего компилятора может или не может разрешить это.