Jump to content

    
Sign in to follow this  
Konstantin88

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

Recommended Posts

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

 

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

Edited by Konstantin88

Share this post


Link to post
Share on other sites

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

Edited by KARLSON

Share this post


Link to post
Share on other sites
Подскажите как выделить область во 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-файла.

Share this post


Link to post
Share on other sites

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

 

for (;;)

{

if (FLAG1) func1 ();

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

if (FLAG2)func2();

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

func3();

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

func4();

}

 

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

Share this post


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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this