Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Скрещивание старой MPLAB8 и нового XC16
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
Baser
Нужно реанимировать старый проект на 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 wacko.gif

Кто нибудь знает, что нужно сделать?
Baser
После длительных танцев с бубном удалось добиться желаемого.
Глюкодром, конечно, редкостный. Опции линковщика влияют на опции, которые MPLAB сама добавляет при запуске компилятора. wacko.gif
Панель "Memory Usage Gauge" отображает неправильные цифры, отличные от выдаваемых компилятором.

Основная лажа: если в строке запуска линковщика присутствует опция -no-legacy-libc (которую успешно использует MPLABX),
тогда при компиляции исходников MPLAB сама добавляет в самый конец обратную опцию -legacy-libc
и применяются старые библиотеки twak.gif

Вот строки опций для 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
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.