Компилятор IAR, переименование раздела .rodata

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

#pragma default_function_attributes = @"MY_APP";

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

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

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


person cubus53    schedule 10.03.2020    source источник


Ответы (1)


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

Самый простой способ - определить блок в файле конфигурации компоновщика (.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 }
person Johan    schedule 11.03.2020