现在的位置: 首页 > 综合 > 正文

DM355的启动方式

2013年03月18日 ⁄ 综合 ⁄ 共 1475字 ⁄ 字号 评论关闭

 DM355有两种启动方式,是由BTSEL[1:0]引脚决定的

第一种是从片外的Asynchronous EMIF (AEMIF) 启动 是指从片外的三星OneNAND 器件启动

第二种方式是从片内的ROM启动,执行ROM中的ROM boot loader (RBL),RBL支持三种片外介质,BTSEL决定RBL针对哪种介质进行启动

– BTSEL[1:0] = 00 - ARM NAND Boot
– BTSEL[1:0] = 10 - ARM MMC/SD Boot
– BTSEL[1:0] = 11 - ARM UART Boot

现在选择从片外的NAND启动,这种启动方式的具体步骤是RBL先从片外NAND上将UBL(user boot loader)取进ARM内部的RAM中(copies a second stage user boot loader (UBL) from NAND flash to ARM internal RAM (AIM) and transfers control to the user-defined UBL),然后执行,UBL进行的工作是从NAND中将剩下的数据取进DDR中并跳转到那里。

 

在NAND中存在两种代码,1是UBL,二是用户自己的代码APP,RBL是如何找到UBL的呢,原来对于RBL和APP在Nand中的存储必须符合一定的格式,在存储UBL或者APP代码的第一页是专门用来存储一个信息头,这个信息头的格式如下

/* Some of the parameters are modified runtime */
unsigned int ubldesc [] = {
0xA1ACED00, //Magic number
0x00000020, // Entry point for the UBL
0x00000007, // No. of pages for the UBL code
0x1, // Starting block of UBL in NAND
0x1 // Starting page of UBL in NAND
};

/* Some of the parameters are modified runtime */
unsigned int appdesc [] = {
0xB1ACED22, //Magic number
0x0000000A, // Start block in NAND
0x81080000, // Start address in DDR
0x81080000, // Entry point
0x00000200, // No. of pages for the complete Application
0x00000000  //compression flag
};

这个信息头分别包含了程序加载时的起始地址和入口点等等信息,当DM355复位时,片内ROM上的代码对NAND CONTROLLER进行初始化并且在NAND中寻找UBL的Magic number (事先已经约定好的),找到以后就根据信息头里提供的信息将UBL拷贝进片内RAM中(0x00000020, // Entry point for the UBL),然后进行执行,UBL的代码在光盘中有提供,其机制和RBL相同,只不过这个UBL是针对UBOOT的,如果不详执行UBOOT而是向执行自己的代码  那么需要将CCS编译出来的OUT文件转化成bin文件 下载到NAND中。

 

总结一下nand中存放的东西 UBL、uboot、LINUX的内核映像uimage、文件系统。

前两个的下载是用NAND_programmer进行,NAND_programmer的代码在光盘中也有,就是一段运行在DDR中的程序,将输入的UBL 和uboot文件加上信息头后存储到NAND中

后两个的下载用uboot就能实现。 

 

 

抱歉!评论已关闭.