реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Скрещивание старой MPLAB8 и нового XC16, Никак не могу прицепить новые библиотеки
Baser
сообщение Dec 14 2015, 18:27
Сообщение #1


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Нужно реанимировать старый проект на 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

Кто нибудь знает, что нужно сделать?
Go to the top of the page
 
+Quote Post
Baser
сообщение Dec 15 2015, 21:50
Сообщение #2


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



После длительных танцев с бубном удалось добиться желаемого.
Глюкодром, конечно, редкостный. Опции линковщика влияют на опции, которые 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
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 08:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01365 секунд с 7
ELECTRONIX ©2004-2016