STM8(STM8S003F3) Bootloader (IAP) 升级程序

本文详细介绍了如何在只有8k FLASH的STM8S003单片机上实现BOOTLOADER。通过配置链接器设置,将BOOT区和APP区分开,BOOT程序占用前2K,用户程序占用后6K。BOOT程序中的编程代码在RAM内执行,中断向量进行了手动重定向,并讨论了BOOT区的保护策略。同时提供了源代码下载链接。

STM8S003这种片内FLASH只有8k的单片机使用bootloader功能貌似没有必要,但如果你的项目只需要6K的程序空间那剩余的2K用作bootloader也是个非常不错的注意:)

一.环境

 编译:STVD V4.3.5 + COSMIC V4.3.4
 Bootloader上位机软件: CAS-BOOT

 二.实现原理

    1.FLASH程序存储器应用
     STM8S003F3集成8K字节的FLASH程序存储器,其地址范围为0x8000 ~  0x9fff
     其中中断向量占用0x8000到0x8080  用户程序可以存储于0x8080到0x9fff
     实现Bootloader时,BOOT代码占用前2K的字节,即0x8000到0x8800
     用户程序占用后6K字节,即0x8800到0x9fff
     笔者使用两个项目来开发这两个程序,也就是说BOOT程序和APP程序开发于不同的项目,BOOT程序编译后生成的可执行代码存储于
     0x8000开始处,而用户APP程序存储于0x8800开始处。这个地址的分配需要在各自的项目中配置,配置方法:
     project -> setting... -> Linker  -> Category -> Input中设定地址范围,如下图:

BOOT程序链接配置

APP程序的链接配置

2.FLASH编程在RAM内执行问题


       BOOT程序实现FLASH编程时,编程执行代码应在RAM内执行,为了实现这个,我们需要一个自定义代码段,将编程代码放入其中,
      这里笔者新增加了一个名为FLASH_CODE的代码段,编程代码如下:
     

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值