Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как присоединить файл
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
MALLOY2
Есть обычный файл с данными, как его присоединить к IAR ARM чтобы он разместился во флеше по определенному адресу.


#Pragma location = 0xAAAAAA;
const filedata =
{
#include "file.dat";
};
Такая конструкция не катит, так как требует форматирования файла.
P.S. так нужно прикрепить 6 файлов.


Как его прикрутить чтобы не формактировать файл ?
jack_avenger
Поищите в Гугле прогу bin2hex для конвертации
VAI
Из Вашего вопроса непонятно, что из себя представляет файл *.dat.
Если данные у Вас в бинарном виде, то я когда-то делал досовскую программку, бинарник перегонял в исходник на С.
на его основе, если не лень, сделаете, что Вам надо.
см. INCL.RAR
MALLOY2
я же говорю без форматирования так и я могу! ну всеравно спасибо я уже разобрался все очень просто расказываю.


в линкер файле пишем
--image_input=fpga.rbf,FPGA_DATA,CODE,4

где FPGA_DATA - символ, CODE - секция куда положить, 4 - это вырвнивание


в проге пишу

extern const unsigned char FPGA_DATA[];

и все.
Panych
Попытался так прицепить прошивку для Tiny и не вышло... Пытаюсь запрограммировать с Mega.
При линковании кода программируемого устройства прописал в Extra Option:
Код
-Ompds-code,(CODE)=Z:\AVR_Project\Humidity_Work_Code.bin


Несколько скорректировал родной файл .xcl, изменив 1 строку и вставив 2:
Код
-Z(CODE)CODE,EXTCODE1,EXTCODE2=_..X_INTVEC_SIZE-_..X_FLASH_END        // измененная
--image_input=Z:\AVR_Project\Humidity_Work_Code.bin,bin_code_1,EXTCODE1,1 // вставленная в конец
--image_input=Z:\AVR_Project\Humidity_Debug_Code.bin,bin_code_2,EXTCODE2,1 // вставленная в конец
в коде программы прописано следующее:
Код
unsigned short bn = 0;
extern char bin_code_1[];
extern char bin_code_2[];
...
temp = bin_code_2[ bn ];
...
bn перебирается в диапазоне 0...2047

В результате пишется не то, что в бинарнике. Код в бинарнике небольшой, 126 байт, остальное занимают 0х00, но память программируемого устройства оказывается заполненной полностью какими-то символами.
Если записывать в память не из бинарника, то что пишем - то и считываем программатором.
Чего я недопонимаю?


Попробовал выводить на дисплей первые значения массива bin_code_2 - не соответствуют тому, что вижу при просмотре бинарника...

Ответ найден:
В программе надо объявлять как "extern __flash unsigned char"
Тема, которая помогла:
http://electronix.ru/forum/index.php?showtopic=18042&hl=
MALLOY2
Если у вас старый ИАР тобиш с старым линкером (.xcl) то в экстра опция ничего не надо писать.
Пишите прямо в линкер-файле

Создатим сегмент для вашей прошивки
Код
/************ SEGMENT ******************/
-Z(CODE)BOOT_DATA =ROMSTART-ROMEND



/**************** Линкуем образ к проекту ******/
Код
--image_input=Z:\AVR_Project\Humidity_Work_Code.bin,bin_code_1,BOOT_DATA,2
-gbin_code_1                                    <-------------- чтобы оптимизатор не выкинул


Получаем указатель на данные
Код
{
cahr *ptr;
ptr = (char*)bin_code_1;
}


должно быть примерно так.
Еще можно восползоваться макросами __section_begin(), __section_end() для получения начала и размера секции
IgorKossak
Цитата(MALLOY2 @ Jan 22 2008, 11:14) *
Код
--image_input=Z:\AVR_Project\Humidity_Work_Code.bin,bin_code_1,BOOT_DATA,2
-gbin_code_1                                    <-------------- чтобы оптимизатор не выкинул


Получаем указатель на данные
Код
{
cahr *ptr;
ptr = (char*)bin_code_1;
}

Обьект, на который указывает bin_code_1 находится во flash, поэтому и указатель должен быть на ту область
Код
{
char __flash*ptr;
ptr = (char __flash*)bin_code_1;
}
или
Код
{
char __farflash*ptr;
ptr = (char __farflash*)bin_code_1;
}
в зависимости от МК.
PS К ARM и другим МК с единым адресным пространством это не относится. Это сообщение больше относится к AVR, где это имеет принципиальное значение.
PPS Вариант с extern вместо указания линкеру -gbin_code_1 по моему мнению более логичен и понятен.
alexander55
Цитата(MALLOY2 @ Dec 18 2006, 22:07) *

Насколько я понял, Вы решили сэкономить на епромине для FPGA.
Вопрос для моего самообразования. Что это дает ?
MALLOY2
Цитата(alexander55 @ Jan 22 2008, 18:22) *
Насколько я понял, Вы решили сэкономить на епромине для FPGA.
Вопрос для моего самообразования. Что это дает ?

Вы же сами и ответели экономию. smile.gif
zltigo
Цитата(alexander55 @ Jan 22 2008, 16:22) *
Вопрос для моего самообразования. Что это дает ?

При нормальных контроллерах с приличным набортным FLASH это приводит к исключению нахрен не нужного элемента (вместе с его стоимостью и занимаемым местом), подкотрольному процессу загрузки, возможности иметь несколько вариантов загрузки FPGA, возможности дистанционного обновления и добавления некоторого дополнительного неудобства для желающих скопировать.
alexander55
Цитата(zltigo @ Jan 23 2008, 02:47) *
При нормальных контроллерах с приличным набортным FLASH это приводит к исключению нахрен не нужного элемента (вместе с его стоимостью и занимаемым местом), подкотрольному процессу загрузки,

Это понятно.

Цитата(zltigo @ Jan 23 2008, 02:47) *
возможности иметь несколько вариантов загрузки FPGA, возможности дистанционного обновления и добавления некоторого дополнительного неудобства для желающих скопировать.

А это уже интересно. a14.gif
PS. Дополню от себя. Программирование за один раз.
zltigo
Цитата(alexander55 @ Jan 23 2008, 07:46) *
PS. Дополню от себя. Программирование за один раз.

Этим не пользуюсь - в моих уловиях много удобнее обновлять прошику по частям, ибо некоторые части прошивок индивидуальны и собирать/посылать все зараз верный путь к ошибкам.... Но в общем случае - да и одним махом и одним программатором....
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.