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

 
 
> HEX-файл
_Артём_
сообщение Jun 16 2007, 15:03
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Не удаётся получить рабочий hex-файл от IAR для ATMega128.
При сравнении областей flash в форматах ubrof 8 и intel hex видно, что есть различия и в результате Mega прошитая hex-файлом не работает как надо.

Версия IAR 3.10C.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 10)
Dog Pawlowa
сообщение Jun 16 2007, 18:42
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



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

Версия IAR 3.10C.

Ни разу не замечал такого. Более того, в бутлоадере используется формат Hex, и проблем у меня лично не было. Поэтому и реагирую - не хочется бомбу под кроватью иметь.
Для понимания нужно привязать несовпадающие участки к тексту программы. Можете сделать?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
KRS
сообщение Jun 16 2007, 20:00
Сообщение #3


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Так генерацией hex и ubprof файла занимается исключительно xlink.
Компилер здесь абсолютно не причем.
А у вас эти файлы в одном target ( release/debug ...) генерируются? может настройки компилятора разные?
Go to the top of the page
 
+Quote Post
NewMaestro
сообщение Jun 16 2007, 21:38
Сообщение #4


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

Группа: Свой
Сообщений: 76
Регистрация: 17-03-07
Из: Минск
Пользователь №: 26 243



Парни, раз уж тема зашла, проясните, плз, что вообще из себя представляют эти форматы и чем друг от друга отличаются.

Я с AVR буквально пару раз работал. Первый раз ATmega48. В настройках чисто интуитивно выбирал intel-standart и все работало.
А потом перелез на ATmega88 и тут пошла ругань какая-то... Не помню точно что за эррор был, но разрешилась проблема только тогда когда intel-standart заменил на ubrof 8. Что к чему?
Go to the top of the page
 
+Quote Post
rezident
сообщение Jun 16 2007, 22:20
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(NewMaestro @ Jun 17 2007, 03:38) *
Не помню точно что за эррор был, но разрешилась проблема только тогда когда intel-standart заменил на ubrof 8. Что к чему?

HEX-формат используется для создания прошивки, которую поймет любой мало-мальски нормальный программатор. В ней непосредственно исполняемый код находится. А ubrof это формат файла, предназначенный для отладчика (дебаггера). Если вы пытались в ИАР запустить отладку или симуляцию, выбрав формат Intel-standart вместо ubrof, то неудивительно, что он на это ругался егорами smile.gif
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jul 2 2007, 17:42
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Продолжаем разговор...
Цитата(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


Зашиваю программатором - не работает программа.
Go to the top of the page
 
+Quote Post
IceS
сообщение Jul 2 2007, 19:57
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 43
Регистрация: 17-10-06
Из: Санкт Петербург
Пользователь №: 21 387



В настройках проекта прописываются настройки линкера, сразу генерятся 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 который надо прошить в еепром


Сообщение отредактировал IceS - Jul 2 2007, 20:01
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jul 2 2007, 20:11
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Спасибо, буду пробовать...
Кстати, вопрос о EEPROM в IAR. При работе с ним, как с переменными, происходит ли запрет прерываний во время чтения/записи в EEPROM?
Go to the top of the page
 
+Quote Post
IceS
сообщение Jul 2 2007, 22:41
Сообщение #9


Участник
*

Группа: Свой
Сообщений: 43
Регистрация: 17-10-06
Из: Санкт Петербург
Пользователь №: 21 387



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

Только что проверил (компиллятор 4.30А): при чтении из ЕEPROM прерывания не изменяются, на время записи в EEPROM - запрещаются.

Сообщение отредактировал IceS - Jul 2 2007, 22:42
Go to the top of the page
 
+Quote Post
SanvaldYV
сообщение Jul 6 2007, 13:03
Сообщение #10


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

Группа: Свой
Сообщений: 125
Регистрация: 21-03-07
Из: Санкт-Петербург
Пользователь №: 26 371



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


Так для того чтоб работать с переменными, хранящимися в EEPROM, вам нужно их оттуда сначала прочитать в RAM, выполнить все необходимые операции, и в случае надобности записать обратно. А функции чтения/записи EEPROM самим надо писать, поэтому прерывания запрещать надо самому руками.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 8 2007, 20:59
Сообщение #11


Шаман
******

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



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

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

По сути основного вопроса - о правке xcl файла на предмет получения hex файлов для разных областей на этом форуме неоднократно писАлось, воспользуйтесь поиском.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 05:49
Рейтинг@Mail.ru


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