|
WinAVR и ELPM, ставит lpm вместо elpm |
|
|
|
Sep 30 2008, 21:39
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 5-05-08
Пользователь №: 37 279

|
Столкнулся с такой проблемой: ATmega1280, пишу bootloader, в 0 адресе все работает. Передвигаю на 0x01E000 - не запускается. Смотрю дебагером и обнаруживаю, что там, где должна быть инструкция ELPM - стоит LPM (хотя RAMPZ установлен верно). Соответственно данные читаются не из того места, и переход выполняется в адрес где-то за пределами кода. Пока программа лежала в 0 адресе, не было переполнения на 16-й бит адреса и все работало нормально. Кто нибудь сталкивался? Может какие ключи компиляции помогут? Или вручную опкоды править?
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
Oct 1 2008, 10:06
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 5-05-08
Пользователь №: 37 279

|
Цитата(demiurg_spb @ Oct 1 2008, 11:33)  Что за версия компилятора? WinAVR-20080610, последняя. До этого использовал 200804xx, то же самое... Цитата(demiurg_spb @ Oct 1 2008, 11:33)  Приведите хоть кусочек исходника с подозреваемой проблемой. А так Вам никто не поможет... В том то и дело, что до самого кода программы дело еще не доходит, затык в начальной инициализации. После старта сначала идет инициализация памяти данных, затем в Z регистр грузится начальный адрес видимо какой-то таблицы (сразу после векторов прерываний) и должно считываться первое значение, судя по всему адрес, по которому должен происходить переход (это видно из приведенного скрина). Но этого не происходит, т.к. адрес читается некорректно, не той командой. Это все происходит до начала функции main(), и я не знаю что из кода на это может повлиять. Весь код программы я выложить не могу. Но могу сказать что он использует операционную систему scmRTOS (gcc). Кто-то может сказать "зачем в бутлоадере ОС?". Просто я использую те-же драйвера внешних устройств, что и в основной программе, заточеные под эту ОС и переписывать все не хотелось бы. Тем более все что нужно вместе с ОС влезают в 8 кб. Кстати, программа под С++ (а не чистый С), может это важно...
Сообщение отредактировал ZyBEX - Oct 1 2008, 10:10
|
|
|
|
|
Oct 1 2008, 10:20
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(ZyBEX @ Oct 1 2008, 14:06)  Весь код программы я выложить не могу. А фрагмент из *.lst файла с этим кодом можете? Анатолий.
Сообщение отредактировал aesok - Oct 1 2008, 10:23
|
|
|
|
|
Oct 1 2008, 10:41
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 5-05-08
Пользователь №: 37 279

|
Цитата(aesok @ Oct 1 2008, 14:20)  А фрагмент из *.lst файла с этим кодом можете?
Анатолий. Я же говорю, описанное происходит еще до вхождения в main(), в сишной инициализации. В каком .lst файле это?
|
|
|
|
|
Oct 1 2008, 10:50
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(ZyBEX @ Oct 1 2008, 13:41)  Я же говорю, описанное происходит еще до вхождения в main(), в сишной инициализации. В каком .lst файле это? Давайте попробуем разобраться. Начнем с получения листинга всей прошивки: avr-objdump -hSCD файл.elf > файл.lss В ней посмотрите, как называется метка по адресу 0xFD0F и, заодно, из какой функции происходит переход на нее. Можете привести здесь отрывок этого листинга. Или вырежьте из него main() и все ваши секретные функции, оставьте только инициализацию, и выложите.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
Сообщений в этой теме
ZyBEX WinAVR и ELPM Sep 30 2008, 21:39     ZyBEX Цитата(Сергей Борщ @ Oct 1 2008, 14:50) Д... Oct 1 2008, 14:11      aesok GCC Bugzilla Bug 29141
static constructors beyond ... Oct 1 2008, 15:23 ZyBEX Я понял что у меня за таблица, по которой бродит t... Oct 1 2008, 15:54 ZyBEX Проблема датируется 2006 годом. Странно что до сих... Oct 1 2008, 17:09 ZyBEX По идее проблему можно решить, создавая объекты то... Oct 1 2008, 18:33 Сергей Борщ Цитата(ZyBEX @ Oct 1 2008, 21:33) По идее... Oct 1 2008, 20:04  ZyBEX [SOLVED]
Цитата(Сергей Борщ @ Oct 2 2008, 00... Oct 2 2008, 20:22   aesok Цитата(ZyBEX @ Oct 3 2008, 00:22) (хотя c... Oct 2 2008, 20:32    Сергей Борщ Цитата(aesok @ Oct 2 2008, 23:32) PS: Без... Oct 2 2008, 21:04     aesok Цитата(Сергей Борщ @ Oct 3 2008, 01:04) У... Oct 2 2008, 21:10     ZyBEX Цитата(Сергей Борщ @ Oct 3 2008, 01:04) У... Oct 3 2008, 00:40      Сергей Борщ Цитата(ZyBEX @ Oct 3 2008, 03:40) Тогда л... Oct 3 2008, 08:04       ZyBEX Цитата(Сергей Борщ @ Oct 3 2008, 12:04) Н... Oct 3 2008, 12:54        Сергей Борщ Цитата(ZyBEX @ Oct 3 2008, 15:54) Если r1... Oct 3 2008, 13:41 aesok Цитата(ZyBEX @ Oct 1 2008, 22:33) Временн... Oct 2 2008, 06:45  ZyBEX Цитата(aesok @ Oct 2 2008, 10:45) А Вы та... Oct 2 2008, 08:21 ZyBEX Цитата(C:/WinAVR/Doc/avr-libc/avr-li... Oct 3 2008, 14:00
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|