使用STM8S自带BootLoader_1

发布者:恬淡如云最新更新时间:2020-02-02 来源: eefocus关键字:STM8S  自带BootLoader_1  程序更新 手机看文章 扫描二维码
随时随地手机看文章

本文将详细记载怎么使用STM8S自带BootLoader实现程序更新。


准备工作: 

1. ST支持文档 UM0560(说明BootLoader怎么用) 

2. ST官方下载软件 STMFlashLoader Demo.exe 

3. IAR Embedded Workbench 、ST Visual Programmer 

4. 2块STM8S105K6,用来实现更新操作。


实践操作: 

1. 使用STVP -> OPTION BYTE -> ROP ->Read Out Protection OFF 

STVP -> OPTION BYTE -> BOOTLOADER ENABLE ->BootLoader Enable 

本文只记载怎么使用BootLoader,如果读保护使能了,不在本文讨论范围(在UM0560中有提到怎么处理)。为什么这两个字节选项字要处理,在UM0560中有说明,不这样操作,不能进入BootLoader程序,MCU复位后检测到这个这两个选项字节不符,则跳转到用户应用程序区0x8000地址处。


补充说明: 

使能BootLoader能够用库函数,写字节选项字。


FLASH_Unlock(FLASH_MEMTYPE_DATA);       //解锁Flash

FLASH_ProgramOptionByte(0x487E, 0x55);  //使能BootLoader

FLASH_Lock(FLASH_MEMTYPE_DATA);         //上锁Flash这里写代码片


读保护不能用库函数写。


使用UART和PC通讯 

PC端打开STMFlashLoader Demo.exe,连接好串口。 

主界面 

在MCU复位1S之内,点击Next. 

通讯成功界面 

如果不能进入上图界面,从3个方面检查: 

1.第1步,两个字节选项字是不是已经配置好。 

2.串口TX,RX是不是连接正确。 

3.MCU供电是不是正常。 

选择MCU容量 

选择MCU密度容量,上面对应固件版本号1.3,是上位机从Boot区读出来的。点击Next。

下面进入erase,download,updata界面。擦除不多说,操作一下就明白什么意思。updata是指把MCU的程序读出来保存成文件。重点来说一下下载操作。 

写操作 

执行下载之前要执行标号1。这里的要点是标号2,不要加载HEX文件,如果加载了HEX文件则标号3不能操作,写入地址不可选。原因是HEX文件本身就包含了写入地址信息,所以不可改,在IAR中可编辑OPTION选择生成Bin文件。生成了Bin文件才可以选择下地址。 

选择下载地址 

我这里选择的地址是0xA000,这个地址是开发者自己确定的,APP1.bin包含的是要更新的固件信息。也就是要复制到目标板从机的程序。


操作到这里,BootLoader就已经完成一半的任务了,下篇说主机MCU怎么和从机握手,然后主机更新从机的程序。


我自己在操作的时候想怎么把固件程序和应用程序分段放到主机的flash中,各种论坛救助,没有得到满意的回复。偶然加载了一次Bin文件,问题才解决,特意写下来,希望能帮助到有同样困惑的人。

关键字:STM8S  自带BootLoader_1  程序更新 引用地址:使用STM8S自带BootLoader_1

上一篇:STM8L051F3 硬件I2C从机实例--新手导航
下一篇:ST硬件IIC上电检一直检测到忙状态

推荐阅读最新更新时间:2024-11-17 09:57

STM32F4更新W25Q16字库源程序
一开始我下载了读取SD卡的程序,但液晶显示屏幕上没反应,于是我就下载了这个关于更新字库的程序,就有反应了。 本实验将实现如下功能:开机的时候先检测W25Q16中是否已经存在字库,如果存在,则按次序显示汉字(三种字体都显示)。如果没有,则检测SD卡和文件系统,并查找SYSTEM文件夹下的FONT文件夹,在该文件夹内查找UNIGBK.BIN、GBK12.FON、GBK16.FON (这几个文件的由来,我们前面已经介绍了)。在检测到这些文件之后,就开始更新字库,更新完毕才开始显示汉字。通过按按键KEY0,可以强制更新字库。同样我们也是用DS0来指示程序正在运行。 需要拷贝到SD卡根目录文件 1,在系统(或字库)更新的时候,必须用到SY
[单片机]
STM32F4<font color='red'>更新</font>W25Q16字库源<font color='red'>程序</font>
STM8S主时钟切换(使用HSE时钟源)
使用的时钟切换方式为手动切换,在中断中进行时钟切换,然后将切换后的主时钟输出到CLK_CCO口 时钟切换流程图(手动切换流程图): 时钟树: 寄存器版: unsigned char i=255; PD_DDR_DDR0=1;//配置PD0为输出模式 PD_CR1_C10=1;//配置PD0为推挽模式 PD_CR2_C20=1;//配置PD0输出最大为10Mhz if(CLK_CMSR==0xE1) //如果HSI为主时钟源(复位值),切换到HSE { CLK_SWCR_SWIEN=1;//时钟切换中断使能 CLK_SWR=0xB4;//HSE为主时钟源 asm( rim );//
[单片机]
<font color='red'>STM8S</font>主时钟切换(使用HSE时钟源)
IAR FOR STM8S 错误 An error occurred while retrieving GDI features: gdi-error [40201]解决方法
今早使用IAR调试编译调试一个工程,发现IAR竟然出现如下错误信息 An error occurred while retrieving GDI features: gdi-error : Can't access configuration database 在网上查看了一下,也有人出现这个问题,总体来说可以通过重装IAR debugger-support-files这个,解决问题。
[单片机]
stm8s开发(三) UART的使用:串口通信!
  串口通信是单片机学习的一个最基本、最重要的功能之一。串口通信可以间接的当做调试接口使用,实现单片机与电脑之间的通信。当然可以与一些模块(比如蓝牙、wifi)通信,也可以作为和其他单片机通信的工具。   STM8S的通用异步收发器(UART)主要特性:   ● 全双工的,异步通信   ● 可编程数据字长度(8位或9位)   ● 可配置的停止位-支持1或2个停止位   一般的,我们使用串口通信主要是关心几点参数:波特率、停止位、奇偶校验位。   其次就是如何发送、如何接收数据,这里介绍的使用阻塞式发送数据、中断方式接收数据。   以下代码是初始化串口,参数为:115200 1停止位 无校验位   void Init
[单片机]
<font color='red'>stm8s</font>开发(三) UART的使用:串口通信!
关于基于STM8S,MPU6050驱动的说明及程序
这个MPU6050使用的是IIC驱动的,而在具体电路图中没有使用STM8S自带的硬件IIC接口,所使用的是模拟IIC, 需要指出的是,在STM8S,IO配置的时候,SDA,对于挂SDA的IO来说,在STM8S的处理器上IO是没有真正的开漏输出功能的, 也就是将该IO配置成开漏输出的时候,IO高低电平输出实际是没有变化的,所以在IO具体输出或者读取状态的时候,必须切换IO模式, 另外需要注意的是,在配置IO的输出模式的时候,最好直接使用寄存器操作,如果使用 g_sda_output(); Handler_G_SDA_L;,也就是库函数操作的话,那么在配置成输出模式之后,并且接下来的代码立即输出高或者低的时候,
[单片机]
STVD 调试STM8S所遇到的问题
环境为主控芯片: STM8SF103F3,编译器 COSMIC8,IDE环境为STVD。 大概代码如下: u8 ret; ret=rf_get_addr_len(); ret=rf_get_trint_level(); ret=rf_get_drssi_level(); ret=rf_get_dest_provider(); ret=rf_get_addr_len(); 使用STLINK进行调试时发现,ret的值根本就不是正确的,我跟踪到具体的函数里面去,检测值是正确的,但为什么赋值给ret后,这个值就不对了呢? 后来google搜后发现一个贴上有说明,内容如下: 一段很简单的代码,跑在ST-DISCOV
[单片机]
STM8S_009_EXTI外部中断
Ⅰ、写在前面 STM8S的稳定性不如STM32,特别是在低功耗时,使用EXTI外部中断唤醒,很容易受到干扰信号而唤醒。因此,这种情况需在硬件电路上多加考虑抗干扰的电路。 其次,就是注意软件的上下拉配置,如果外部加了上拉或下拉电阻,不建议再配置成上拉或下拉;如果没有,建议加上。要使其软件稳定,还得深入EXTI的功能。 为方便大家阅读,本文内容已经整理成PDF文件: http://pan.baidu.com/s/1i5uWhJR 作者:strongerHuang 版权所有,未经允许,禁止用于其它商业用途!!! Ⅱ、EXTI基础知识 STM8S的EXTI外部中断归属于GPIO一类,只需要将其IO配置成外部中断、使能
[单片机]
STM32 IAP 在线更新程序问题
搞了一天才发现 在MDK设置选项中有个 linker 选项卡 , 需要在Project- Options- Linker中将Use Memory Layout from Target Dialog前面的复选框勾上 一切就正常了 Use Memory Layout from Target Dialog这个选项有个“分散加载文件”的概念。 下边的三段话是我从网上摘抄的(MDK程序下载到flash--分散加载文件scatter),大概了解了一下,以后如果会用到这方面的知识再来深入研究。 前边三个分散加载文件是从别的地方拷过来的,用在自己的程序中可能会有问题,因为如果不修改它的话就固定了加载地址和运行地址,如果程序简单又比较
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved