Konstantin88 0 11 декабря, 2012 Опубликовано 11 декабря, 2012 (изменено) · Жалоба Подскажите как выделить область во FLASH для кода. Область во FLASH для кода программ имеет адресс с 0х2100 до 0хFFBF. Необходимо чтобы определенная часть кода основной программы располагалась в области с 0x3500-0x44FF. Среда разработки IAR Изменено 11 декабря, 2012 пользователем Konstantin88 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KARLSON 1 11 декабря, 2012 Опубликовано 11 декабря, 2012 (изменено) · Жалоба Если эта часть отдельная функция, то видел однажды через #pragma memory = , пишется перед описанием функции. Но этим задаётся начало размещения. Изменено 11 декабря, 2012 пользователем KARLSON Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 11 декабря, 2012 Опубликовано 11 декабря, 2012 · Жалоба Подскажите как выделить область во 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 0 12 декабря, 2012 Опубликовано 12 декабря, 2012 · Жалоба Саписибо rezident за помощь. С размещение функции и данных в заданной области разобрался. А можно ли взять часть кода из всего кода программы (далее напишу конкретнее) и поместить его в нужно область памяти? Пример кода ниже. Чертачками выделил что надо поместить в определенную область памяти: for (;;) { if (FLAG1) func1 (); //------------------------------------------ if (FLAG2)func2(); ... //какие-то ещё операторы ВОТ ЭТОТ ФРАГМЕНТ ПОМЕСТИТЬ В НУЖНУЮ ОБЛАСТЬ ПАМЯТИ func3(); //------------------------------------------ func4(); } Или же весь фрагмент необходимо будет сделать одной функцией и её уже посметить в нужную область памяти? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 12 декабря, 2012 Опубликовано 12 декабря, 2012 · Жалоба Или же весь фрагмент необходимо будет сделать одной функцией и её уже посметить в нужную область памяти? Да, а функцию квалифицировать как static inline Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться