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

 
 
 
Reply to this topicStart new topic
> IAR генерит .hex файл с ошибкой, AVR Studio невоспринимает .hex сгенерированный IAR
OLEG_BOS
сообщение Jul 6 2006, 11:56
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 386
Регистрация: 1-12-05
Пользователь №: 11 639



Ситуация следующая:
Написал пробную программу на С, в IAR 4.20A, для тестирования USART для Atmega8. Программа выдает строку в USART. Подключил файл .hex (формат Intel - extended) из папки Release проекта IAR в Proteus 6.9.04 для тестирования в виртуальном терминале. Реакции на то что программа работает - ноль. Состояние регистров USART :UCSRA 0x000B 0b00100000
UCSRC 0x0020 0b00000000 UCSRB 0x000A 0b00000000, что говорит о том что даже непрошла инициализация USART. И конечно же никаких прериваний от него и ожидать нестоит.
Другая картина наблюдается когда я подключаю ubrof 8(forsed) файл того же проекта из папки Debug. Все работает как и положенно. в реальном железе тот же файл .hex работает но только наполовину: выдается только первая буква из строки.
В конце концов решил подключить файл .hex для его дизасcемблирования и пошаговой отладки в AVR Studio 4.12. В итоге получаю такое сообщение: sad.gif

Coordinator: An error occured while reading the object file. The file may be of wrong type or corrupted, or the object file reader is not up to date.
Error loading object file J:\TestRS232\Release\Exe\TestRS232.hex

Мои попытки подсунуть AVR Studio вместо .hex (Intel - extended) .hex (Intel - standart) - увенчались тем же сообщением об ошибке. Хотя я в этом случае все понятно, так как в описании поддержки форматов в AVR Studio значится Intel - extended.

Так почему же AVR Studio непонимает сгенерированного файла .hex IAR, симулятор Proteus 6.9.04 - его не запускает в работу, реальное железо выполняет его неправильно ? Все сводится к логическому заключению : IAR 4.20A генерит .hex файл с ошибкой. Попытки компиляции в IAR 4.12A - привели к тому же результату. Перечитал документацию на компилятор IAR - там скудная информация по поддерживаемым форматам.. sad.gif

В итоге незнаю что делать. Сталкивался ли кто-то с подобным явлением ? Есть ли у кого -то идеи как мне решить подобную проблему. Заранее буду благодарен за Ваши советы. Файл исходник прикрепляю к письму.
Прикрепленные файлы
Прикрепленный файл  TestRS232.zip ( 38.08 килобайт ) Кол-во скачиваний: 117
 
Go to the top of the page
 
+Quote Post
ILYCHOFF
сообщение Jul 6 2006, 12:50
Сообщение #2


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

Группа: Свой
Сообщений: 78
Регистрация: 5-07-05
Из: Великий Новгород
Пользователь №: 6 536



Наблюдал тоже самое, пришлось переставить IAR поставил 4.11 все нормально.
Я пробовал один и тот же исходник компилировать в 20 версии и в 11 версии, после 20 протеус не принимает прошивку, железо тоже не работает (шью понипрогом МК ATMega16), а после 11 работает все и протеус и железо....
Причину не нашел...
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 6 2006, 12:53
Сообщение #3


Шаман
******

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



Для пошаговой отладки по ассемблерному тексту вовсе не обязателно грузить в AVRStudio hex файл.
Достаточно загрузить отладочный файл в формате ubrof8 и открыть окно View/Disassembler.
Go to the top of the page
 
+Quote Post
OLEG_BOS
сообщение Jul 6 2006, 13:09
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 386
Регистрация: 1-12-05
Пользователь №: 11 639



Цитата(IgorKossak @ Jul 6 2006, 15:53) *
Для пошаговой отладки по ассемблерному тексту вовсе не обязателно грузить в AVRStudio hex файл.
Достаточно загрузить отладочный файл в формате ubrof8 и открыть окно View/Disassembler.


Уважаемый IgorKossak, неужели Вы думаете что я просто из академического интереса пишу программу ?wink.gif И как мне потом зашыть этот ubrof8 в Atmega8 ? wink.gif

Как я уже писал выше : "Другая картина наблюдается когда я подключаю ubrof 8(forsed) файл того же проекта из папки Debug. Все работает как и положенно. в реальном железе тот же файл .hex работает но только наполовину: выдается только первая буква из строки."
ubrof 8(forsed) - я подключал в Proteus 6.9.04. Там все работает как и задумывалось по алгоритму программы: на виртуальный терминал выдается строка полностью.

Если Вам нетрудно, пожалуйста посмотрите код. Может там что-то нетак. Заранее Вам благодарен. smile.gif
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 6 2006, 15:27
Сообщение #5


Шаман
******

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



Посмотрел проект, сразу бросилось следующее:
1. Options/General Options/Target/Memory model - поставьте Small (8 кБайт кода) вместо Tiny (256 байт кода)
2. .../Linker/Extra options - уберите опцию -y(CODE)
3. там же опция -Ointel-extended,(DATA)=$EXE_DIR$\$PROJ_FNAME$_data.hex бессмысленна, тоже уберите или вместо неё вставьте -Ointel-extended,(CODE)=$EXE_DIR$\$PROJ_FNAME$_code.hex
4. увеличьте размер стека данных для начала вдвое, если заработает и будет нехватка памяти, тогда будете постепенно уменьшать

С самой прогой пока не сильно разбирался, но для начала попробуйте упростить, лишьбы заработала.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 6 2006, 15:51
Сообщение #6


Шаман
******

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



Что касается AVRStudio и hex файлов, то удалось выяснить следующее.
В файле, сгенерированом IARом, вторая снизу строка содержит команду 03
Код
:0400000300000000F9
удалите эту строку и всё пойдёт.
AVRStudio ещё не научилась распознавать эту команду wink.gif
Go to the top of the page
 
+Quote Post
OLEG_BOS
сообщение Jul 7 2006, 12:08
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 386
Регистрация: 1-12-05
Пользователь №: 11 639



Спасибо, Уважаемый IgorKossak ! smile.gif Все сделал по вашим рекомендациям. Окончательно все пошло только тогда, когда убрал строку :0400000300000000F9 в .hex - файле. Программа заработала и AVRStudio и в реальном железе. Только никак немогу понять: в чем собственно суть проблемы ? Кого винить: IAR, который формирует команды которые неизвестны ф. Atmel или Atmel, который незнает что IAR для их контоллеров формирует неподдерживаемые команды.
Уважаемый IgorKossak, откройте пожалуйста секрет "шаманства" с выше упомянутой строкой в файле .hex, дабы избежать в последующем таких неприятных явлений. Буду Вам очень признателен. smile.gif
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 7 2006, 12:23
Сообщение #8


Шаман
******

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



Думаю врядли стоит винить IAR в том, что они решили следовать стандарту (Команда 03 означает точку старта программы, в данном случае 0x0000).
Когда я как и Вы впервые столкнулся с подобным сообщением, стал разбираться с форматом intel-hex.
Кстати, нашёл ещё одну вещь - не всякая программа, принимающая hex файл правильно понимает пустые строки.
Как говорится, век живи, век учись.
Go to the top of the page
 
+Quote Post
OLEG_BOS
сообщение Jul 7 2006, 13:17
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 386
Регистрация: 1-12-05
Пользователь №: 11 639



Цитата(IgorKossak @ Jul 7 2006, 15:23) *
Думаю врядли стоит винить IAR в том, что они решили следовать стандарту (Команда 03 означает точку старта программы, в данном случае 0x0000).
Когда я как и Вы впервые столкнулся с подобным сообщением, стал разбираться с форматом intel-hex.
Кстати, нашёл ещё одну вещь - не всякая программа, принимающая hex файл правильно понимает пустые строки.
Как говорится, век живи, век учись.

Хм...интересная получается ситуация. Если программа для программатора не следует стандарту, то получается, что и данные для контроллера шьются неверно. И в итоге имеем такую ситуацию, которая наблюдалась и у меня.
Да совершенно с Вами согласен: "век живи - век учись !"
Какие Вы можете дать рекомендации дабы избежать подобного. Неужто все время следует удалять эту строку ?
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 7 2006, 13:56
Сообщение #10


Шаман
******

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



Цитата(OLEG_BOS @ Jul 7 2006, 16:17) *
Неужто все время следует удалять эту строку ?

Для начала следует проверить реакцию программатора на эту строку.
Возможно он её просто проигнорирует. Проверить можно так: записать файл с проблемной строкой, а верифицировать с файлом без оной.
Если не получится, то никуда уже не деться, придётся удалять вручную.
Go to the top of the page
 
+Quote Post
Atashi
сообщение Jul 12 2006, 22:04
Сообщение #11


Участник
*

Группа: Новичок
Сообщений: 66
Регистрация: 30-04-05
Пользователь №: 4 630



Cпасибо, IgorKossak, у меня была аналогичная проблема в 4.12 для бегущей строки. все решилось при учете Ваших рекомендаций.
Go to the top of the page
 
+Quote Post
Schtirlitz
сообщение Aug 13 2007, 17:59
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 7-02-06
Из: Москва
Пользователь №: 14 070



Ставим в настройках линкера IAR -
Format Variant: 32bit linear without entry point
после этого AVRстудия начинает проглатывать HEX файл из IARa.
Go to the top of the page
 
+Quote Post
Александр Куличо...
сообщение Aug 17 2007, 07:53
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



Цитата(OLEG_BOS @ Jul 6 2006, 16:09) *
Уважаемый IgorKossak, неужели Вы думаете что я просто из академического интереса пишу программу ?wink.gif И как мне потом зашыть этот ubrof8 в Atmega8 ? wink.gif


При программированиии выставить опцию "Use Current Simulator/Emulator FLASH Memmory"
Go to the top of the page
 
+Quote Post
sKWO
сообщение Aug 20 2007, 20:43
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



Цитата(Александр Куличок @ Aug 17 2007, 11:53) *
При программированиии выставить опцию "Use Current Simulator/Emulator FLASH Memmory"

Александр, а где эта опция выставляется? У меня ИАР вер. 3.10А и 4.30А для АВР и нигде не видел её!
как и настройки линкера -- Format Variant: 32bit linear without entry point. -- но это уже не к Вам
С уважением


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post
Schtirlitz
сообщение Aug 24 2007, 14:08
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 7-02-06
Из: Москва
Пользователь №: 14 070



Цитата(sKWO @ Aug 21 2007, 00:43) *
Александр, а где эта опция выставляется? У меня ИАР вер. 3.10А и 4.30А для АВР и нигде не видел её!
как и настройки линкера -- Format Variant: 32bit linear without entry point. -- но это уже не к Вам
С уважением


Смотрите вложение.
Прикрепленное изображение


Сообщение отредактировал Schtirlitz - Aug 24 2007, 14:13
Go to the top of the page
 
+Quote Post

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

 


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


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