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

 
 
 
Reply to this topicStart new topic
> Исправление линкера XC16 v1.26 и ниже при попытке использования последнего слова во flash
starter48
сообщение Mar 16 2016, 02:21
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 15-10-05
Из: Томск
Пользователь №: 9 680



При попытке компиляции проекта с размещением массива/структуры такого вида в последней странице flash (для эмуляции EEPROM):
Код
__attribute__((space(prog),page,address(__PROGRAM_BASE + __PROGRAM_LENGTH - (_FLASH_PAGE * 2)),noload,keep,section(".eeprom"))) union {
        int bin[_FLASH_PAGE -1];// -1 need to avoid linker error "absolute section crosses the boundary of region program"
} last_flash_page_cal_data;
линкеры coff-ld.exe и elf-ld.exe "падают".

Покопавшись отладчиком, я обнаружил, что проблема в опечатке в следующей строке формата fprintf в линкере:
Код
"/n Could not use block at address %d and of size % to locate section %s because this will lead to having executable code  at the last word of program memory./n"

здесь пропущен символ 'u' после знака '%', т.о. получается нарушение соответствия формата аргументам fprinf.
Вот патч для исправления виндового линкера v1.26:
Код
coff-ld.exe
0006F666: 20 75;change '% ' to '%u'

elf-ld.exe
00089D32: 20 75;change '% ' to '%u'

Но более старые версии XC16, и версии под другие ОС тоже содержат эту ошибку.
Также прилагаю продвинутую автопатчилку, которая вставляет символ 'u', а не заменяет им пробел.
Под виндой патчилка должна сама находить посл. установленную версию XC16.
Под Linux-ом можно запускать с помощью WINE. Но каталог с линкерами (coff-ld и elf-ld) придётся указать руками. И про write permissions не забудьте.
Или можно пропатчить линуксовые coff-ld и elf-ld на компе с виндой.
С MacOS не тестировал.
Прикрепленные файлы
Прикрепленный файл  xc16linker_bugfix2.zip ( 266.47 килобайт ) Кол-во скачиваний: 22
 
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd September 2017 - 11:45
Рейтинг@Mail.ru


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