|
|
  |
Как присоединить файл, IAR ARM |
|
|
|
Dec 18 2006, 18:35
|

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

|
Из Вашего вопроса непонятно, что из себя представляет файл *.dat. Если данные у Вас в бинарном виде, то я когда-то делал досовскую программку, бинарник перегонял в исходник на С. на его основе, если не лень, сделаете, что Вам надо. см. INCL.RAR
Прикрепленные файлы
INCL.RAR ( 8.02 килобайт )
Кол-во скачиваний: 53
--------------------
Если зайца бить, его можно и спички научить зажигать Сколько дурака не бей - умнее не будет. Зато опытнее
|
|
|
|
|
Jan 22 2008, 09:00
|
Местный
  
Группа: Свой
Сообщений: 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=
--------------------
Всегда не хватает времени, чтобы выполнить работу как надо, но на то, чтобы ее переделать, время находится. (Закон Мескимена.)
|
|
|
|
|
Jan 22 2008, 09:14
|
Знающий
   
Группа: 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() для получения начала и размера секции
|
|
|
|
|
Jan 22 2008, 10:54
|

Шаман
     
Группа: Модераторы
Сообщений: 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 по моему мнению более логичен и понятен.
|
|
|
|
|
Jan 23 2008, 05:46
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

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