Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: bootloader avr
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
kostik2
заинтересовался проблемой самопрограммирования меги.
нашел в iccv7avr\examples.avr\appnote109 код для него.

но вот никак не могу уместить в голове как же им все атки воспльзоваться.

void main(void)
{
void (*funcptr)( void ) = 0x0000; // Set up function pointer

if (PROGMODE) //If PROGPIN is pulled low: programmingmode.
{
...код для загрузчика
}
else
{
funcptr(); // Jump to Reset vector 0x0000 in Application Section
}

а где код основной проги поместить ?
как в контроллер записать только в область загрузчика ?
если я правильно понимаю то вот этот ****.hex должен быть записан в область загр-ка, первоначально,
затем надо отдельно запрограммировать код что-ли или как ?
у меня ICC_AVR пользуюсь AVR_ISP программатором.

мне вот не совсем понятен механизм (т.е поорядок действий для работы с bootloadrom)

помогите разобраться плиз.
ataradov
Нигде не нужно размещать. Компилируешь этот код, записываешь его программатором в мегу. Потом компилируешь программу как обычно (со своей main(), как будто нет никакого бутлоадера). Ну и зажимашь PROGPIN в 0 и делаешь ресет контроллера. Он при этом перейдет в режим программирования. И скомпилированную программу передаешь через тот интерфейс, через который ее ждет бутлоадер. Естественно формат бинарника и ожидаемый бутлоадером должны совпадать.
dimka76
Цитата(kostik2 @ Jun 24 2009, 11:15) *
но вот никак не могу уместить в голове как же им все атки воспльзоваться.


А разве эта тема уже не обсуждалась?

Цитата
а где код основной проги поместить ?


Основную прогу вы будете создавать так, как будто у вас нет бутлоадера

Цитата
как в контроллер записать только в область загрузчика ?


В проекте загрузчика надо указать линкеру по начиная с какого адреса он должен размешать ваш проект, т.е. адрес начала секции загрузчика.

Цитата
если я правильно понимаю то вот этот ****.hex должен быть записан в область загр-ка, первоначально,
затем надо отдельно запрограммировать код что-ли или как ?


Сначала вы AVR-ISP зашиваете ваш загрузчик, настраиваете фузы, чтобы контроллер стартовал при ресете с адреса загрузчика, а не с нулевого адреса. Ваш загрузчик должен поддерживать какой-то протокол с компьютером. Это может быть протокол AVR-ISP, а может быть и совершенно другой (это уж как вы загрузчик напишите). Далее запускается компьютерная программа (к компу должен быть подключен ваш девайс) и с помощью этой проги уже грузите основную программу. По окончания программирования загрузчик должен получить команду старта основной проги.


Примерно так.
kostik2
спасибо. буду пробовать.
delphi
Перепробовал несколько бутлодеров. Вердикт один - большинство ненадежные, со временем прошивка приходит в негодность, так как при включении контроллера скорее всего счетчик команд при старте меняется хаотично и попадает в область записи во флеш. В конце концов нашел бутлодер от Chip45. Вот тут неплохо про него написано: http://robot-develop.org/archives/1092
V_G
Цитата(delphi @ Mar 12 2011, 06:03) *
Перепробовал несколько бутлодеров. Вердикт один - большинство ненадежные, со временем прошивка приходит в негодность

Это как это? Байты стареют и уходят на пенсию?
Или счетчик команд с бодуна по утрам?
Как-то вы не так бутлоадеры тестировали...

ЗЫ. И статейку свою в блоге (или где там ваша ссылка?) подкорректируйте, неправильная она, вводит в заблуждение начинающих. Никогда ни у одного атмеловского проца не наблюдал хаотической работы счетчика команд. Все вполне предсказуемо и в полном соответствии с даташитом. Да у других процев, с которыми работаю уже где-то за 25 лет, не видел никаких хаосов в работе счетчиков команд.
kolobok0
Цитата(delphi @ Mar 11 2011, 23:03) *
...при старте меняется хаотично и попадает в область записи во флеш..


голимый пиар и туфта.
сейчас занимаюсь именно боевым бутлоадером. именно по модбасу. именно без всяких дополнительных нажатий кнопок со стороны девайса. именно отказоусточивого, закрытый канал, программируется паралельно основной работе. сбоев замечено не было. тестовый камень- 128 мега.


так, что не надо лохматить бабушку...
как уже было сказано выше - ерунду говорите.


(круглый)
defunct
Цитата(delphi @ Mar 11 2011, 22:03) *
Перепробовал несколько бутлодеров. Вердикт один - большинство ненадежные, со временем прошивка приходит в негодность,

Это не бутлоадеры ненадежные, а схема ваша такая.
Если в программе есть команда SPM (а в любом бутлоадере она есть) - нельзя работать без супервизора питания (он же BOD).
Marto
Ни разу не встречались зависающие загрузчики... Впервые слышу, что через некоторое время адрес старта "уплывает" куда-то... Бут ведь для того и бут, хранится в другом конце флеша и пишет исполняемый код с начальных адресов... действительно как то странно...
vovkaSOL
Сделайте свой загрузчик, это совсем не трудно, я для меги начинал. Там главное разобраться чтоб прога комипилилась по верхним адресам. Если что могу дать проект на gcc
Gambit
Цитата(kolobok0 @ Mar 14 2011, 11:55) *
сейчас занимаюсь именно боевым бутлоадером. именно по модбасу. именно без всяких дополнительных нажатий кнопок со стороны девайса. именно отказоусточивого, закрытый канал, программируется паралельно основной работе. сбоев замечено не было.

Ой, как интересно! А можно посмотреть код? Хотя бы первые версии.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.