Baser 5 14 декабря, 2015 Опубликовано 14 декабря, 2015 · Жалоба Нужно реанимировать старый проект на PIC24F32KA302. Был написан под MPLAB8 на компиляторе C30. На почти что последних версиях этих зверей. Сейчас нужно добавить в проект кучку функций, а свободной памяти в контроллере уже мало. Большего размера PIC24 семейства КА нет, переходить на другие пока влом, т.к. у них нет EEPROM, нужно извращаться с флешем. Так что решил посмотреть, что сейчас есть последнего в компиляторах, может код удасться ужать. Короче поставил последние MPLABX v3.15 и XC16 v1.25 - работает, код хорошо ужимается. Одна проблема - комп на работе старый и MPLABX, которая на джаве, еле шевелиться. Да и все эти красивости новой IDE мне даром не нужны, только раздражают. Попробовал работать с XC16 из под последней MPLAB 8.92 - тоже работает, но никак не хочет подцеплять новые библиотеки. Из-за этого размер кода получается больше процентов на 5. Уже все перепробовал, даже запускал компилятор из командной строки с похожими параметрами, как это делает MPLABX - результат нулевой - линкуются старые библиотеки: --library=lega-pic30-elf --library=m-elf --library=lega-c-elf хотя указываю в явном виде: -no-legacy-libc и --start-group -lpic30 -lm -lc --end-group Создается впечатление, что MPLABX добавляет еще какие-то невидимые ключи при запуске XC16 Кто нибудь знает, что нужно сделать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Baser 5 15 декабря, 2015 Опубликовано 15 декабря, 2015 · Жалоба После длительных танцев с бубном удалось добиться желаемого. Глюкодром, конечно, редкостный. Опции линковщика влияют на опции, которые MPLAB сама добавляет при запуске компилятора. Панель "Memory Usage Gauge" отображает неправильные цифры, отличные от выдаваемых компилятором. Основная лажа: если в строке запуска линковщика присутствует опция -no-legacy-libc (которую успешно использует MPLABX), тогда при компиляции исходников MPLAB сама добавляет в самый конец обратную опцию -legacy-libc и применяются старые библиотеки :twak: Вот строки опций для MPLAB8, с которыми все компилируется так же, как и в MPLABX. Связка MPLAB 8.92 и XC16 v1.25 для компилятора: -g -omf=elf -no-legacy-libc -msmall-code -msmall-data -mconst-in-code -Os -funroll-loops -mpa -msmart-io=1 -Wall -msfr-warn=off -funsigned-char для линковщика: -Map="$(BINDIR_)$(TARGETBASE).map" -o"$(BINDIR_)$(TARGETBASE).$(TARGETSUFFIX)" -omf=elf --check-sections --data-init --pack-data --handles --isr --no-gc-sections --fill-upper=0 --stackguard=16 --no-force-link --smart-io --start-group -lpic30 -lm -lc --end-group --report-mem Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться