IAR-компилятор, переименование раздела .rodata - PullRequest
0 голосов
/ 10 марта 2020

Я использую IAR Embedded Workbench, рассмотрим следующий C -пример

#pragma default_function_attributes = @"MY_APP";

void func()
{
  printf ("this is a test" );
}

Использование имени раздела "MY_APP" в файле .icf компоновщика, код функции fun c () может быть расположен по указанному c адресу памяти. Но C -компилятор помещает данные только для чтения «это тест» только в раздел «.rodata» (вместе со всеми другими разделами «.rodata» других модулей).

Есть ли похожая #pragma, чтобы переименовать секцию .rodata c -модуля? Я хочу найти данные только для чтения после данных кода соответствующего модуля.

1 Ответ

0 голосов
/ 11 марта 2020

К сожалению, #pragma для размещения данных модуля только для чтения в определенном разделе c нет, но есть и другие способы выполнения sh того, что вы пытаетесь сделать.

Самый простой способ - определить блок в файле конфигурации компоновщика (.icf), содержащий весь код и данные из данного модуля, и разместить этот блок в регионе. Раздельный пример показан ниже:

define memory mem with size = 4G;
define region CODE_region = mem:[from 0x8034 to 0x100000000 - 1];
define block MyApp with alignment = 8 { ro object myapp.o }
"MyApp": place in CODE_region { block MyApp }
...