当前位置: 首页 > news >正文

STM32F030 BootLoader与应用程序的跳转设置

document_thumb_thumb前言

本文介绍STM32F030系列芯片从BootLoader跳转到应用程序,所需要的操作。以下以STM32F030C8T6为例。

document_thumb_thumb正文

  在STM32F030中,BootLoader程序存放在Flash中以0x08000000开始的地址。假设预留给BootLoader的空间为0x3000,即12K。则应用程序的起始地址为0x08003000。应用程序中,除了需要在Target中设置代码存放地址,还要重定位向量表。然而M0不像M3那样支持向量表重定位。具体看RM0360手册45页,截图如下:

图 1 硬件重定位

  上图给出了解决办法,具体如下:

  1.复制应用程序向量表到SRAM的起始地址。对应于应用程序Flash,向量表为从0x08003000开始的48×4个字节。具体向量表的大小需要根据启动文件定义来计算。

    代码:memcpy((uint32_t*)0x20000000, (uint32_t*)0x08003000, 48*4); 

  2.设置为从SRAM启动,这样当发生异常时,就会跳转到SRAM的起始地址部分,而该部分放置的正好是向量表。

    代码:SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM);

  以上代码添加在应用程序最开始的地方。

  3.在应用程序的Target菜单中,需要为向量表预留足够的SRAM空间,48X4=192=0xC0,如图2所示。

图2 FLASH及SRAM设置

  通过以上操作,程序即可从BootLoader正常跳转到应用程序执行。

document_thumb_thumb4[1]声明

  本文为Xavier_Tse原创作品。本文允许复制,修改,传递,但不允许用于商业用途。转载请注明出处。本文发表于2017年3月28日。

转载于:https://www.cnblogs.com/challenge1230/p/6635925.html

相关文章:

  • 给自定义控件.ascx文件传参数并传值 ,让你定义的控件可用性更大
  • Bootstrap支持的JavaScript插件
  • 1+1=2的 blog 文章索引
  • Codeforces Round #407 div2 题解【ABCDE】
  • FixTableHeader
  • HTML基础3(列表,块,布局)
  • 用gcrawler进行多级页面并发下载的例子
  • 01煤球数目(数字填空)
  • 黑盒测试-决策表法
  • 选中行的索引: tr onclick=alert(this.rowIndex)
  • 09使用后置处理器正则表达式将接口返回值传给另一个接口;
  • PHP大文件分割上传(分片上传)
  • 一行代码完美解决fireFox,opera的页面居中对齐问题
  • outlook关联qq邮箱失败显示503错误
  • .net 使用ajax控件后如何调用前端脚本
  • @jsonView过滤属性
  • __proto__ 和 prototype的关系
  • Bootstrap JS插件Alert源码分析
  • CentOS6 编译安装 redis-3.2.3
  • docker容器内的网络抓包
  • es6--symbol
  • FineReport中如何实现自动滚屏效果
  • interface和setter,getter
  • JavaScript设计模式与开发实践系列之策略模式
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Spring Boot快速入门(一):Hello Spring Boot
  • use Google search engine
  • 面试遇到的一些题
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 试着探索高并发下的系统架构面貌
  • 突破自己的技术思维
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • #100天计划# 2013年9月29日
  • #微信小程序(布局、渲染层基础知识)
  • ( 10 )MySQL中的外键
  • (ZT)出版业改革:该死的死,该生的生
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (七)Knockout 创建自定义绑定
  • (五)MySQL的备份及恢复
  • (一)为什么要选择C++
  • ****Linux下Mysql的安装和配置
  • .bat批处理(六):替换字符串中匹配的子串
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .NET面试题(二)
  • .Net组件程序设计之线程、并发管理(一)
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @Autowired 与@Resource的区别
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • @WebServiceClient注解,wsdlLocation 可配置
  • [145] 二叉树的后序遍历 js
  • [Angular] 笔记 20:NgContent
  • [BUG] Authentication Error