DM644X启动过程浅析

1 篇文章 0 订阅
1 篇文章 0 订阅
--------------------------------------------
本文系本站原创,欢迎转载!
转载请注明出处:http://zhiqiang0071.cublog.cn
--------------------------------------------

1. RBL阶段:

系统复位后,保存在片内ROM的RBL程序开始运行,RBL程序根据BTSEL[0-3]管脚的电平来判断相应的启动方式。
[00]表明是 NAND 启动方式 ,RBL程序便从外接nand flash中读取UBL的数据到内部RAM中(UBL最大可达14K), 然后 转至UBL代码运行; [01]表明是 EMIF A 启动方式, RBL 则直接 EMIFA EM_CS2 memory space(0x02000000)处开始运行,EMIFA的数据和地址总线宽度分别由EM_WIDTH和AEAW[4:0]引脚决定; [10]表明是HPI 启动方式 RBL 通过HPI传输代码获得UBL,然后 转至 UBL代码处运行 [11]表明是UART 启动方式 RBL 通过UART0 传输 代码 获得UBL,然后 转至UBL代码 运行 。第一、三 、四 种方式都是 RBL将 UBL下载到ARM RAM0 和ARM RAM1(0x0-0x3fff,共16K)中,然后 转至 UBL运行。DSP的是自引导还是由ARM引导由DSP_BT引脚电平决定,如果为高则自引导,如果为低则由ARM引导。

2. UBL阶段,也就是
u-boot阶段

ti官方提供的是u-boot,所以这里阐述的是u-boot的启动过程。在
u-boot中最初阶段 主要完成系统时钟、DDR频率的初始化,准备好加载C程序运行的环境,这时候程序运行在ARM RAM中或nor flash中,由启动方式决定。然后拷贝u-boot代码到DDR中,并跳转到 C 程序的start_armboot处运行 (在DDR2中)。
u-boot的具体设置过程如下:
(1)U-boot代码中首先设置最基本的系统硬件环境,包括系统PLL及DDR2的初始化、PSC的配置及使能UART0、AEMIF等硬件模块;
(2)配置系统的内存(通过ATAG_ MEM块和mem=)NAND Flash和DDR2;
(3)在flash中
或通过tftp 加载内核到指定的存储地址;
(4)初始化传递到内核的引导参数(EMAC地址,串口,控制台,视频格式等)
(5)获得ARM Linux机类型值(DVEVM为#901);
(6)设置kernel tagged list;
(7)用初始值设置ARM的寄存器;
(8)调用linux内核;

针对DM644X的设置有:
(1)关中断和MMU。
(2)使能DSP电源域(PTCMD),把DSP置为复位状态。
(3)初始化PLL,使能DDR2,软复位DDR2并且重新使能DDR2,使其脱离复位状态。
(4)初始化系统PLL。
(5)配置AEMIF引脚为NOR Flash接口。
(6)VTP校准。


3. Linux内核启动阶段:

(1)内核中的boot/compressed/
head.s代码开始运行,保存从u-boot中传入的参数,然后会执行一段处理器相关的代码,中间再做些判断和处理,最后 对压缩的内核进行解压。具体过程分析可参照本博客上的《达芬奇DM644x平台ARM Linux内核解压缩过程(head.S)浅析》
(2)内核中的kernel/ head.s代码开始运行, 初始化页表,cache和 MMU等。 具体过程分析可参照本博客上的《达芬奇DM644x平台ARM Linux内核CPU初始化过程(head.S)浅析》
  (3)start_kernel()运行, 根据 U-boot中得到参数 及其他初始化设置(在board-evm.c中),进行一系列的内核初始化,比如io地址映射、定时器和串口 初始化 、内存页表重新映射等。关于 board-evm.c,可参照本博客上的 《达芬奇DM644X平台(ARM9, Linux-2.6.10)BSP之board-evm.c浅析》
  (4)Linux的第一个进程init()运行,该进程根据系统中的配置初始化系统。根据 U-boot中得到参数 ,从flash中或nfs中启动文件系统;
(5)shell启动。


注:
  1.
参阅了ti的linux内核源代码和u-boot源代码;
  1. 参照了http://www.tichinese.com/bbs/viewthread.php?tid=92&extra=page%3D3的内容;
2.
参照了 http://www.tichinese.com/bbs/viewthread.php?tid=830&extra=page%3D3 的内容 ;
  3.名词解释:
RBL: arm rom boot loader;
UBL: user boot loader。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值