Всем привет тут пришлось вернуться к давно забытым МК с ядром AVR а точнее ATmega8 оч давно имел с ними дела но не когда не делал ни чего с бутлоадером ...
и вот приклинило,для начала :
1-научился работать с командой SPM, чуть позже вообще нашёл удачную процедуру с готовой записью
2- написал тестовое приложение (как программуу)
3-написал бутлоадер ,естественно что у AtmelStudio у ликера опция -Wl,--section-start=.text=0x1800 выставлена и фьюзы в ту область так же для бута
Естественно что базовая прога проверена 120 байт работают просто мигают светодиодом (где он понятно из проги)
И бут лоадер тоже
Скраиваю их в месте по простетскому сначала шью бутлоадер а потом поверх без стирания чипа основную
далее если фьюз BOOTRST показывает что всё окей, если его прожеч то стартует бут лоадер ,если нет то основное приложение
Кажется все пашет но вот увы ХРЕН ТАМ бут лоадер по окончанию своей отработке не может вызвать основную аппку
пробовал :
asm("LDI R30,0x00\r\nLDI R31,0x00\r\nIJMP\r\n");
и так пробовал:
static void (*StartProg)( void ) = 0x0000;
StartProg();
по сути заново запускается бут лоадер ...
прикладываю исходник бутлоадера , самого EXE так сказать и HEX документ полной сборки...
Логика , экзешника состоит просто в моргании поочередно двумя свето диодами ,а бутлоадера в проверки B3 у PORTD и проверке на удержание его в течении 5 или более сеукунд...
Самая главная проблема это втом что из бутлоадера в аппку не как не осуществляется переход, а просто перезапускается бутлоадер...
Но вот что интересно если расположит команду перехода в аппку одной из первых, то переход работает ....
BootLoader.7z
Exe.7z
Document.7z