реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Как присоединить файл, IAR ARM
MALLOY2
сообщение Dec 18 2006, 16:43
Сообщение #1


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Есть обычный файл с данными, как его присоединить к IAR ARM чтобы он разместился во флеше по определенному адресу.


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


Как его прикрутить чтобы не формактировать файл ?
Go to the top of the page
 
+Quote Post
jack_avenger
сообщение Dec 18 2006, 18:01
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 170
Регистрация: 30-06-05
Из: Киев
Пользователь №: 6 426



Поищите в Гугле прогу bin2hex для конвертации
Go to the top of the page
 
+Quote Post
VAI
сообщение Dec 18 2006, 18:35
Сообщение #3


Профессионал
*****

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



Из Вашего вопроса непонятно, что из себя представляет файл *.dat.
Если данные у Вас в бинарном виде, то я когда-то делал досовскую программку, бинарник перегонял в исходник на С.
на его основе, если не лень, сделаете, что Вам надо.
см. INCL.RAR
Прикрепленные файлы
Прикрепленный файл  INCL.RAR ( 8.02 килобайт ) Кол-во скачиваний: 53
 


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Dec 18 2006, 19:07
Сообщение #4


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



я же говорю без форматирования так и я могу! ну всеравно спасибо я уже разобрался все очень просто расказываю.


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

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


в проге пишу

extern const unsigned char FPGA_DATA[];

и все.
Go to the top of the page
 
+Quote Post
Panych
сообщение Jan 22 2008, 09:00
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 335
Регистрация: 17-06-04
Из: Москва
Пользователь №: 35



Попытался так прицепить прошивку для 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=


--------------------
Всегда не хватает времени, чтобы выполнить работу как надо, но на то, чтобы ее переделать, время находится. (Закон Мескимена.)
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Jan 22 2008, 09:14
Сообщение #6


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Если у вас старый ИАР тобиш с старым линкером (.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() для получения начала и размера секции
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jan 22 2008, 10:54
Сообщение #7


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(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 по моему мнению более логичен и понятен.
Go to the top of the page
 
+Quote Post
alexander55
сообщение Jan 22 2008, 14:22
Сообщение #8


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(MALLOY2 @ Dec 18 2006, 22:07) *

Насколько я понял, Вы решили сэкономить на епромине для FPGA.
Вопрос для моего самообразования. Что это дает ?
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Jan 22 2008, 22:30
Сообщение #9


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



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

Вы же сами и ответели экономию. smile.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 22 2008, 23:47
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



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

При нормальных контроллерах с приличным набортным FLASH это приводит к исключению нахрен не нужного элемента (вместе с его стоимостью и занимаемым местом), подкотрольному процессу загрузки, возможности иметь несколько вариантов загрузки FPGA, возможности дистанционного обновления и добавления некоторого дополнительного неудобства для желающих скопировать.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
alexander55
сообщение Jan 23 2008, 05:46
Сообщение #11


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



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

Это понятно.

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

А это уже интересно. a14.gif
PS. Дополню от себя. Программирование за один раз.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 23 2008, 08:47
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



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

Этим не пользуюсь - в моих уловиях много удобнее обновлять прошику по частям, ибо некоторые части прошивок индивидуальны и собирать/посылать все зараз верный путь к ошибкам.... Но в общем случае - да и одним махом и одним программатором....


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 14:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01456 секунд с 7
ELECTRONIX ©2004-2016