DM368 nand flash 启动过程揭秘
来源:互联网 发布:淘宝站外推广定义 编辑:程序博客网 时间:2024/06/06 21:04
转载:http://blog.csdn.net/maopig/article/details/7029930
转载文章讲的有点乱。以下是自己根据所看到的资料总结的。
以德州仪器的多媒体处理芯片TMS320DM368为例,介绍它的NAND Flash启动原理以及实现。
1. RBL阶段
在DM368芯片上有一块ROM的区域(地址从0x00008000到 0x0000 BFFF),这块区域就是存放RBL代码的地方。首先,保存在片内ROM的RBL程序开始运行,RBL程序根据BTSEL[0~3]引脚的电位来判断相应的启动方式。ROM上的代码是在芯片出厂前就烧写好的,用户是不能修改的。在DM368上,除了AEMIF (Nor Flash)启动,其他的启动方式都需要运行RBL。如果发现BTSEL的状态是000,就会得知配置的是NAND Flash启动,NAND启动模式开始执行。注意:为了保证NAND启动正常运行,需要保证在复位的时候DEEPSLEEPZ/GIO0引脚拉高。RBL程序便从NAND上读取UBL(user boot loader)并且复制到ARM的内存RAM中,并转到执行UBL代码。
2. UBL阶段
UBL运行在ARM的内存里,主要完成系统时钟、DDR频率的初始化。然后UBL从NAND Flash里读取U-Boot的内容并且复制到DDR里运行。
3. U-Boot阶段
DDR里面运行的U-Boot又从NAND Flash里面读取Linux内核代码,并且复制到DDR上,然后启动内核。
U-Boot代码中首先设置最基本的系统硬件环境,包括系统PLL及DDR2的初始化、PSC的配置及使能UART0、AMEIF等硬件模块。
配置系统的内存,包括NAND Flash和DDR2。
在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启动,用户开始进入登录系统。
- DM368 nand flash 启动过程揭秘
- DM368 NAND Flash启动揭秘
- DM368 NAND Flash启动揭秘
- DM368 NAND Flash启动揭秘
- DM368 NAND Flash启动揭秘
- DM368 NAND Flash启动揭秘
- DM368 NAND Flash启动揭秘
- DM368 NAND Flash启动揭秘
- DM368 NAND Flash启动揭秘
- DM365视频处理流程/DM368 NAND Flash启动揭秘
- 2012-03-01 21:15 DM368 NAND Flash启动揭秘
- DM365视频处理流程/DM368 NAND Flash启动揭秘
- DM368 NAND Flash启动
- AM1808的NAND FLASH启动过程
- 从NOR FLASH 启动和 从NAND Flash启动过程
- mini2440的nor flash与nand flash启动过程区别
- 关于nor flash和nand flash启动过程区别
- 关于nor flash和nand flash启动过程区别
- sched_setscheduler用法
- eclipse常用快捷键
- web分页代码
- iOS开发缺少framework对应错误提示
- java获取路径
- DM368 nand flash 启动过程揭秘
- 从源码看DL4J中Native BLAS的加载,以及配置
- Android在XML布局中,textview的text属性,预览提示,但不编译tools
- 数据结构实验之图论八:欧拉回路 无向图的欧拉回路判断
- 黑马程序员—Java基础—继承
- 菜鸟学Java----单例模式
- foreach用法
- latex数学公式编写(一):latex矩阵编写
- 重视示波器的使用与电路测试