6410启动过程分析

时间:2021-02-21 04:57:49

河北科技大学

孟志永

QQ:26325940

Email:KDMZY@163.com

2013年3月26日星期二

一、ARM6410的存储器空间结构

        ARM6410有32位物理地址,分为2部分,一部分用于内存,一部分用于外设。

        32位地址对应4G的空间范围。即从0x0000_0000到 0xFFFF_FFFF。

        主存储器通过SPINE总线访问,范围从0x0000_0000到 0x6FFF_FFFF,该空间有被分成4部分:引导映像区、内部存储区、静态存储区和动态存储区。

        外设地址空间从0x7000_0000到 0x7FFF_FFFF,通过PERI总线访问,所有的SFRs都在此空间。

6410启动过程分析

        外设空间即AHB总线内存表,内容太多,这不在重复,详见6410数据手册中的Table2-3。

二、6410启动详述

        (1)6410支持多种启动模式,这些启动模式包括:NorFlash启动、NandFlash启动、OneNAND启动、MODEM启动以及IROM启动,而IROM启动模式下,又支持MoviNand,SD/MMC,iNand,OneNand和Nand等启动模式。既然有多种启动方式,必定有启动方式的选择方法。因为启动模式是在程序运行之前,所以这些配置方法应该是由硬件来设定的。

与启动相关的硬件引脚有:XSELNAND、OM[4:1]、GPN[15:13]。这些引脚组合实现相应的启动配置。见下表:

表1  6410启动配置表

6410启动过程分析

(2)IROM启动详述

6410启动过程分析

        IROM配置存储器控制器,然后由存储器控制器把存储器中的BL1读入到Stepping Stone中运行,BL1配置SDRAM控制器,负责把BL2读入到SDRAM中然后启动BL2,BL2负责把OS和F/S引导起来,操作系统就正常工作了。

        IROM中的程序是由三星固化的,它仅能读取4K的BL1到Stepping Stone中,虽然Steping Stone有8K,因此也只能使用4K空间。

        固化的IROM只能从固定地址读取BL1,不同的存储器的读取地址也不相同,所以在存储器内BL1的存放地址要于此相对应(NAND:0x0C00400、高级NAND:0x0C00404、SD/MMC:0x0C00408、OneNAND:0x0C0040C、4字节突发的OneNAND:0x0C004010、8字节突发的OneNAND:0x0C004010)。详细地址及IROM功能流程详见IROM的启动流程图。

        不同的存储器有着不同的硬件结构及不同的驱动方式,IROM必须获取相应的信息来配置自己的驱动模式。对于NAND Flash来说这些信息是由硬件GPN[15:13]来指明的,而对于SD/MMC存储器设备则需要由存储器内部固定位置存放的数据来提供。

        无论哪种启动存储器,BL1最大8K空间,不同的存储器BL1的位置不同,对于NAND Flash来说是从其Block 0地址开始的8K空间,NAND Flash页大小不同,那么8K空间所占用的页数量也不同,比如512B/Page,则8K需要16个页,2048B/Page,则需要4个页,若4096B/Page,则需要2个页。