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

STM32F407 arm-none-eabi-gcc

В проекте на STM32F407 часть секторов флеш использую для хранения данных. Ранее обходился последними секторами, сама программа не так велика, последние сектора остаются не заняты кодом. Сейчас возникла необходимость использовать сектора 2 и 3 как самые маленькие по об'ему. Как запретить линкеру использовать их для размещения кода. Своих знаний недостаточно, к сожалению, а исследования скритпов линкера имеющихся примеров не помогли. Прошу помощи. Linux/Eclipse/arm-none-eabi-gcc 5.3.1

Изменено пользователем nanorobot

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


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

Насколько я помню, линкер gcc не умеет размещать секции в дырявых областях памяти. Остаётся только вариант с двумя областями памяти и в скрипте руками раскидать секции по этим областям.

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


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

Пример. В оригинальный скрипт компоновщика

 

KEEP(*(.isr_vector))
*(.text*)
KEEP(*(.init))
KEEP(*(.fini))

 

Добавляете свою секцию

 

KEEP(*(.isr_vector))

. = ALIGN (512);
*(.flash_var*)
. = ALIGN (512);
*(.flash_var_end*)

*(.text*)
KEEP(*(.init))
KEEP(*(.fini))

 

в ALIGN пишите размер страницы, так у вас начало и конец будут выровнены по страницам. Для контроля смотреть *.sym файл

00000000 a Heap_Size

00000400 a Stack_Size

08000000 T __isr_vector

08000200 t Service::Config::mConfigDataFlashArray <--------------------------------------------

08000600 t __do_global_dtors_aux

08000624 t frame_dummy

0800065c T _mainCRTStartup

 

Саму переменную объявляем с атрибутом, указывающим на используюмую для переменной секцию

uint8_t __attribute__ ((section(".flash_var"))) mConfigDataFlashArray[sizeof(SConfigData_Internal)];

 

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


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

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

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

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

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

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

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

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

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

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