使用IAP时有几点要注意:
1. IAP-BOOT程序:
A. 修改LNK文件(lnkstm8s105s4.ICF),定义块编程放在ROM区
initialize by copy { rw, ro section .tiny.rodata, section FLASH_CODE};
代码中定位块写程序的位置
#pragma location = "FLASH_CODE"
unsigned char IAP_bWrBlock(void){...}
B. 修改向量表文件(stm8s_interrupt.S),使中断指向用户程序的向量地址(0X8800开始);
C. 编译选项Linker重定向到已修改的文件lnkstm8s105s4.ICF;
D. 项目文件中添加stm8s_interrupt.S文件;
E. 编译生成的文件即为用户代码引导区; F. 设置OPTION选项,ROP=0xAA, UBC=0x02(BOOT区大小,0x8000--0x87FF, IAP不能修改该段代码)
2. IAP-USER程序
A. 修改LNK文件(lnkstm8s105s4.ICF),定义用户代码区间,避开BOOT区(起始:0x8800)
B. 编译生成的文件即为用户程序区;
3. 烧录步骤:
A. BOOT程序和OPTION先烧录进芯片
B. BOOT引导过程中主机发同步码,进入IAP升级。