вопрос!!!!!! , загрузчик , же содержиться в прошивке!!! ввиде просто его тела , тоесть мы еготоже перешиваем веть каждый раз когда заливаем прошивку? правильно?
Загрузчик содержится в прошивке, но при перепрошивке через менеджер он не перепрошивается (он не может прошить сам себя...).
значит , если я пересоберу загрузчик , вставлю его тело в прошивку и залью - этого веть будет достаточно?
или если я залью загрузчик програматором , но потом буду заливать новую прошивку и она его затрет!!!!
Да. Загрузчик можно пересобрать, прогнать через спец. утилиту делающую массив на языке С и вставить в прямо исходники прошивки.
Еще раз. Заливка прошивки через менеджер не может затереть загрузчик. Загрузчик можно затереть либо программатором, либо выполнением кода (аналогичного загрузчику) находящегося в так называемой секции Application (см. даташит на AVR). В секции Application лежит прошивка.
Вот эта строчка в seculdr.asm устанавливает скорость:
ldi R24,UBR ; set Baud rate
В принципе. Загрузчик даже пересобирать не нужно. Нужно просто поменять 2 байтa в массиве на другие значения:
PGM_FIXED_ADDR_OBJ(uint8_t boot_loader[BOOT_LOADER_SIZE], ".boot_loader") =
{
#ifdef _PLATFORM_M16_
0xF8,0x94,0x00,0x24,0x04,0xBA,0x9B,0x99,0xFB,0xC0,0xF8,0x94,0x8F,0xE5,0x94,0xE0,
0x8D,0xBF,0x9E,0xBF,
0x87,0xE6,0x89,0xB9,0x88,0xE1,0x8A,0xB9,0x73,0xD0,0x01,0x32,
0xE9,0xF7,0x70,0xD0,0x00,0x35,0xD9,0xF4,0xA0,0xD0,0xAF,0xD0,0x13,0xE0,0xB3,0xD0,
0x11,0xE1,0xB1,0xD0,0x44,0x27,0x80,0xE8,0x98,0xD0,0x00,0x2E,0x40,0x27,0x95,0xD0,
Жирным выделены байты инструкции ldi R24, 0x67
Привожу значения:
14400:
0x84, 0xE4
19200:
0x83, 0xE3
28800:
0x82, 0xE2
38400:
0x89, 0xE1
57600:
0x80, 0xE1