При отсутствии подключения к хост-программе boot_PC и адресе в регистровой паре $9FFE:$9FFF в диапазоне $8004...$9FEF ( больше или равно $8000 ) начальный загрузчик boot_OPTION:
- отправляет хост-программе boot_PC по UART 9600 8N1 байт $14 (версия загрузчика boot_uC);
- отсчитывает тайм-аут ~200 миллисекунд в ожидании байта от хост-программы boot_PC;
- передает управление по адресу в регистровой паре $9FFE:$9FFF.
При отсутствии подключения к хост-программе boot_PC и адресе в регистровой паре $9FFE:$9FFF равном $0000 ( меньше $8000 ) начальный загрузчик boot_OPTION:
- отправляет хост-программе boot_PC по UART 9600 8N1 байт $14 (версия загрузчика boot_uC);
- отсчитывает тайм-аут ~200 миллисекунд в ожидании байта от хост-программы boot_PC;
- копирует содержимое EEPROM памяти данных с адресами $4000...$427F в SRAM память данных/программ по адресам $0000...$027F;
- передает управление по адресу $0000.
При наличии подключения к хост-программе boot_PC начальный загрузчик boot_OPTION:
- отправляет хост-программе boot_PC по UART 9600 8N1 байт $14 (версия загрузчика boot_uC). Это сигнал хост-программе, что можно отправлять байт-счетчик;
- отсчитывает тайм-аут ~200 миллисекунд в ожидании байта-счетчика от хост-программы boot_PC. Байт-счетчик показывает сколько еще байтов ожидать от хост-программы;
- помещает принятые байты в обратном порядке в SRAM память данных/программ начиная с адреса $03FF;
- передает управление принятому от хост-программы блоку(модулю, дампу) данных/команд с текущим функционалом по адресу $03FF минус содержимое байта-счетчик.
Начальный загрузчик может повторно принять управление от текущего блока(модуля, дампа) данных/команд для приема/замены блока(модуля, дампа) данных/команд с другим функционалом с последующей передачей управления.
Образ начального загрузчика boot_OPTION версии $14 в блоке памяти OPTION Bytes (проверено на микроконтроллере STM8S103F3):
$4800 $00 $00 $FF $00 $FF $00 $FF $00 $FF $00 $FF $35 $0D $52 $32 $35 $4810 $0C $52 $35 $35 $14 $52 $31 $5A $27 $16 $72 $0B $52 $30 $F8 $C6 $4820 $52 $31 $72 $0B $52 $30 $FB $3B $52 $31 $4A $26 $F5 $96 $5C $FC $4830 $CE $9F $FE $2B $FA $90 $AE $42 $7F $AE $02 $7F $CC $9F $F4 $00
Для формирования необходимого кода загрузчика boot_uC версии $14 необходимо прошить программатором во FLASH память микроконтроллера файл [boot_OPTION_rev14], перезагрузить микроконтроллер, дождаться непрерывного сигнала светодиода. Далее прошить программатором во FLASH память микроконтроллера файл [boot_FLASH_rev14].
При отсутствии подключения к хост-программе boot_PC и адресе в регистровой паре $4831:$4832 в диапазоне $8004...$9FF1 ( больше или равно $8000 ) начальный загрузчик boot_OPTION:
- отправляет хост-программе boot_PC по UART 9600 8N1 байт $25 (версия загрузчика boot_uC);
- отсчитывает тайм-аут ~200 миллисекунд в ожидании байта от хост-программы boot_PC;
- передает управление по адресу в регистровой паре $4831:$4832.
При отсутствии подключения к хост-программе boot_PC и адресе в регистровой паре $4831:$4832 равном $0000 ( меньше $8000 ) начальный загрузчик boot_OPTION:
- отправляет хост-программе boot_PC по UART 9600 8N1 байт $25 (версия загрузчика boot_uC);
- отсчитывает тайм-аут ~200 миллисекунд в ожидании байта от хост-программы boot_PC;
- копирует содержимое EEPROM памяти данных с адресами $4000...$427F в SRAM память данных/программ по адресам $0000...$027F;
- передает управление по адресу $0000.
При наличии подключения к хост-программе boot_PC начальный загрузчик boot_OPTION:
- отправляет хост-программе boot_PC по UART 9600 8N1 байт $25 (версия загрузчика boot_uC). Это сигнал хост-программе, что можно отправлять байт-счетчик;
- отсчитывает тайм-аут ~200 миллисекунд в ожидании байта-счетчика от хост-программы boot_PC. Байт-счетчик показывает сколько еще байтов ожидать от хост-программы;
- помещает принятые байты в обратном порядке в SRAM память данных/программ начиная с адреса $03FF;
- передает управление принятому от хост-программы блоку(модулю, дампу) данных/команд с текущим функционалом по адресу $03FF минус содержимое байта-счетчик.
Начальный загрузчик может повторно принять управление от текущего блока(модуля, дампа) данных/команд для приема/замены блока(модуля, дампа) данных/команд с другим функционалом с последующей передачей управления.
Образ начального загрузчика boot_OPTION версии $25 в блоке памяти OPTION Bytes (проверено на микроконтроллере STM8S103F3):
$4800 $00 $00 $FF $00 $FF $00 $FF $00 $FF $00 $FF $35 $0D $52 $32 $35 $4810 $0C $52 $35 $35 $25 $52 $31 $5A $27 $16 $72 $0B $52 $30 $F8 $C6 $4820 $52 $31 $72 $0B $52 $30 $FB $3B $52 $31 $4A $26 $F5 $96 $5C $FC $4830 $AE $80 $04 $2B $FA $90 $AE $42 $7F $AE $02 $7F $CC $9F $F6 $00
Машинные коды STM8 и команды ассемблера здесь. Адресное пространство STM8S103F3 тут.