Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблемма с bootloaderom в ATMega1280
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
SergeyA100
Зашил бутлоадер в атмегу. По RS-232 передал прогу, она нормально прошилась (читал програматором AVReal), после чего несмотря на установленный фьюз BOOTRST=0 контроллер запускается с 0-го адреса sad.gif
Legotron
Цитата(SergeyA100 @ Oct 7 2009, 09:39) *
Зашил бутлоадер в атмегу. По RS-232 передал прогу, она нормально прошилась (читал програматором AVReal), после чего несмотря на установленный фьюз BOOTRST=0 контроллер запускается с 0-го адреса sad.gif

Что значит запускается с 0-го адреса?
Вы под отладчиком смотрели с какого адреса он запускается?
Вполне возможно что в бутлоадере стоит джамп на 0-й адрес.
Посмотрите логику работы бутлоадера.
SergeyA100
Компилирую бутлоадер. Прошиваю его АВРиалом. Прошло. Работает. Читаю из меги в файл. Сохраняю.
При старте лоадера конфигурирую порты F и К как выходы, зажигаю все диоды подключенные к меге.
При ресете стартует с бутлоадера. Вроде все ОК. После чего по RS-232 заливаю тестовую прогу. Суть ее в том что бы
зажечь тоько диоды на порту К. После чего по ресету переход идет на тестовую прогу, по сбросу питания то же. Читаю
из меги в файл. Сравниваю - отличий в секции бутлоадера нет. По адресу 1F800 ( размер загрузчика 1 кСлово)
команда перехода на начало бутлоадера.

BOOTSZ = 2;
BOOTRST = 0
Legotron
В чем заключается проблема?
Без кода бутлоадера мне тяжело понять логику его работы.
SergeyA100
Проект в IARе, после того как лоадер успешно прошил атмегу, после сброса запускуается не лоадер а прошитая программа

Нажмите для просмотра прикрепленного файла
Legotron
Цитата(SergeyA100 @ Oct 7 2009, 11:47) *
Проект в IARе, после того как лоадер успешно прошил атмегу, после сброса запускуается не лоадер а прошитая программа

Посмотрел код лоадера.
Действительно лоадер должен висеть на строке:
Код
Numb_Byte = read_mesage();            // ждем приема посылки

если только вы в это время не отсылаете ему команду:
Код
      }else if (Buffer[1] == 0xFF ){        // если пришла команда конец файла
                 break;                    // вылетаем из цикла


Я бы посмотрел на то, не пересылаете ли вы что-либо лоадеру уже после загрузки приложения и на то что переменная Buffer не инициализирована, в ней может содержаться мусор.
SergeyA100
Погонял в AVRStudio - если шъеш первую страницу - то адрес в команде перехода по вектору прерывания bootrst меняется на 0000 - почему - не понимаю я ту область памяти вообще не трогаю
Legotron
Цитата(SergeyA100 @ Oct 7 2009, 13:13) *
Погонял в AVRStudio - если шъеш первую страницу - то адрес в команде перехода по вектору прерывания bootrst меняется на 0000 - почему - не понимаю я ту область памяти вообще не трогаю

Посмотрите чтобы в AVRStudio была правильно указана область памяти .text (начальный адрес должен быть началом области загрузчика)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.