???????bootloader:????MCU??????????IAP??
????????????????????????????????????????????? ??????п???????????????????????????????????HC32L110?????????????????????????????IAP????????????????????????????β??????????????????
???????
IAP??In Application Programming?????????д??IAP??????????????????й????ж?User Flash??????????????д???????????????????????????????????????????е?????????и?????????
IAP???????
??????IAP????????????????????????д???????????????????????BOOT?????????????????????????????????????(??USB??USART)???????????????ж???????????????????????????APP?????????????????????????????????????????Flash?У???о??????????????????????BOOT??????У?????????????????
???????????????APP?????????и?????????????????????4????и??????
??????????????????
???????BOOT??????????SWD?????????????????о?Flash????????????APP????????BOOT???????о?????????????????????????????BOOT????????
????о???е?Flash??????????Χ?????????????????BOOT?????????????APP???????????????о????Flash??????????????APP???????о??????????????BOOT??APP????
IAP??????????
о?????????Flash???0x0000_0000?????У?????Cortex-M0+???????????????ж?????????????ж????????ж????????????λ?ж?????????ж??????ж??????о????PC???λ???ж??????????????????ж?????????С????????ж????????о??????λ?ж?????????????main???????????????????????ж??????????ж?????????ж?????ж???????
??????IAP??о???????ж????????????λ?ж?????????ж???????????ж????????о??????λ?ж?????????????main?????????????IAP?????????λ?ж?????????0x0000_0004 + BOOT?????С???????APP??????λ???????????APP???λ?ж???????????????APP?????main??????С?
???Demo????????????????
???У?BOOT?????С3.5KB
Para ??????IAP?????????????????0.5KB
APP?????С?24KB
Demo????????????????
???APP????HEX?????о????
??BOOT????HEX?????о????????????ù????????HEX????????????????о??????
?????λ?????????????????????9600??????Э?齫APP?????bin????????0x1000?????о?????????????APP??bin???С??28KB??
?ο???????????
??????????????????Demo????IAP??????Э?顣
???Э?????????
///*frame:68 A0 A1 C Page L0 L1 D0... DN-1 CRC0 CRC1 16*///
///*offset :0 1 2 3 4 5 6 7 8+N 9+N 10+N 11 +N*///
?????? ???????0x68 ??????
????? A0 A1 ???????
??????C?? ??????0x15 д????0x25
????page?? ?????? ???????????????????
????L0 L1?? ??????? L0??????????L1???????????????????????????????
??????D0??DN-1 ?? ????????????д???????
????У??CRC?? ????CRC-16???,???????????????У?顣
????????????????0x16 ??????
??????????
68 A0 A1 15 Page 0x00 0x00 CRC0 CRC1 16
????????68 A0 A1 95 Page 0x04 0x00 D0 ???????? D1023 CRC0 CRC1 16
?????? 68 A0 A1 D5 Page 0x00 0x00 CRC0 CRC1 16
Page ???0 -- 27??
??ζ??1K???????
д????????
68 A0 A1 25 Page 04 00 D0 ???????? D1023 CRC0 CRC1 16
????????68 A0 A1 A5 Page 04 00 CRC0 CRC1 16
?????? 68 A0 A1 E5 Page 00 00 CRC0 CRC1 16
Page ???0 -- 27??
???д1K???????
???IAP???????
68 A0 A1 36 00 00 00 00 00 16
?????? 68 A0 A1 B6 00 00 00 00 00 16
?????? 68 A0 A1 F6 00 00 00 00 00 16
????IAP???????
68 A0 A1 49 00 00 00 00 00 16
?????? 68 A0 A1 C9 00 00 00 00 00 16
?????? 68 A0 A1 09 00 00 00 00 00 16
?????????????????????????С??2s,??????????IAP??????????
1??BOOT????????APP????
if(((*(__IO uint32_t*)appxaddr)&0x2FFE0000)==0x20000000) //??????????????
{
jump2app=(iapfun)*(__IO uint32_t*)(appxaddr+4); //APP????λ???
MSR_MSP(*(__IO uint32_t*)appxaddr); //?????APP??????
jump2app(); //?????APP????
}
2??APP?????ж?????????
new_vect_table EQU 0x00001000 ;?ж???????????
; reset Vector table address.
LDR R0, =0xE000ED08
LDR R2, =new_vect_table
STR R2, [R0] ;???????????
???
???????????????HC32L110??е?IAP???????????????????????????????????????????裬????????????????????У????????????????????????÷????????????????HC32L110?????????????????????????????????????????????????????????????????????????á?

????admin ?????????2020-06-10