STM32F030在线升级

网上关于STM32F030在线升级的帖子有不少,建议先看官方文档先。

图1 官方参考手册

STM32F030有三种Boot方式。

图 1.1  三种启动模式的官方说明

可以利用Physical remap实现在线升级。

图 1.2  Physical remap

图1.2是官方文档对Physical remap的说明,可以参考AN4065,该文档对Demo代码有详细的说明。

将引导程序flash地址设为0x0800000,启动后,通过串口接收要升级的APP代码,该代码可从任意地址开始(开发环境设定,例如0x0803000)将APP写入flash相应位置,然后跳转到APP代码。

图2.1. APP中要将0x200000开始的空间分配给中断向量表

注意,APP代码是直接复制到0x0803000的地址上去的,中断向量表在Flash里面,所以在APP启动的时候,需要把中断向量表复制到RAM的起始地址中去,并将系统配置成从SRAM引导,以便中断向量表能被正确引用。

图2.2. APP中要将中断向量表复制到0x200000并启动SRAM引导模式

APP中要将中断向量表复制到0x200000并启动SRAM引导模式(SYSCFG_MemoryRemapConfig)。

引导程序接收和烧录代码就不多讲了,因应用而异。官方代码给的是通过超级终端,采用YMODEM协议传输,烧写完毕后简单跳转。

图3. 引导程序简单跳转

注意,官方提供的Demo代码比较简单,在跳转前还应该注意关闭中断,跳转后在APP中再开启中断。

原文地址:https://www.cnblogs.com/shlb/p/12235401.html

时间: 2024-11-10 13:53:28

STM32F030在线升级的相关文章

.Net remoting方法实现简单的在线升级(上篇:更新文件)

一.前言:       最近做一个简单的在线升级Demo,使用了微软较早的.Net Remoting技术来练手. 简单的思路就是在服务器配置一个Remoting对象,然后在客户端来执行Remoting对象中的方法. 过程: (1) 读取本地dll文件的名称与版本号,与服务器的进行对比 (2) 确认需要升级的文件名称与版本号并告诉服务器,服务器将其复制到一个临时文件夹并压缩成zip (3) 将服务器的zip下载到本地的临时文件夹,并解压. 定义服务器端为UpdateServer,其配置文件为: <

从在线升级说起

b/s比c/s有一个非常大的优势在于升级简单,升级有限的服务器就ok了,而c/s模式则是每台客户机都需要升级,版本一致比较难控制,所以在线升级就成了很重要的问题. 当时研究这个的时候存在的问题是,公司所有的产品的在线升级是VB写的加上几个VC写的com组件,每个产品需要就修改部分源代码,然后编译出一个自己产品用的,然后可能一台电脑上安装了几款我们公司的产品,也有好几个升级进程,相互影响.还有如果不是管理员权限,安装补丁包就会不能写注册表之类的,有一些问题. 研究了下谷歌的一个在线升级项目,开源的

VB.NET在线升级程序源代码,可以独立使用

这个程序是我做一个办公管理系统的时候用到的,这里有源码,需要的亲拿去研究学习:vb.net在线升级程序: 程序实现了通过vb.net连接远程云服务器,并且从云服务器中获取更新,并且自动下载更新,升级本地客户端程序: 下载地址:UpEASoft.zip   429.56 KB

Android在线升级相关笔记一(解析服务器版本与当前版本比较)

大概流程:Android客户端去访问服务器上的封装了版本号等信息的xml文件,对服务器上的版本和当前版本进行比较, 如果低于服务器的版本,则下载服务器上的新版软件,进行安装替换,完成升级. 一.首先用tomcat搭建服务器,用于开发测试. 下载tomcat请参考:http://blog.csdn.net/only_tan/article/details/25110625 1.在tomcat中新建自己的项目: \apache-tomcat-6.0.39\webapps 目录下新建自己的项目文件夹,

SequoiaDB版本在线升级介绍说明

1.前言 在SequoiaDB数据库发展过程中,基本保持每半年对外发行一个正式的Release版本.并且每个新发布的Release版本相对老版本而言,性能方面都有很大的提高,并且数据库也会在新版本中加入很多新的功能,希望能够提高数据库开发的易用性. 在SequoiaDB发展过程中,越来越多的开发者了解到它,并且对它发生兴趣.现在已经有越来越多的用户在学习.研究SequoiaDB,并且也有越来越多的企业用户在对SequoiaDB经过充分测试后,决定将SequoiaDB部署在企业的生产环境中,利用S

PIC32MZ 通过USB在线升级 -- USB CDC bootloader

了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 最近给我的开发板PIC32MZ EC starter kit写了个USB 在线升级程序--USB CDC bootloader.有了它,我可以很方便的升级我的应用程序.我大概是一个星期前开始决定写这个USB在线升级程序的,USB 有很两种类型,USB host和USB device. 由于USB host接触不多,所以我

软件更新相关,使用utuils框架在线升级,显示progressDialog,下载完成后自动弹出安装界面。

使用utuils框架在线升级,显示progressDialog,下载完成后自动弹出安装界面. 1 private void updateDownload() { 2 //检测内存设备是否可用 3 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ 4 //设置存储路径 5 final String targer = Environment.getExternalStorageDirectory

BS网站在线升级(服务器通信)

背景:日前公司需要将客户企业站增加在线升级功能.即客户登录自身网站管理后台后台,发生请求到我公司门户网站,如果存在新版本则提示用户更新.客户从我们公司买到的空间.数据库.和网站代码后可以直接根据智能提示完成webconfig配置,后期客户可以从我们手中购买网站模版实现个性化风格主题的网站设置.我们所有客户的网站结构是一模一样的.因为前台客户浏览的页面均为代码自动生成的静态页,所以更新过程不影响访客浏览. 分析:BS架构项目不同与CS架构——通过请求检测版本更新后返回更新包,根据本地安装目录即可完

嵌入式系统 - 在线升级

所谓在线升级,指在Linux启动后可通过网络传输内核或者文件系统,然后替换掉原来的文件,有以下2种方法: 提示:在线升级功能要使用ramdisk文件系统.这种文件系统会加载到内存中使用,用户做任何修改都不会写入flash,不会保存. 1.uboot下将内核.文件系统等文件通过jffs2压缩后写进flash某个分区,在Linux下将次分区挂载到文件夹下, 然后就能看到这些文件,可以直接予以替换升级: 2.内核等文件直接写入flash分区中,在Linux下通过 /dev/mtdblock 设备将升级