Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: HEX-файл
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
_Артём_
Не удаётся получить рабочий hex-файл от IAR для ATMega128.
При сравнении областей flash в форматах ubrof 8 и intel hex видно, что есть различия и в результате Mega прошитая hex-файлом не работает как надо.

Версия IAR 3.10C.
Dog Pawlowa
Цитата(_Артём_ @ Jun 16 2007, 18:03) *
Не удаётся получить рабочий hex-файл от IAR для ATMega128.
При сравнении областей flash в форматах ubrof 8 и intel hex видно, что есть различия и в результате Mega прошитая hex-файлом не работает как надо.

Версия IAR 3.10C.

Ни разу не замечал такого. Более того, в бутлоадере используется формат Hex, и проблем у меня лично не было. Поэтому и реагирую - не хочется бомбу под кроватью иметь.
Для понимания нужно привязать несовпадающие участки к тексту программы. Можете сделать?
KRS
Так генерацией hex и ubprof файла занимается исключительно xlink.
Компилер здесь абсолютно не причем.
А у вас эти файлы в одном target ( release/debug ...) генерируются? может настройки компилятора разные?
NewMaestro
Парни, раз уж тема зашла, проясните, плз, что вообще из себя представляют эти форматы и чем друг от друга отличаются.

Я с AVR буквально пару раз работал. Первый раз ATmega48. В настройках чисто интуитивно выбирал intel-standart и все работало.
А потом перелез на ATmega88 и тут пошла ругань какая-то... Не помню точно что за эррор был, но разрешилась проблема только тогда когда intel-standart заменил на ubrof 8. Что к чему?
rezident
Цитата(NewMaestro @ Jun 17 2007, 03:38) *
Не помню точно что за эррор был, но разрешилась проблема только тогда когда intel-standart заменил на ubrof 8. Что к чему?

HEX-формат используется для создания прошивки, которую поймет любой мало-мальски нормальный программатор. В ней непосредственно исполняемый код находится. А ubrof это формат файла, предназначенный для отладчика (дебаггера). Если вы пытались в ИАР запустить отладку или симуляцию, выбрав формат Intel-standart вместо ubrof, то неудивительно, что он на это ругался егорами smile.gif
_Артём_
Продолжаем разговор...
Цитата(KRS @ Jun 16 2007, 23:00) *
А у вас эти файлы в одном target ( release/debug ...) генерируются? может настройки компилятора разные?


Да, в одном.


Опишу процес подробней...
1) В настройках проекта Options\XLINK\Output\Output format выбираю формат simple (EEPROM используется, поэтому поставить формат HEX не могу: выдаётся ошибка )
2) Получаю на выходе raw-файл
3) Запускаю bat-файл:
Код
del code.hex
del eeprom.eep
"C:\iar\avr\bin\postlink.exe" -intel-extended -code M_S.raw code.hex
"C:\iar\avr\bin\postlink.exe" -intel-extended -xdata M_S.raw eeprom.eep


Зашиваю программатором - не работает программа.
IceS
В настройках проекта прописываются настройки линкера, сразу генерятся 2 файла HEX - один для Флеша, второй для EEPROM
вот здесь обсуждалось как это сделать:
http://www.fulcrum.ru/cgi-bin/bbs/mess_sel...14608&LID=1
еще были ссылки, сам на том форуме писал, но найти не могу sad.gif


во, нашел:

Цитата
в иаре удобно сделано обращение к EEPROM, как уже писалось выше.
Я делаю так:

объявляем переменную (и)
__eeprom unsigned char ASD=0;

далее в программе можете с ней работать как с обычной переменной
if(ASD > 5) ASD = 0;

но, что бы компиллер сделал файл инициализации для еепрома (такой же как вы создаете для FLASH'а) надо лезть в настройки. в окне проекта выбираем нужную конфигурацию (Debug/Release или какую надо настроить), на файле проекта правой кнопкой мыши => "Options...". Затем в категории выбираем "Linker", вкладка "Extra Options". Ставим галочку "Use command line options" поле ниже становится активным в нем вводим:
-y(CODE)
-Ointel-extended,(XDATA)=$PROJ_DIR$\HEX\eeprom.hex

после компиляции в папке HEX будет файл eeprom.hex который надо прошить в еепром
_Артём_
Спасибо, буду пробовать...
Кстати, вопрос о EEPROM в IAR. При работе с ним, как с переменными, происходит ли запрет прерываний во время чтения/записи в EEPROM?
IceS
Цитата(_Артём_ @ Jul 3 2007, 00:11) *
Спасибо, буду пробовать...
Кстати, вопрос о EEPROM в IAR. При работе с ним, как с переменными, происходит ли запрет прерываний во время чтения/записи в EEPROM?

Только что проверил (компиллятор 4.30А): при чтении из ЕEPROM прерывания не изменяются, на время записи в EEPROM - запрещаются.
SanvaldYV
Цитата(_Артём_ @ Jul 3 2007, 00:11) *
Кстати, вопрос о EEPROM в IAR. При работе с ним, как с переменными, происходит ли запрет прерываний во время чтения/записи в EEPROM?


Так для того чтоб работать с переменными, хранящимися в EEPROM, вам нужно их оттуда сначала прочитать в RAM, выполнить все необходимые операции, и в случае надобности записать обратно. А функции чтения/записи EEPROM самим надо писать, поэтому прерывания запрещать надо самому руками.
IgorKossak
Цитата(Юрий Санвальд @ Jul 6 2007, 16:03) *
А функции чтения/записи EEPROM самим надо писать, поэтому прерывания запрещать надо самому руками.

Совершенно нет необходимости это делать.
IAR замечательно работает с переменными в EEPROM встроенными библиотечными функциями.
При определении/обьявлении таких переменных используется квалификатор __eeprom.

По сути основного вопроса - о правке xcl файла на предмет получения hex файлов для разных областей на этом форуме неоднократно писАлось, воспользуйтесь поиском.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.