BootARMblock.docVIP

  • 8
  • 0
  • 约1.04万字
  • 约 11页
  • 2017-03-05 发布于重庆
  • 举报
BootARMblock

? Boot block 2009-07-30 18:05?4322人阅读?评论(3)?收藏?举报 存储flash编程嵌入式加密硬件驱动 请教boot block到底是什么? 1.对于zlg的开发板,boot block的内容是否就是开发模板里的那些文件编译成ELF再传到Flash中? 2.还有用户程序是放在Flash的哪个地方?Flash开始64字节和结尾8k字节之间? ? ZLGARM: boot block 是芯片设计厂家在LPC2000系列微控制器内部固化的一段代码,用户无法对其修改和删除。这段代码在芯片复位后首先被运行,其功能主要是判断运行那个存储器上的程序、检查用户代码是否有效、判断芯片是否被加密、芯片的在应用以及在系统编程功能。 ? -------------------------------------------------------------------- ARM上的Bootloader的具体实现 BootLoader简介: 当完成用户程序的编译并下载到目标板上运行时,总是要首先进行存储器的映射,然后通过 ADS(或 SDT)调试环境下载,显然,这个过程对普通用户来说显得特别烦琐,然而,要在裸板(没有任何程序的系统板)上调试运行程序,也只能采用这种方法。? 如果能在用户设计的系统板上烧写一段 BootLoader程序,就可以将该过程屏蔽起来,让用户通过一些简单的操作,就可完成程序的下载、调试等工作。在嵌入式系统中,BootLoader的作用与 PC 机上的 BIOS 类似,通过 BootlLoader可以完成对系统板上的主要部件如 CPU、SDRAM、Flash、串行口等进行初始化,也可以下载文件到系统板、对 Flash 进行擦除与编程。事实上,一个功能完善的 BootLoader 已经相当于一个微型的操作系统了。? BootLoader 作为系统复位或上电后首先运行的代码,一般应写入 Flash 存储器中并从起始物理地址?0x0 开始。BootLoader 根据实现的功能不同而不相同。一个简单的 BootLoader程序可以仅仅完成串行口的初始化,并进行通信,而功能完善的 BootLoader可以支持比较复杂的命令集,对系统的软硬件资源进行合理的配置与管理。因此,用户可根据自身的需求实现相应的功能。 涉及具体汇编代码前,有些术语要必须弄懂的 映像文件(image):指一个可执行文件,在执行的时候被加载到处理器中,它是ELF(Executable and Linking Format)格式的。 RO :是Read-Only的简写形式。一般存放的代码 RW:是Read-Write 的简写形式,一般存放初始化的数据 ZI:是zero-Initialized的简写形式。一般是存放初始化数据 输入段(Output Section):它包含一系列具有相同RO,RW,ZI属性的输入段 对于一个ARM bootloader系统来说,本质上,bootloader作为引导与加载内核镜像的工具,必须提供以下几个功能: ~1~初始化RAM(必需):bootloader应该能初始化RAM,因为将来系统要通过它来保存一些Volatile数据,但具体地实现要求依赖与具体的CPU以及硬件系统。 ~2~初始化串口(可选),bootloader应该要初始化及使能一个串口,通过它与控制台联系进行一些debug的工作;甚至与PC通信。 ~3~创建内核参数列表(针对linux操作系统,推荐)。 ~4~启动内核镜像(必需):根据内核镜像保存的存储介质不同,可以有两种启动方式:FALSH启动以及RAM启动;但是无论是哪种启动方式,下面的系统状态必须得到满足: ? Bootloader??阶段1的代码实现: 1,定义ARM个模式的栈大小 2,申明各模式的栈 3,将各模式的栈与栈大小结合起来,既为各栈分配栈大小 4,申明一些标号量 5,以某标号标识,一开始处设置异常中断向量表,当冷启动时,直接跳转至对应处启动 ? 为什么在中断向量表中不直接LDR PC,异常地址.而是使用一个标号,然有再在后面使用DCD 定义这个标号 A:因为LDR 指令只能跳到当前PC 4kB 范围内,而B 指令能跳转到32MB 范围,而现在这样在LDR PC,xxxx这条指令不远处用xxxxDCD 定义一个字,而这个字里面存放最终异常服务程序的地址,这样可以实现4GB 全范围跳转. ? 如:LPC2220的,MAP=00boot装载程序,bootP0.14口的状态和用户的异常向量表,判断是进入ISP还是启动用户程序,若启动用户程序,则自动设置MAP=1或3。若用户程序需要更改异常向量表,可以将异常向量表复制到片内0然后设置MAP=2进行重新映射

文档评论(0)

1亿VIP精品文档

相关文档