Дата шит есть, но там столько всего......
Вобщем мне прошивку нужно в мк обновлять без программатора, я так понимаю это с помощью этой проги делается?
Убедительно прошу гнилыми помидорами не кидаться
zebrox писал(а):Народ, подскажите начинающему, зачем эта фича нужна и как ею правильно пользоваться?
zebrox писал(а):...зачем эта фича нужна...
Да. Да. Установкой фузов при первой прошивке на старт программы из загрузочного сектора. Переход в основную JMP или GOTO. Таблица векторов переключается программно битом.zebrox писал(а):я так понимаю, в мк будет храниться две программы? одна основная рабочая, а вторая в загрузочном секторе? а как передать управление той которая в загрузочном секторе находится?
Да. Да. Установкой фузов при первой прошивке на старт программы из загрузочного сектора. Переход в основную JMP или GOTO. Таблица векторов переключается программно битом.
zebrox писал(а):Народ, всем доброго времени суток!
Вот я сделал этот бутлодер, теперь у меня есть проект в кодвижн моего основного приложения для меги, и есть второй проект бутлодера для той-же меги. Теперь их нужно как-нить одновременно записать в МП. Если это делать поотдельности, то стирается та прога, которая была записана ранее.
Программатор пони прог использую.
Может нужно как-то проект "собрать" или "залинковать"?
Если кто знает, подкажите как?
Заранее спасибо!
Код: Выделить всё
void write_word()
{
//blink_led(100);
//pokeb(30, cell_num);
pokeb(1, buffer[2]);//в регистр R1 заношу первый байт
pokeb(0, buffer[3]);//в регистр R0 заношу второй байт
SPMCR = 1; //выставляю бит SPMEN = 1
pokeb(30, cell_num);//в регистр R30 заношу адрес первого байта слова
//SPMCR = 1;
#asm ("SPM")//собсно запись во временный буфер
cell_num++;
//делаю так пока не запишу 32 байта
if(cell_num==32)
{
//blink_led(500);
cell_num=0;//обнуляю адрес ячеки
//pokeb(30, page_num);
pokeb(30, page_num);//в регистр R30 заношу адрес стираемой страницы
SPMCR = 3; //выставляю биты для стирания 00000011
#asm ("SPM")//вот стираю
//pokeb(30, page_num);
SPMCR = 5;//выставляю биты для записи 00000101
pokeb(30, page_num); );//в регистр R30 заношу адрес записываемой страницы
#asm ("SPM") //записываю
page_num=page_num+64;//перехожу к следующей странице
if(page_num>=15872) return;
}
//здесь просто смотрю в терминале что проц сюда дошел
putchar('\r');
putchar('\n');
putchar('N');
putchar('\r');
putchar('\n');
}
Trol писал(а):Могу предложить компактный (256 байт) загрузчик для AVR /проверял только на меге8/, с исходниками: http://trol.nm.ru/soft/tboot/
_noise писал(а):1. Данные для бутлоадера как-то шифруете, или прям в открытом виде отдаёте пользователю в руки? Если шифруете - как? Более чем один способ имеет право на?
2. Функцию "выгрузить прошивку" в изделии делаете? Если нет - как готовите данные для загрузки? Если да - чем оно может быть плохо?