BOS 1 6 июля, 2006 Опубликовано 6 июля, 2006 · Жалоба Ситуация следующая: Написал пробную программу на С, в 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. В итоге получаю такое сообщение: :( 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 - там скудная информация по поддерживаемым форматам.. :( В итоге незнаю что делать. Сталкивался ли кто-то с подобным явлением ? Есть ли у кого -то идеи как мне решить подобную проблему. Заранее буду благодарен за Ваши советы. Файл исходник прикрепляю к письму. TestRS232.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYCHOFF 0 6 июля, 2006 Опубликовано 6 июля, 2006 · Жалоба Наблюдал тоже самое, пришлось переставить IAR поставил 4.11 все нормально. Я пробовал один и тот же исходник компилировать в 20 версии и в 11 версии, после 20 протеус не принимает прошивку, железо тоже не работает (шью понипрогом МК ATMega16), а после 11 работает все и протеус и железо.... Причину не нашел... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 6 июля, 2006 Опубликовано 6 июля, 2006 · Жалоба Для пошаговой отладки по ассемблерному тексту вовсе не обязателно грузить в AVRStudio hex файл. Достаточно загрузить отладочный файл в формате ubrof8 и открыть окно View/Disassembler. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BOS 1 6 июля, 2006 Опубликовано 6 июля, 2006 · Жалоба Для пошаговой отладки по ассемблерному тексту вовсе не обязателно грузить в AVRStudio hex файл. Достаточно загрузить отладочный файл в формате ubrof8 и открыть окно View/Disassembler. Уважаемый IgorKossak, неужели Вы думаете что я просто из академического интереса пишу программу ?;) И как мне потом зашыть этот ubrof8 в Atmega8 ? ;) Как я уже писал выше : "Другая картина наблюдается когда я подключаю ubrof 8(forsed) файл того же проекта из папки Debug. Все работает как и положенно. в реальном железе тот же файл .hex работает но только наполовину: выдается только первая буква из строки." ubrof 8(forsed) - я подключал в Proteus 6.9.04. Там все работает как и задумывалось по алгоритму программы: на виртуальный терминал выдается строка полностью. Если Вам нетрудно, пожалуйста посмотрите код. Может там что-то нетак. Заранее Вам благодарен. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 6 июля, 2006 Опубликовано 6 июля, 2006 · Жалоба Посмотрел проект, сразу бросилось следующее: 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. увеличьте размер стека данных для начала вдвое, если заработает и будет нехватка памяти, тогда будете постепенно уменьшать С самой прогой пока не сильно разбирался, но для начала попробуйте упростить, лишьбы заработала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 6 июля, 2006 Опубликовано 6 июля, 2006 · Жалоба Что касается AVRStudio и hex файлов, то удалось выяснить следующее. В файле, сгенерированом IARом, вторая снизу строка содержит команду 03 :0400000300000000F9 удалите эту строку и всё пойдёт. AVRStudio ещё не научилась распознавать эту команду ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BOS 1 7 июля, 2006 Опубликовано 7 июля, 2006 · Жалоба Спасибо, Уважаемый IgorKossak ! :) Все сделал по вашим рекомендациям. Окончательно все пошло только тогда, когда убрал строку :0400000300000000F9 в .hex - файле. Программа заработала и AVRStudio и в реальном железе. Только никак немогу понять: в чем собственно суть проблемы ? Кого винить: IAR, который формирует команды которые неизвестны ф. Atmel или Atmel, который незнает что IAR для их контоллеров формирует неподдерживаемые команды. Уважаемый IgorKossak, откройте пожалуйста секрет "шаманства" с выше упомянутой строкой в файле .hex, дабы избежать в последующем таких неприятных явлений. Буду Вам очень признателен. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 7 июля, 2006 Опубликовано 7 июля, 2006 · Жалоба Думаю врядли стоит винить IAR в том, что они решили следовать стандарту (Команда 03 означает точку старта программы, в данном случае 0x0000). Когда я как и Вы впервые столкнулся с подобным сообщением, стал разбираться с форматом intel-hex. Кстати, нашёл ещё одну вещь - не всякая программа, принимающая hex файл правильно понимает пустые строки. Как говорится, век живи, век учись. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BOS 1 7 июля, 2006 Опубликовано 7 июля, 2006 · Жалоба Думаю врядли стоит винить IAR в том, что они решили следовать стандарту (Команда 03 означает точку старта программы, в данном случае 0x0000). Когда я как и Вы впервые столкнулся с подобным сообщением, стал разбираться с форматом intel-hex. Кстати, нашёл ещё одну вещь - не всякая программа, принимающая hex файл правильно понимает пустые строки. Как говорится, век живи, век учись. Хм...интересная получается ситуация. Если программа для программатора не следует стандарту, то получается, что и данные для контроллера шьются неверно. И в итоге имеем такую ситуацию, которая наблюдалась и у меня. Да совершенно с Вами согласен: "век живи - век учись !" Какие Вы можете дать рекомендации дабы избежать подобного. Неужто все время следует удалять эту строку ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 7 июля, 2006 Опубликовано 7 июля, 2006 · Жалоба Неужто все время следует удалять эту строку ? Для начала следует проверить реакцию программатора на эту строку. Возможно он её просто проигнорирует. Проверить можно так: записать файл с проблемной строкой, а верифицировать с файлом без оной. Если не получится, то никуда уже не деться, придётся удалять вручную. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Atashi 0 12 июля, 2006 Опубликовано 12 июля, 2006 · Жалоба Cпасибо, IgorKossak, у меня была аналогичная проблема в 4.12 для бегущей строки. все решилось при учете Ваших рекомендаций. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Schtirlitz 0 13 августа, 2007 Опубликовано 13 августа, 2007 · Жалоба Ставим в настройках линкера IAR - Format Variant: 32bit linear without entry point после этого AVRстудия начинает проглатывать HEX файл из IARa. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kool 0 17 августа, 2007 Опубликовано 17 августа, 2007 · Жалоба Уважаемый IgorKossak, неужели Вы думаете что я просто из академического интереса пишу программу ?;) И как мне потом зашыть этот ubrof8 в Atmega8 ? ;) При программированиии выставить опцию "Use Current Simulator/Emulator FLASH Memmory" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sKWO 0 20 августа, 2007 Опубликовано 20 августа, 2007 · Жалоба При программированиии выставить опцию "Use Current Simulator/Emulator FLASH Memmory" Александр, а где эта опция выставляется? У меня ИАР вер. 3.10А и 4.30А для АВР и нигде не видел её! как и настройки линкера -- Format Variant: 32bit linear without entry point. -- но это уже не к Вам С уважением Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Schtirlitz 0 24 августа, 2007 Опубликовано 24 августа, 2007 (изменено) · Жалоба Александр, а где эта опция выставляется? У меня ИАР вер. 3.10А и 4.30А для АВР и нигде не видел её! как и настройки линкера -- Format Variant: 32bit linear without entry point. -- но это уже не к Вам С уважением Смотрите вложение. Изменено 24 августа, 2007 пользователем Schtirlitz Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться