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

Как выделить во FLASH область для кода программы?

Подскажите как выделить область во FLASH для кода. Область во FLASH для кода программ имеет адресс с 0х2100 до 0хFFBF. Необходимо чтобы определенная часть кода основной программы располагалась в области с 0x3500-0x44FF.

 

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

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

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


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

Если эта часть отдельная функция, то видел однажды через #pragma memory = , пишется перед описанием функции. Но этим задаётся начало размещения.

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

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


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

Подскажите как выделить область во 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-файла.

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


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

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

 

for (;;)

{

if (FLAG1) func1 ();

//------------------------------------------

if (FLAG2)func2();

... //какие-то ещё операторы ВОТ ЭТОТ ФРАГМЕНТ ПОМЕСТИТЬ В НУЖНУЮ ОБЛАСТЬ ПАМЯТИ

func3();

//------------------------------------------

func4();

}

 

Или же весь фрагмент необходимо будет сделать одной функцией и её уже посметить в нужную область памяти?

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


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

Или же весь фрагмент необходимо будет сделать одной функцией и её уже посметить в нужную область памяти?

Да, а функцию квалифицировать как static inline

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


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

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

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

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

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

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

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

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

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

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