历史上的今天

今天是:2024年09月10日(星期二)

正在发生

2019年09月10日 | 基于STM32从零写操作系统系列---bootloader

发布者:asa1670 来源: eefocus关键字:STM32  操作系统系列-  bootloader 手机看文章 扫描二维码
随时随地手机看文章

本章主要使用汇编语言编写STM32F103(以下称为“该芯片”)的启动代码。具体结构如图:

启动模式

 该芯片可以通过设置BOOT0和BOOT1两个引脚,选择不同的启动方式,正常情况下BOOT0=0,BOOT1=0(0为低电平)。即,芯片将从Flash中加载代码启动。


当芯片上电/复位后,芯片首先从地址0x0000_0000处获取栈地址,然后将地址0x0000_0004处的值赋值给PC寄存器。按照PC寄存器的值,取第一条指令,执行......具体如图:

 地址0x0800_0205处的具体代码如图:


简单来说,地址0x0000_0004处存放的是复位处理函数的地址。当上电/复位时,芯片硬件会自动将地址0x0000_0000处的栈地址赋值给MSP寄存器;将地址0x0000_0004处的复位函数地址值赋值给PC寄存器;然后就从PC寄存器所指的地址开始执行代码。


为什么Flash的地址明明是从0x0800_0000开始,但芯片是从地址0x0000_0000处开始取数据呢?原因很简单,当我们设置BOOT0=0,BOOT1=0时,芯片会将flash的地址范围映射到0x0000_0000~0x0007_ffff的地址范围内,如图:


向量表

当发生了异常并且要响应它时,CM3 需要定位其处理例程的入口地址。这些入口地址存储在所谓的“(异常)向量表”中。缺省情况下,CM3 认为该表位于零地址处,且各向量占用 4 字节,因此每个表项占用 4 字节。如图:

 完整的向量表定义,请看源代码。


复位处理函数

用于上电/复位后,初始化芯片,让芯片能够以最好的状态运行。初始化完成后,跳转到_main函数继续执行。如图:

初始化SystemInit.s

主要是配置芯片的时钟,禁止所有中断,设置向量表位置。如图:


链接脚本

用于链接各个目标文件,定义各个代码段,数据段的位置。如图:

 这个链接脚本的作用,可以简单地理解为规划Flash。如图:

 所以,我们看到第一条指令是放在地址0x0800_0200处的。


Makefile

用于多文件编译管理。如图:


 

main.s 

在本章中,main.s只做死循环,下一章将点亮LED灯。如图:

实验步骤:

1.如下图,创建一个文件夹,在文件夹中新建如图中的文件,按照上面所分析的编辑代码。

 2.在命令行中,进入上一步创建的文件夹,输入make,编译项目。如图:


3.如无意外编译通过,然后按照前面章节讲述的步骤,将生成的.bin文件下载到芯片里。


4.简单对比.list文件与芯片flash中的数据,如图:


小结

本章到此结束,主要是简单介绍了该芯片的启动模式设置,启动流程。stm32F103的初始化没有什么复杂的设置,可以通过相关文档手册,了解向量表的内容;或参照STM32固件库v3.5的源代码。有关链接脚本,Makefile的知识,在本系列博客中不会讲解,网上有相关的资料文档。


关键字:STM32  操作系统系列-  bootloader 引用地址:基于STM32从零写操作系统系列---bootloader

上一篇:基于STM32从零写操作系统系列---基于寄存器写串口驱动
下一篇:基于STM32从零写操作系统系列---熟悉纯windows交叉编译环境

推荐阅读

近日,由中国电子信息产业发展研究院,工信部软件与集成电路促进中心,《中国集成电路产业人才白皮书》编委会合作发布了中国集成电路产业人才白皮书(2017-2018年版)。在大会期间,紫光展锐高级副总监罗路做了报告,分享了紫光展锐的人才建设经验,并为中国集成电路产业人才培育提出了种种的建议。罗路表示,作为最大的芯片消费国,我国长期以来依赖国际...
赶在苹果秋季发布会开始前,天风国际分析师郭明錤给出了最新的报告,报告中修正指出了新iPhone的反向充电功能将会被去掉。郭明錤在报告中提到,预测3款新iPhone在2019出货量年衰退约5–10%,至6500–7000万部。但因旧款iPhone降价后需求增加,相信2019年iPhone出货量可达约1亿8000万部。除了反向充电功能外,新款iPhone也不支持Apple Pencil输入。郭明錤...
Z-Wave联盟日前宣布推出Z-Wave远程协议(Z-Wave-LR),增加了该无线低功耗协议的范围和可扩展性。Z-Wave标准组织表示,该协议将无线范围扩大了四倍,具有10倍的节点可扩展性,可提供更大的网络支持和10年硬币电池寿命。它还保持了Z-Wave的向后兼容性。Z-Wave连接覆盖家庭内部,支持门锁、车库门传感器和门禁解决方案等设备。“Z-Wave-LR规范是新的Z-Wave联...
实验名称:功率放大器基于声振响应法的香梨硬度无损检测实验目的:使用无损检测的方法检测判别香梨内部品质的差异试验设备:香梨、试验台架、压电梁式传感器、ATA-2041功率放大器、振动控制与动态信号采集分析仪、计算机等组成。实验内容:该研究搭建了由压电梁式传感器进行信号激励和感测的检测装置,分析了装置信号检测的稳定性,提取了香梨共振频率和声...

史海拾趣

问答坊 | AI 解惑

新一代视频监控系统应用中存储解决方案

监控技术从上个世纪80年代进入我国以来,随着安防需求的急剧增加一直在飞速发展,从技术层面上来看,已经经历了多个不同的发展阶段。随着计算机技术的发展和网络的普及,目前,视频监控已经发展到了网络多媒体监控系统。       新一 ...…

查看全部问答∨

Windows Mobile 3.0 Pocket PC如何升级?

我在网上购的cu928.是Windows Mobile 3.0 Pocket PC的,很多插件都安装不了!想升级,但不知道如何?…

查看全部问答∨

无线电收发设备的研究

我想设计一个无线收、发的小设计,主频在315M左右,要求距离在200米以上,但不知道怎么去设计,请各位大师指点一下,用什么片子比较合适,还有应该注意些什么。谢谢!…

查看全部问答∨

关于pictureBox设置图片问题!

各位过路大侠好,我刚学win ce,请问win ce里的pictureBox怎么设置显示图片?谢谢了先!…

查看全部问答∨

WinCE系统存储数据中的问题

请问在wince系统中数据存储一次是不是都要擦除一个扇区的区域,即只存储一个字节的数据,要擦除一扇区的区域吗?还是只擦写数据相应大小打区域? …

查看全部问答∨

atmega16中文资料

atmega16中文资料,大家共同来学习啊…

查看全部问答∨

symbol的问题

本帖最后由 dontium 于 2015-1-23 13:21 编辑 \\"d:\\\\soft\\\\ti_omap\\\\c5500\\\\cgtools\\\\bin\\\\cl55\\" -@\\"Debug.lkf\\" undefined                    &n ...…

查看全部问答∨

IAR FOR MSP430 5.4破解软件下载

IAR FOR MSP430 5.4破解软件下载,也可用于IAR FOR ARM 6.3,测试可以用…

查看全部问答∨

这样的一块M3不能通电使用真实暴殄天物

这块板子已经是第三版了,仍然存在主控3.3V供电短路到地的问题,以至于不曾通电,真实暴殄天物主控为LM3S5P36讨论见:https://bbs.eeworld.com.cn/thread-339655-1-1.html…

查看全部问答∨

開發mp3 player use VS1011

各位大大你們好 我有看到版上很多人製作mp3的文章 但都是vs1003 and vs 1053 我想請問用vs1011也可以相容嗎? 我有比對vs1053 跟 vs 1011 最大差別有無MIC 因為小弟我只單純使用mp3的功能…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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