Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как выделить во FLASH область для кода программы?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
Konstantin88
Подскажите как выделить область во FLASH для кода. Область во FLASH для кода программ имеет адресс с 0х2100 до 0хFFBF. Необходимо чтобы определенная часть кода основной программы располагалась в области с 0x3500-0x44FF.

Среда разработки IAR
KARLSON
Если эта часть отдельная функция, то видел однажды через #pragma memory = , пишется перед описанием функции. Но этим задаётся начало размещения.
rezident
Цитата(Konstantin88 @ Dec 11 2012, 11:54) *
Подскажите как выделить область во FLASH для кода. Область во FLASH для кода программ имеет адресс с 0х2100 до 0хFFBF. Необходимо чтобы определенная часть кода основной программы располагалась в области с 0x3500-0x44FF.

Среда разработки IAR

Во-первых, нужно выделить сегмент для этого, отредактировав xcl-файл. Копируете типовой xcl-файл из папки IAR ( <IAR_path>\430\config\ ) к себе в проект и в опциях проекта указываете путь до него. Project->Options->Linker->Config->Linker configuration file. В самом xcl-файле
редактируете секцию

-Z(CODE)CODE=0х2100-0хFFBF

таким образом

-Z(CODE)CODE=0х2100-0x34FF, 0x4500-0хFFBF

и создаете свою секцию с указанными адресами (желательно всегда выбирать адреса, с начала сектора и кратные размеру сектора Flash)

-Z(CODE)MY_CODE=0x3500-0x44FF

В исходнике же с помощью

#pragma location=MY_CODE

указываете место размещаения вашей функции(ий) в выделенном сегменте.
Более подробно читайте в хелпе IAR - С/С++ Compiler Reference Guide.

P.S. я подразумевал что вам нужно выделение под код программы, если же вы имел в виду выделение под код данных, то редактировать нужно описание другой секции xcl-файла.
Konstantin88
Саписибо rezident за помощь. С размещение функции и данных в заданной области разобрался. А можно ли взять часть кода из всего кода программы (далее напишу конкретнее) и поместить его в нужно область памяти? Пример кода ниже. Чертачками выделил что надо поместить в определенную область памяти:

for (;;)
{
if (FLAG1) func1 ();
//------------------------------------------
if (FLAG2)func2();
... //какие-то ещё операторы ВОТ ЭТОТ ФРАГМЕНТ ПОМЕСТИТЬ В НУЖНУЮ ОБЛАСТЬ ПАМЯТИ
func3();
//------------------------------------------
func4();
}

Или же весь фрагмент необходимо будет сделать одной функцией и её уже посметить в нужную область памяти?
MrYuran
Цитата(Konstantin88 @ Dec 12 2012, 09:13) *
Или же весь фрагмент необходимо будет сделать одной функцией и её уже посметить в нужную область памяти?

Да, а функцию квалифицировать как static inline
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.