您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第二章4412启动流程
Booting:一、Exynos4412SCPhas64KBROM(iROM)and256KBSRAM(iRAM)asinternalmemory.Exynos4412拥有64K的内部ROM(IROM)和256K的内部SRAM(IRAM)。Exynos4412支持四种启动方式:1、GeneralNANDflashmemory2、SD/MMCmemorycard3、eMMCmemory4、USBdevice二、上电执行过程当系统复位或者上电,程序会从IROM(0x00000000)运行,引导加载程序。IROM是芯片厂家事先烧写到芯片上的(固化在内部ROM中的),自带bootloader。(无源码)问:那么IROM功能是什么呢?IROM把启动设备上特定地址的程序读入到片内内存(IRAM),然后执行这个程序。(这个程序就叫BL1,一样由芯片厂商提供)问:那么启动这个芯片厂商的程序后,又会做什么事情?BL1又从特定的地址把程序读入片内内存(IRAM),并且执行。(这个程序叫BL2,由工程师自己编写的源码)那么根据上面的图来总结下4412的启动过程:第一步:图上的①在内部64K的IROM运行程序(也就是0地址运行程序)功能是把启动设备上特定位置处图上的②的程序读入到片内的IRAM里面(这种方式叫BL1,BL1是三星公司提供的,无源码。)第二步:IRAM运行的程序(也就是BL1的程序,0x02021400位置开始运行程序),这个程序又会将③的程序读入片内内存/或者片外内存,并且去执行它。(这个阶段叫BL2,程序由编写者提供)猜想:如果OS文件大于256K那么片内内存空间不够,那么程序应该如何去执行,在BL1把OS文件拷贝到内部内存时候,前面的小于256K用于把启动设备中的OS文件拷贝到更大的片外内存去运行。(u-boot时候就能体现出来)总结上面,可以了解4412的启动过程,那么如何让4412开发板工作起来?那就有以下几个问题:1、IROM做了什么事情?固化在芯片的那个位置?2、BL1又做了什么事情?又是如何去存放的?3、BL2(自己写的程序)是如何构成,又是如何去存放的?接下来先介绍BL1和BL2文件。那么BL1文件从哪里来?答:上面介绍中,BL1文件由三星公司提供:E4412_N.bl1.bin那么BL2文件如何构成:答:BL2.bin文件获取就比较复杂点:1.从源文件(比如led.bin)中读取14K的数据到Buf当中;2.处理Buf中前14332字节的数据,得到4字节的checksum;3.组装Buf中前14332字节的数据和4字节的checksum,得到一个新的14K的Buf数据;4.将第三步中构建的Buf数据写到bl2.bin文件中如何存放就要去看4412的内存是如何排布的。三、对于IRAM的起始地址和大小是多少?查看内存映射图:可以看出来IRAM是从0x02020000到0x02060000大小为256K从启动流程可以知道BL1阶段IROM会去设备的某个位置读取数据,那么这个位置是多少?BL1阶段后又会去设备某个位置读取数据,那么这个位置是多少?问题:程序应该放在设备的那些特定的位置,才能保证程序能正确被读取和正常运行?下面来看个图来解决上面的问题。从图上看,IRAM的起始地址0x02020000到0x02021400的位置,5K大小为芯片的产品ID,IROM的版本,设备的入口函数等。从0x02021400到0x02023400的位置,8K大小为BL1的存放大小。从0x02023400到0x02027400的位置,16K大小为BL2的存放大小。以SD卡为例子:最后总结下:IROM启动流程:IROM内部固定程序,会先去运行环境,关看门狗、关中断、关MMU、设置栈、启动PLL等,然后根据OM引脚从启动设备读取BL1程序。BL1程序启动流程:同样去设置运行环境、初始化中断、设置栈。从启动设备读取BL2读取程序,执行BL2程序。BL2:由裸机开发人员自己决定。(当然只能干板级支持的事情)
本文标题:第二章4412启动流程
链接地址:https://www.777doc.com/doc-2185777 .html