Перейти к содержанию
    

bootloader avr

заинтересовался проблемой самопрограммирования меги.

нашел в 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)

 

помогите разобраться плиз.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нигде не нужно размещать. Компилируешь этот код, записываешь его программатором в мегу. Потом компилируешь программу как обычно (со своей main(), как будто нет никакого бутлоадера). Ну и зажимашь PROGPIN в 0 и делаешь ресет контроллера. Он при этом перейдет в режим программирования. И скомпилированную программу передаешь через тот интерфейс, через который ее ждет бутлоадер. Естественно формат бинарника и ожидаемый бутлоадером должны совпадать.

Изменено пользователем Taradov Alexander

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

 

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

 

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

 

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

затем надо отдельно запрограммировать код что-ли или как ?

 

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

 

 

Примерно так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Перепробовал несколько бутлодеров. Вердикт один - большинство ненадежные, со временем прошивка приходит в негодность, так как при включении контроллера скорее всего счетчик команд при старте меняется хаотично и попадает в область записи во флеш. В конце концов нашел бутлодер от Chip45. Вот тут неплохо про него написано: http://robot-develop.org/archives/1092

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Это как это? Байты стареют и уходят на пенсию?

Или счетчик команд с бодуна по утрам?

Как-то вы не так бутлоадеры тестировали...

 

ЗЫ. И статейку свою в блоге (или где там ваша ссылка?) подкорректируйте, неправильная она, вводит в заблуждение начинающих. Никогда ни у одного атмеловского проца не наблюдал хаотической работы счетчика команд. Все вполне предсказуемо и в полном соответствии с даташитом. Да у других процев, с которыми работаю уже где-то за 25 лет, не видел никаких хаосов в работе счетчиков команд.

Изменено пользователем V_G

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...при старте меняется хаотично и попадает в область записи во флеш..

 

голимый пиар и туфта.

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

 

 

так, что не надо лохматить бабушку...

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

 

 

(круглый)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Это не бутлоадеры ненадежные, а схема ваша такая.

Если в программе есть команда SPM (а в любом бутлоадере она есть) - нельзя работать без супервизора питания (он же BOD).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ни разу не встречались зависающие загрузчики... Впервые слышу, что через некоторое время адрес старта "уплывает" куда-то... Бут ведь для того и бут, хранится в другом конце флеша и пишет исполняемый код с начальных адресов... действительно как то странно...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделайте свой загрузчик, это совсем не трудно, я для меги начинал. Там главное разобраться чтоб прога комипилилась по верхним адресам. Если что могу дать проект на gcc

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Ой, как интересно! А можно посмотреть код? Хотя бы первые версии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...