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

IAR Linker

Доброго времени суток.

Необходимо разместить секцию во флеш после кода. А адрес этой секции поместить тоже во флеш по фиксированному адресу. Т.е. по фиксированному адресу будет лежать адрес конца прошивки. Делаю вот так:

(IAR 6.10, STM32F103RET6)

 

.icf файл:

define symbol __ICFEDIT_size_vesionaddr__ = 0x04;

define memory mem with size = 4G;
define region ROM_region   = mem:[from __ICFEDIT_region_ROM_start__   to __ICFEDIT_region_ROM_end__];
define region RAM_region   = mem:[from __ICFEDIT_region_RAM_start__   to __ICFEDIT_region_RAM_end__];


// Создаём регион по фиксированному адресу
define region VERADDR_region   = mem:[from __ICFEDIT_region_ROM_start__+0x400 _size __ICFEDIT_size_vesionaddr__];

define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };
define block HEAP      with alignment = 8, size = __ICFEDIT_size_heap__     { };

initialize by copy { readwrite };
do not initialize  { section .noinit };

place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };

place in ROM_region     { readonly, section .versionsection};
place in VERADDR_region { section .versionaddr };
place in RAM_region     { readwrite,
                         block CSTACK, block HEAP };


 

в файле main.c


// Глобальные переменные

#pragma section = ".versionsection"
const char version_full [] @ ".versionsection" = "VERSION 30.05.2011 05:38:40";

#pragma section = ".versionaddr"
const char * version_addr  @ ".versionaddr" = __section_begin(".versionsection");

 

IAR ругается вот такими словами:

Error[Pe028]: expression must have a constant value

на вот эту строку:

const char * version_addr @ ".versionaddr" = __section_begin(".versionsection");

 

Вот не пойму, вроде компилятор должен положить адрес versionsection в секцию versionaddr. А линкер засунет её в созданный для неё регион...

Почему такого не происходит? Заранее спасибо.

 

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


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

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

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

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

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

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

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

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

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

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