程序存储器,BootLoader和存储器重映射

Cortex-M0处理器的启动

当Cortex-M0处理器从复位中启动时,它会首先访问0地址的向量表,从而取得MSP的初始值和复位向量,然后它就可以从复位向量开始执行程序。要保证系统正常工作,系统中需要有合法的向量表和合法的程序存储器,这样处理器才不会执行恶意软件代码。

要实现这个目的,Flash存储器一般是从地址0开始的。不过,在用户编程以前,现在市场上的微控制器产品的Flash存储器中可能没有任何程序。为了保证处理器可以正确地启动,有些基于Cortex-M0的微控制器含有一个Boot loader,这是个位于微控制器芯片上的一小段程序,它会在处理器上电后执行并跳转,而且如果Flash存储器已编程的话,它会跳转到Flash中的用户程序执行。Boot loader 由芯片供应商预先编程,有时它位于片上Flash存储器并且与用户程序是分离的(这样用户更新程序也不会影响到Boot loader), 而其他情况下Bootloader则会位于和可编程程序存储器分离的非易失性存储器中(防止用户意外擦除Boot loader)。

当Bootloader存在时,微控制器通常会在系统总线上使用一种存储器映射切换特性,也就是“重映射”(remap)。存储器映射的切换由硬件寄存器控制, Boot loader执行时会设置这些寄存器。系统可以使用多种重映射方案,一种常见的处理是,Boot loader会在上电阶段通过地址别名被重映射到存储器的开头(见图7.4)。

在这里插入图片描述
Bootloader可能还具有其他特性,比如硬件初始化(时钟和PLL设置)、多种启动配置、固件保护,甚至可以用作Flash擦除工具。系统总线上的存储器映射特性并不是Cortex-M0处理器的一部分,因此,不同微控制器供应商产品的设计不同。ARM微控制器使用的另外一种重映射特性为,SRAM块可以重映射到地址0,上(见图7.5)。微控制器使用的非易失性存储器如Flash等要比SRAM慢,如果微控制器运行在较高的时钟频率下,Flash存储器中的程序在执行时就会需要插入等待状态。而将SRAM重映射到地址0后,程序就可以被复制到SRAM并以最快速度执行,这样会避免取向量表时出现等待,否则会增加中断等待的时间。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值