реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> bootloader avr, вопрос по алгоритму использования bootloader
kostik2
сообщение Jun 24 2009, 07:15
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 16-02-06
Пользователь №: 14 375



заинтересовался проблемой самопрограммирования меги.
нашел в 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)

помогите разобраться плиз.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Jun 24 2009, 07:59
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



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

Сообщение отредактировал Taradov Alexander - Jun 24 2009, 07:59
Go to the top of the page
 
+Quote Post
dimka76
сообщение Jun 24 2009, 08:00
Сообщение #3


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Цитата(kostik2 @ Jun 24 2009, 11:15) *
но вот никак не могу уместить в голове как же им все атки воспльзоваться.


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

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


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

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


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

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


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


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


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
kostik2
сообщение Jun 24 2009, 10:42
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 16-02-06
Пользователь №: 14 375



спасибо. буду пробовать.
Причина редактирования: Бездумное цитирование
Go to the top of the page
 
+Quote Post
delphi
сообщение Mar 11 2011, 20:03
Сообщение #5





Группа: Участник
Сообщений: 11
Регистрация: 11-03-11
Пользователь №: 63 544



Перепробовал несколько бутлодеров. Вердикт один - большинство ненадежные, со временем прошивка приходит в негодность, так как при включении контроллера скорее всего счетчик команд при старте меняется хаотично и попадает в область записи во флеш. В конце концов нашел бутлодер от Chip45. Вот тут неплохо про него написано: http://robot-develop.org/archives/1092
Go to the top of the page
 
+Quote Post
V_G
сообщение Mar 12 2011, 05:37
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



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

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

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

Сообщение отредактировал V_G - Mar 12 2011, 05:47
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Mar 14 2011, 08:55
Сообщение #7


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(delphi @ Mar 11 2011, 23:03) *
...при старте меняется хаотично и попадает в область записи во флеш..


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


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


(круглый)
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 14 2011, 13:23
Сообщение #8


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



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

Это не бутлоадеры ненадежные, а схема ваша такая.
Если в программе есть команда SPM (а в любом бутлоадере она есть) - нельзя работать без супервизора питания (он же BOD).
Go to the top of the page
 
+Quote Post
Marto
сообщение Mar 14 2011, 13:31
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 103
Регистрация: 17-05-09
Из: Ижевск
Пользователь №: 49 190



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


--------------------
Шизоидный холерик
Go to the top of the page
 
+Quote Post
vovkaSOL
сообщение Mar 15 2011, 12:15
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 12-06-09
Пользователь №: 50 228



Сделайте свой загрузчик, это совсем не трудно, я для меги начинал. Там главное разобраться чтоб прога комипилилась по верхним адресам. Если что могу дать проект на gcc
Go to the top of the page
 
+Quote Post
Gambit
сообщение Mar 22 2011, 21:46
Сообщение #11





Группа: Новичок
Сообщений: 5
Регистрация: 16-06-08
Пользователь №: 38 333



Цитата(kolobok0 @ Mar 14 2011, 11:55) *
сейчас занимаюсь именно боевым бутлоадером. именно по модбасу. именно без всяких дополнительных нажатий кнопок со стороны девайса. именно отказоусточивого, закрытый канал, программируется паралельно основной работе. сбоев замечено не было.

Ой, как интересно! А можно посмотреть код? Хотя бы первые версии.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 20:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01451 секунд с 7
ELECTRONIX ©2004-2016