Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите! Косяк в IARе или в чем?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
vitek101
Пишу для XMega128, IAR 5.20.
Началось с того, что прикручиваю BootLoader. Вроде он прописался куда надо (смотрел map-файл и окошко Disassembly в отладчике). Но не работало главное окно (где по коду бегает зеленый указатель).
При следующем запуске отладчика вылетело окно Нажмите для просмотра прикрепленного файла. Теперь главное окно также не работает, но и дизассемблер тоже через раз.
Переустановил IAR, поменял процессор, пробовал другие проекты - то же самое.
Че делать не пойму....

Исправил. Включил Debug information for C-SPY.
vitek101
Почему может не работать переход на начало программы?
Взял пример атмела:
void (*funcptr)( void ) = 0x0000; // Set up function pointer to RESET vector.
funcptr(); // Jump to Reset vector 0x0000 in Application Section.
пробую и в симуляторе и на живом XMEGA128. Не работает... sad.gif
defunct
Цитата(vitek101 @ Nov 9 2009, 13:26) *
пробую и в симуляторе и на живом XMEGA128. Не работает... sad.gif

А что происходит при выполнении funcptr()?
vitek101
Просто дальше выполняется код, как будто этой строки вообще нет...
defunct
Цитата(vitek101 @ Nov 9 2009, 15:22) *
Просто дальше выполняется код, как будто этой строки вообще нет...

Поставьте в симуляторе точку останова на вызов funcptr(), запустите программу, когда выполение остановится, откройте окно дизассемблера перейдите в него и посмотрите что там выполняется. Если совсем туго с асмом, снимите и приатачте скриншот (с исходником и дизассемблером) сюда.
vitek101
Он прыгает по адресу 0х0000, а потом сразу на следующую за funcptr() строку. Может это быть из-за того, что в памяти находится только загрузчик, а программы самой нет?
Все-таки я склоняюсь к объединению загрузчика с программой в один проект и отключению его если надо по #ifdef. Так хоть что-то работает Вернее все работает, кроме прерываний... Вот сейчас копаю, как создать вторую таблицу прерываний smile3046.gif
defunct
Цитата(vitek101 @ Nov 10 2009, 10:24) *
Он прыгает по адресу 0х0000, а потом сразу на следующую за funcptr() строку. Может это быть из-за того, что в памяти находится только загрузчик, а программы самой нет?

Очень возможно. Какая там команда по адресу 0?

Цитата
Все-таки я склоняюсь к объединению загрузчика с программой в один проект и отключению его если надо по #ifdef. Так хоть что-то работает Вернее все работает, кроме прерываний... Вот сейчас копаю, как создать вторую таблицу прерываний smile3046.gif

а смысл? только ради отладки одной команды jmp 0x0?
bootloader один, а приложений разных много. Зачем объединять бутлоадер с каким-то одним конкретным приложением?
vitek101
Этот бутлоадер специфичен для конкретной платы, он будет грузить программу из FRAM, предварительно загруженную основной программой. Т.е. для нового приложения все равно придется переделывать, а скопировать кусок кода и вставить в другое место не трудно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.