1. STM8uLoader состоит из хост-программы boot_PC и загрузчика в микроконтроллере boot_uC.
2. Загрузчик boot_uC в свою очередь состоит из начального копировщика boot_FLASH и начального загрузчика boot_OPTION.
3. Никакой совместимости со старшими моделями микроконтроллеров.
4. Предельно компактный код.
5. Компактный начальный копировщик boot_FLASH во FLASH памяти программ (для версии $14 это 4 байта в адресах $8000...$8003, 16 байт в адресах $9FF0...$9FFF; для версии $25 это 4 байта в адресах $8000...$8003, 14 байт в адресах $9FF2...$9FFF).
6. Компактный начальный загрузчик boot_OPTION с образом в резервных ячейка блока памяти OPTION Bytes (для версии $14 и $25 это 52 байта в адресах $480B...$483E, 1 резервный байт по адресу $483F). Диапазон указанных адресов не доступен обычным программаторам.
7. При загрузке STM8 начальный копировщик boot_FLASH должен перенести из блока OPTION Bytes код начального загрузчика boot_OPTION в память SRAM по адресам $0000...$0034 и передать управление по адресу $0000.
8. Всю логику должна взять на себя хост-программа boot_PC компьютера путем отправки в SRAM память микроконтроллера блоков, содержащих необходимый код и данные для выполнения текущей операции.
9. Минимальный тайм-аут для выхода из загрузчика (для версии $14 и $25 это ~0,2 сек).
10. Загрузчик не должен перемещать таблицу векторов прерываний.
11. Загрузчик должен читать любую ячейку памяти из адресного пространства микроконтроллера STM8 (адреса $0000...$9FFF).
12. Загрузчик должен стирать содержимое ячеек(1 байт)/слов(4 байта)/блоков(64 байта) EEPROM (ресурс ~300 000 циклов записи/стирания) памяти данных (адреса $4000...$427F), FLASH (ресурс ~10 000 циклов записи/стирания) памяти программ (адреса $8000...$9FFF), области памяти OPTION Bytes (предположительно ресурс ~300 000 циклов записи/стирания) не повреждая собственного кода.
13. Загрузчик должен записывать ячееки(1 байт)/слова(4 байта)/блоки(64 байта) SRAM памяти данных (адреса $0000...$03FF), EEPROM (ресурс ~300 000 циклов записи/стирания) памяти данных (адреса $4000...$427F) и FLASH (ресурс ~10 000 циклов записи/стирания) памяти программ (адреса $8000...$9FFF) не повреждая собственного кода.
14. По истечении тайм-аута при отсутствии сигнала от хост-программы начальный загрузчик boot_OPTION должен передать управление основной программе адрес которой для версии $14 содержится в регистровой паре $9FFE:$9FFF и для версии $25 в регистровой паре $4831:$4832.
15. Загрузчик должен передавать управление по любому адресу памяти RAM или FLASH по команде от хост-программы (boot_PC).
16. Основная (прикладная) программа может храниться и выполняться из FLASH (ресурс ~10 000 циклов записи/стирания) памяти программ (адреса $8004...$9FEF для версии $14 и $8004...$9FF1 для версии $25).
17. Основная (прикладная) программа может также храниться в EEPROM (ресурс 300 000 циклов записи/стирания) памяти данных (адреса $4000...$427F), а выполняться из SRAM памяти (адреса $0000...$03FF).
18. Прикладная программа может быть загружена хост-программой (boot_PC) и выполняться из SRAM памяти (адрес передается в качестве второго аргумента командной строки). Время жизни такой программы до сброса микроконтроллера, после чего выполнение начинается с адреса хранящегося в регистровой паре $9FFE:$9FFF для версии $14 или $4831:$4832 для версии $25.
Машинные коды STM8 и команды ассемблера здесь. Адресное пространство STM8S103F3 тут.