[STM8] 如何让STM8S208MB IAP变的容易?

[复制链接]
2504|3
 楼主| nienianhong 发表于 2013-11-22 17:26 | 显示全部楼层 |阅读模式
要使用STM8S208MB IAP功能,应该具备哪些知识?
香水城主 发表于 2013-11-22 18:55 | 显示全部楼层
应该具备哪些知识?

首先会自己找资料、看资料。
huangfeng33 发表于 2013-11-26 10:16 | 显示全部楼层
使用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升级。
aundry 发表于 2014-9-2 14:46 | 显示全部楼层
huangfeng33 发表于 2013-11-26 10:16
使用IAP时有几点要注意:
1. IAP-BOOT程序:
   A. 修改LNK文件(lnkstm8s105s4.ICF),定义块编程放在ROM区

:)请问一下,现在发现使用STM8块标准编程,0x8000到0xFFFF这一段可以正常在线刷写数据
但是从0x10000开始之后,就出现问题,感觉是__far操作让块的操作挂掉了
最终跟踪汇编发现把函数Mem_ProgramBlock定义在RAM区,但是里面关于Flash的赋值会编译成的汇编地址在Flash中,难道还要自己用汇编写Flash的赋值函数?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

395

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部