STM32的启动模式:
STM32有三种启动模式,对应的存储介质均是芯片内置的:     
1. User Flash Memory(Main Memory) 
= 芯片内置的Flash,用户程序存放在其中,这是正常的工作模式。一般情况下,都是选择这种启动方式。
1. User Flash Memory(Main Memory) 
= 芯片内置的Flash,用户程序存放在其中,这是正常的工作模式。一般情况下,都是选择这种启动方式。
2. System Memory(System Memory)   
= 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域在出厂后没人能进行擦写或修改,是一个ROM区。
3. SRAM
= 芯片内置的RAM去,也就是STM32的内存了。这种模式可用于调试。HOW?如何将程序download到SRAM?仿真器能做到这一点?

 
下面看一下STM32F10xxx Reference Manual中关于启动配置的描述。
1.  CPU从地址0x0000 0000 获取堆栈顶的地址,并从启动存储器的0x0000 0004 指示的地址开始执行代码。
——这句话暂时不理解,待学习。
2. STM32F10xxx微控制器实现了一个特殊的机制,系统可以不仅仅从Flash存储器或系统存储器启动,还可以从内置SRAM 启动。
——这个机制具体是怎么实现的不去深入追究,结合STM32F10xxx的的Memory Map可以更直观的理解一下。
3. 注意:当从内置SRAM 启动,在应用程序的初始化代码中,必须使用NVIC的异常表和偏移寄存器,重新映射向量表至SRAM 中。
——如何重新重新映射向量表?
分别分析一下这3种启动方式:
1. Boot from User Flash Memory
这是STM正常的启动方式,STM32从Flash存储的第一条指令开始执行,即执行STM32的启动代码stm32f10x_vector.s(或stm32F10x_xxx_xxx.s或startup_xxx.s 根据STM32 Firmware library的不同而不同),执行启动代码后会跳到main函数,执行用户程序。
2. Boot from System Memory
该启动方式主要是用于下载程序到User Flash Memory中。System Memory即STM32的ROM,该区域中存放着出厂前预置好的bootloader程序,该程序支持Uart,CAN,USB下载(STM32F103XX只支持从UART1下载)。用户可以根据bootloader中的命令定义(可参考《AN3155》),自己编写一个PC客户端程序,通过将PC的串口与STM32的UART1相连,然后将程序下载到User Flash Memory中。
因为最终还是要运行用户的程序,因此必须让STM32跳转到User Flash Memory中运行。有两个方法:
1)当程序成功下载到User Flash Memory后,将bootloader的GO命令的address设置为User Flash Memory中的地址,然后通过PC客户端程序发送GO命令给bootloader,bootloader会根据GO命令的address参数,跳转到User Flash Memory中启动程序。
2)当程序成功下载到User Flash Memory后,将pin BOOT0设置为0,Reset STM32,则STM32会从User Flash Memroy中启动。
3. Boot from SRAM
主要用于JTAG,JLINK仿真调试,暂时还没有仿真器,没有仔细研究。
附录:STM32 Flash组织结构分析:
Main Memory: 
Page0 - Page127 = 1KB * 128Page = 128KB total
该区域地址范围:0x08000000 - 0x0801FFFF,总大小为128K字节。
该区域的主要用途:存放STM32的代码段(用户程序)。
Information Block:
System memory: 
系统内存,该区域存放着STM32的bootloader,该bootloader是芯片出厂时就设置好的,主要用于通过UARTx下载程序到Main Memory中。用户可以自定义host下载程序,根据bootloader的消息定义,通过UARTx与bootloader通信,实现程序下载和程序启动引导。详细请参考文档《AN3155》。
Options bytes:       
What's this used for?
Flash memory interface registers:
操作这些寄存器,可实现对Flash的读写等操作。详细请参考文档《PM0075》
备注:文中提到的文档,均可在STM32的官方网站上下载到,如下载《AN3155》,在http://www.st.com/web/en/home.html网站上搜索‘AN3155’即可。

STM32F10xxx启动模式分析 – 梦想照旧相关推荐

  1. 最高1000万奖励!嘉善启动第八届“梦想中国·智汇嘉善”创新创业大赛

    4月2日,我县启动第八届"梦想中国·智汇嘉善"创新创业大赛,面向全球征集高层次人才创业项目.对于在创业大赛总决赛得奖的项目,最高给予1000万元项目奖励资助.对于在创新赛中引进的创 ...

  2. Android:四种启动模式分析

    2019独角兽企业重金招聘Python工程师标准>>> 在一个项目中会包括着多个Activity,系统中使用任务栈来存储创建的Activity实例,任务栈是一种"后进先出& ...

  3. Android中Activity的四种启动模式

    每次看到这种专有词汇都十分佩服创造者的智慧,创造者一定和我一样都中二,我已然确信. 我写博客的目的,就是希望不断磨练自己,让自己能够不将一件简单的事情讲的复杂,让自己能将一件复杂的事情讲的简单.嘛嘛, ...

  4. STM32项目中一种在线升级/应用升级OTA-IAP设计方案

    STM32 OTA-IAP设计方案 OTA是Over-the-Air的简写,即空中下载技术,通过网络远程给用户进行系统更新和升级.IAP是In Application Programming的简写,I ...

  5. Android系统Recovery工作原理之使用update.zip升级过程分析(一)

    这篇及以后的篇幅将通过分析update.zip包在具体Android系统升级的过程,来理解Android系统中Recovery模式服务的工作原理.我们先从update.zip包的制作开始,然后是And ...

  6. 产品研发专注于嵌入式领域里,迅为iTOP4418开发板资料(新

    北京迅为电子有限公司提供S5P4418/s5p6818开发板,三星四核S5P4418开发板与八核s5p6818底板兼容,支持官方推荐AXP228电池管理,动态调频,支持Android4.4/5.1.1 ...

  7. 迅为iTOP6818开发板QtE5.7应用例程源码

    应用源码请参考网盘"iTOP6818 开发板资料汇总(不含光盘内容)\08_iTOP-6818 开发板 QtE 应用开发环境以及源码\03_QtE5.7 应用例程"中的压缩包. 请 ...

  8. Android系统Recovery工作原理之使用update.zip升级过程分析(一)---update.zip包的制作【转】...

    本文转载自:http://blog.csdn.net/mu0206mu/article/details/7399822 这篇及以后的篇幅将通过分析update.zip包在具体Android系统升级的过 ...

  9. 哨兵二号波段介绍_警告!欧空局发布的哨兵二号卫星L2A产品存在严重问题

    点击图片上方蓝色字体"慧天地"即可订阅 "欧比特杯"高光谱遥感影像智能处理行业应用大赛已于2019年5月24日开始接受网上报名.报名请关注<慧天地> ...

最新文章

  1. Database之SQLSever:SQLSever数据库管理学习并深入理解SQL命令语句进阶综合篇《初级→中级→高级》(持续更新,建议收藏)
  2. mysql数据库系统配置文件_MySQL数据库(6)----配置文件 my.cnf 的使用
  3. 如何实现文章中文字的打字效果
  4. mysql快速入门_MySQL快速入门(三)
  5. Mongodb 分片与副本集
  6. php函数方法,基于PHP函数的操作方法
  7. python模糊图像清晰化_视频模糊图像处理
  8. Kuboard云原生管理工具
  9. python 数据库查询结果邮件提醒_python读取postgresql数据库并发送相关提醒邮件
  10. Linux中的 real user, effective user, saved set user 三种用户ID
  11. 太强了,头发丝完整保留!华盛顿大学研究员开源的实时视频抠图工具
  12. 推荐一款好用的Web端JSON在线编辑器svelte-jsoneditor
  13. 腾讯与新浪微博开放平台之比较
  14. 天正双击墙体不能编辑_入门必备!20个超实用天正CAD技巧,设计院高手都在收藏...
  15. 图像风格迁移 CycleGAN原理
  16. x509证书验证示例
  17. 武汉科技大学java题库答案_武汉科技大学 java实验报告 实验二
  18. Broekett定理):
  19. 如何判断网页是否更新??
  20. 《纯技术分析阿里云OS和Android之间的关系》补充

热门文章

  1. Java Http连接中使用代理(Proxy)及其验证(Authentication)
  2. 根据指定月份,打印该月份所属的季节3,4,5 春季 6,7,8 夏季 9,10,11 秋季
  3. 元宇宙代表人类的倒退
  4. java调用第三方天气预报API接口
  5. 服务器主板准系统怎么拆,【技嘉B85评测】主板准系统及电源装箱步骤完成-中关村在线...
  6. Python利用PyQt5制作一个获取网络实时数据NBA数据播报GUI
  7. PCB原理图绘制(2)——工程文件的初步修改与设置
  8. c#调用windows虚拟键盘
  9. 【prometheus】计算CPU使用率
  10. http协议网站配置SSL证书实现全站https协议