加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

DM368 nand flash 启动过程揭秘

发布时间:2020-12-15 07:17:11 所属栏目:百科 来源:网络整理
导读:转载:http://blog.csdn.net/maopig/article/details/7029930 ? 转载文章讲的有点乱。以下是自己根据所看到的资料总结的。 以德州仪器的多媒体处理芯片 TMS320DM368 为例,介绍它的 NAND?Flash 启动原理以及实现。 ? ? 1.?RBL 阶段 在 DM368 芯片上有一块 RO

转载:http://blog.csdn.net/maopig/article/details/7029930 ?

转载文章讲的有点乱。以下是自己根据所看到的资料总结的。


以德州仪器的多媒体处理芯片TMS320DM368为例,介绍它的NAND?Flash启动原理以及实现。

?

?


1.?RBL阶段

DM368芯片上有一块ROM的区域(地址从0x00008000到?0x0000?BFFF),这块区域就是存放RBL代码的地方。首先,保存在片内ROMRBL程序开始运行,RBL程序根据BTSEL[0~3]引脚的电位来判断相应的启动方式。ROM上的代码是在芯片出厂前就烧写好的,用户是不能修改的。DM368上,除了AEMIF?Nor?Flash)启动,其他的启动方式都需要运行RBL。如果发现BTSEL的状态是000,就会得知配置的是NAND?Flash启动,NAND启动模式开始执行。注意:为了保证NAND启动正常运行,需要保证在复位的时候DEEPSLEEPZ/GIO0引脚拉高。RBL程序便从NAND上读取UBLuser?boot?loader)并且复制到ARM的内存RAM中,并转到执行UBL代码。

2.?UBL阶段

UBL运行在ARM的内存里,主要完成系统时钟、DDR频率的初始化。然后UBLNAND?Flash里读取U-Boot的内容并且复制到DDR里运行。

3.?U-Boot阶段

DDR里面运行的U-Boot又从NAND?Flash里面读取Linux内核代码,并且复制到DDR上,然后启动内核。

U-Boot代码中首先设置最基本的系统硬件环境,包括系统PLLDDR2的初始化、PSC的配置及使能UART0AMEIF等硬件模块。

配置系统的内存,包括NAND?FlashDDR2

Flash中加载内核到指定的存储地址,并在Flash中加载RAM?Disk或通过NFS加载文件系统。

初始化传递到内核的引导参数(EMAC地址、串口、控制台、视频格式等)。

获得ARM?Linux基类型值。

设置Kernel?tagged?list

用初始值设置ARM的寄存器。

调用内核。

4.?Linux内核启动阶段

Linux内核从U-Boot中得到参数并初始化相关硬件。

内核中的head.s代码开始运行,对压缩的内核进行解压。

start_kernel()运行。对内核中的MMU等进行初始化。

Linux的第一个进程init()?运行,该进程根据系统的配置文件初始化系统。

shell启动,用户开始进入登录系统。

?

?

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读