DM644X启动过程浅析

来源:互联网 发布:object数组怎么调用 编辑:程序博客网 时间:2024/06/11 15:36
--------------------------------------------
本文系本站原创,欢迎转载!
转载请注明出处:http://zhiqiang0071.cublog.cn
--------------------------------------------

1. RBL阶段:

系统复位后,保存在片内ROM的RBL程序开始运行,RBL程序根据BTSEL[0-3]管脚的电平来判断相应的启动方式。
[00]表明是NAND启动方式,RBL程序便从外接nand flash中读取UBL的数据到内部RAM中(UBL最大可达14K),然后转至UBL代码运行;[01]表明是EMIFA启动方式,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。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 双肾泥沙样结石怎么办 温州市民卡丢了怎么办 上眼皮过敏肿了怎么办 上眼皮又痒又肿怎么办 上眼皮红肿痛是怎么办 上眼皮肿的厉害怎么办 眼皮肿了还痒痒怎么办 眼睛被手指戳到怎么办 打球眼睛撞肿了怎么办 打球时眼睛被戳怎么办 狗眼睛被打充血怎么办 一只眼睛磨的慌怎么办 5个月宝宝结膜炎怎么办 金毛眼屎多白色怎么办 金毛眼红有眼屎怎么办 狗狗眼睛上火了怎么办 狗上火了眼屎多怎么办 金毛走路扭腰怎么办 金毛流鼻涕微黄怎么办 狗狗下眼皮红了怎么办 金毛眼睛打肿了怎么办 金毛的眼睛红怎么办 眼睛干涩有红血丝怎么办 小孩子眼睛红有眼屎怎么办 狗狗的肉垫粗糙怎么办 狗狗眼睛变蓝色怎么办 脸被太阳晒伤了怎么办 皮肤晒伤红肿痒怎么办 3岁儿童频繁眨眼怎么办 狗狗的眼睛红肿怎么办 脸过敏发红怎么办不痒 上眼皮红肿痒是怎么办 眼睛痒了几天了怎么办 眼睛肿了还痒怎么办 孩子脸上有红血丝怎么办 脸上长了红血丝怎么办 指甲受创出血了怎么办 手指被挤压紫了怎么办 眼睛撞了有淤血怎么办 下眼底有小白点怎么办 狗的白眼球充血怎么办