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

 
 
> Линковщик калечит имена секций. Как предотвратить? IAR ARM 7.3, Нужен ELF с конкретными именами секций. Линковщик всё портит!
vitkorob
сообщение Aug 21 2017, 09:08
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 17-08-17
Пользователь №: 98 845



Пишу программу RAM-загрузчик для прошивки флешки непопулярного МК через J-Link Commander или через J-Flash - https://wiki.segger.com/Adding_Support_for_New_Devices

В этой программе надо разделить код в ELF-файле на 3 секции, название которых PrgCode, PrgData, DevDscr. Для этого я написал скрипт линкера (он в листенге ниже). При написании опирался на мануал - https://www.iar.com/support/tech-notes/link...ap-file-v.5.xx/

Код
/*
* Define a memory region that covers the entire 4 GB
* addressible space of the processor.
*/
define memory mem with size = 4G;

/*
* Define a region for the on-chip SRAM
*/
define region RAM_region = mem:[from 0x20000000 to 0x2002FFFF];

/*
* Indicate that the read/write values should be
* initialized by copying from flash.
*/
initialize manually with packing=none { readwrite };

"PrgData":
place in RAM_region { readwrite };

"PrgCode":
place in RAM_region { readonly };

"DevDscr":
place in RAM_region { readonly section DevDscr };


После получения ELF-файла я проверял названия секций утилитой arm-none-eabi-readelf.exe из пакета GNU Tools ARM. К сожалению, я наблюдал, что имена секций МЕНЯЛИСЬ! К секциям приписывался один из суффиксов rw, ro, zi (см. таблицу ниже)

Код
Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 00392c 000000 00      0   0  4
  [ 1] .shstrtab         STRTAB          00000000 00392c 0000e0 00      0   0  4
  [ 2] .strtab           STRTAB          00000000 003a0c 0002a2 00      0   0  4
  [ 3] .symtab           SYMTAB          00000000 003cb0 000330 10      2  37  4
  [ 4] PrgData zi        NOBITS          20000000 000034 00003c 01  WA  0   0  4
  [ 5] PrgCode ro        PROGBITS        2000003c 000034 000100 01  AX  0   0  4
  [ 6] DevDscr ro        PROGBITS        2000013c 000134 0010a0 01   A  0   0  4


Из-за это верхний уровень (J-Link Commander, J-Flash) ломается - не может распарсить ELF-файл, чтобы найти функции прошивки флеша.

Пожалуйста, помогите найти способ предотвратить такой калечение имён секций.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 13:27
Рейтинг@Mail.ru


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