Перейти к содержанию
    

Скрещивание старой MPLAB8 и нового XC16

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

 

Кто нибудь знает, что нужно сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После длительных танцев с бубном удалось добиться желаемого.

Глюкодром, конечно, редкостный. Опции линковщика влияют на опции, которые MPLAB сама добавляет при запуске компилятора. :wacko:

Панель "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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...