基于OK6410的嵌入式开发教程(上)

基于OK6410的嵌入式开发教程(上)

ID:47491286

大小:4.48 MB

页数:57页

时间:2020-01-12

基于OK6410的嵌入式开发教程(上)_第1页
基于OK6410的嵌入式开发教程(上)_第2页
基于OK6410的嵌入式开发教程(上)_第3页
基于OK6410的嵌入式开发教程(上)_第4页
基于OK6410的嵌入式开发教程(上)_第5页
资源描述:

《基于OK6410的嵌入式开发教程(上)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、U-BOOT编写(基于OK6410)Writtenbywater571.U-BOOT工作原理及设计蓝图在所有章节开始必须首先介绍一下U-BOOT,所谓U-BOOT就是bootloader的一种,可用于多种cpu(x86,ARM等),在不同系统像Linux,Vxworks,QNX等上运行调试。它能起到在上电后能对硬件,存储器,内核等完成初始化,并且引导内核和文件系统正常工作的作用。U-BOOT并不是单纯的裸机程序,在学完此课程后,可以完成大部分裸机程序的调试,移植与开发。最后得说明,我所用的开发板是OK6410,而我所做的学习笔记完全是建立在国嵌视频上的,我会在这个笔记中对视频的内容进行总结,

2、顺序会有所调整。1.1U-BOOT工作原理要讲解这个首先需要让大家看一张图(注:这张图是2440的机理图,放在这里是为了能方便讲解和理解):这张图共分为两部分,左边部分是用于norflash启动,而右边这57部分就是用于nandflash启动了,这个也是我们讲的重点。首先需要明确一点,上电后第一条程序,肯定是从0地址(0x00000000)开始执行的。左图显示0地址是在SROM中,这个我们不去管它,而右图显示第一条指令是从SRAM中执行的,而这个存储器只有4K,在这里我们就需要先明确一下“垫脚石(SteppingStone)”这个概念了。在2440选择从nandflash启动刚上电时,系统会

3、自动将nandflash中bootloader的前4K,放入到我们前面所述的0地址,也就是BootinternalSRAM中,此时系统会执行bootloader的前4K,同时系统还会将整个bootloader复制到我们的内存,前4k执行完后,就跳转至内存继续执行剩余的bootloader,而我们这里4K大小的SRAM就是垫脚石(steppingstone)。为什么需要它,这点很简单,两图对比,我们就能发现我们的nandflash没参与我们的统一编址,所以只能借steppingstone作为我们的桥梁。介绍完2440,我们来看看6410。先给大家几张图:图157图2图3我们先看图2,从图2我们

4、可以看出6410可以从哪些部分启动,而那些部分又被存放在哪儿,我们可以注意到nandflash是被存放在IROM中的。接下来我们看图2,我们可以看到0地址处放的是一个最大可达到128M的存储器,描述和备注我就不赘述了,可以看出他57是个镜像存储器,接下来就是IROM和steppingstone,下面的存储器我们暂时不研究,不说了。看完两张图,可能最有疑问的是最后一张图,我们说过上电执行的第一条程序应该在0地址处,为什么那里不像2440一样放的是steppingstone,而是一个镜像存储器呢。其实聪明一些的话,应该已经注意到了,既然是镜像存储器,那当上电后,我们的IROM和steppings

5、tone(两个最大都能达到64M),会被镜像入0地址处的存储器(最大可达128M)中,然后剩下的就和2440一样了。在这里可能大家还会有疑问,2440是直接从steppingstone中直接启动,6410前面突然多了个IROM,好象有些不适应。我们来看图1。图1是6410bootloader的工作原理图,我们可以看到IROM里存放的是BL0,这个BL0他会首先完成对硬件的初始化,同时会将BL1也就是BL的前8k(6410的steepingstone为8K)放入垫脚石中,然后就和2440一样,将BL放入内存继续执行。至此,bootloader的工作原理讲解完毕。现在必须要分析bootloade

6、r启动流程以完成我们自己的bootloader的架构设计。我们采用分析U-BOOT的方法,来建立属于我们自己的bootloader。由于分析的过程冗长耗时,在这里我就不分析了,但我会给出一张分析出的结果图:572.U-BOOT编写2.1一些需要知道的知识概述首先大家必须先要了解的是ARM处理器的七种工作模式:图157图2两张图表明ARM处理器一共有7种工作模式,在这里我列一张表格来叙述其名称及作用:用户模式usr用于普通状态下正常执行程序系统模式sys运行具有特权的操作系统任务管理模式svc对操作系统的保护模式数据访问中断模式abt当数据或指令预取终止时进入该模式,可用于虚拟存储或存储保护未

7、定义指令终止模式und当未定义的指令执行时进入该模式,可用于支持硬件外部中断模式irq用于通用的中断处理57快速中断模式fiq用于高速数据传输或信道处理有几点需要说明普通的应用程序是在usr下运行,而我们的内核和bootloader是在svc下运行。至此,7种工作模式交代完毕,而图1中0bxxxxx,这种东西是用于CPSR,即程序状态寄存器使用的。这也是我们接下来要说的,我们的处理器一共有37个寄存器,如图2

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。