本资料深入解析德州仪器DM36x系列数字信号处理器(DSP)使用NAND闪存启动的过程,并提供详尽的最新中文技术文档。适合工程师和技术爱好者参考学习。
### TI DM36x系列DSP NAND Flash启动过程详解
#### 一、NAND Flash启动原理
##### 1.1 DM365支持的NAND启动特性
TI的TMS320DM365(以下简称DM365)多媒体处理芯片支持多种启动方式,包括从NAND Flash进行引导。在这一过程中,DM365具有以下特点:
1. **不支持一次性全部固件下载**:与某些设备不同的是,DM365不能将所有必要的数据一次读取到内存中并直接开始执行程序;而是采用分阶段的启动方式。首先从NAND Flash加载第二级引导代码(User BootLoader, UBL)至ARM内部存储器(ARM Internal Memory, AIM),然后在AIM中运行UBL。
2. **支持最大4KB页大小的NAND**:DM365能够处理每一页多达4KB的数据,这适用于大多数常见的NAND Flash设备。
3. **特殊数字标志错误检测机制**:当加载UBL时会进行多次尝试(最多可达24次)来查找正确的数据块,确保所读取的数据是有效的和无误的。
4. **支持最大大小为30KB的UBL**:DM365在启动过程中分配了总计32KB内存用于存放引导代码。其中2KB用于RBL堆栈空间,剩余部分可以用来存储UBL内容。
5. **用户可选DMA与I-cache功能控制**:允许在执行ROM Boot Loader (RBL)期间根据需要启用或禁用这些硬件特性以优化性能和功耗管理。
6. **支持4位硬件ECC校验码**:该芯片能够处理每512字节数据中至多包含四个错误检查与纠正(Error Correction Code, ECC)比特的NAND Flash设备,从而提高数据传输的安全性。
7. **兼容特定类型的NAND器件**:DM365支持需要在Tr读取时间期间保持片选信号为低电平的一些特殊型号的NAND Flash。
##### 1.2 NAND Flash启动流程
从芯片上电到Linux操作系统完全运行,整个过程包括以下几个关键步骤:
- **ROM Boot Loader (RBL) 阶段**:当DM365首次供电或复位时,其内部固件会根据BTSEL引脚的状态判断是否需要通过NAND Flash启动。如果是,则从内置的RBL代码开始执行程序。此时,硬件初始化工作将被触发,并且系统读取并配置了NAND Flash设备的信息。
- **User Boot Loader (UBL) 阶段**:接下来,在成功完成必要的设置后,ROM中的引导加载器会直接从NAND Flash中提取UBL,并将其复制到AIM内存区域进行执行。此阶段主要负责进一步的硬件初始化以及为后续操作准备环境条件。
- **U-Boot启动过程**:随后,UBL将再次访问NAND Flash来读取并运行完整的U-Boot引导加载程序代码至DDR RAM内。这个步骤中,设备准备好从存储介质上加载操作系统的核心部分。
- **Linux内核启动阶段**:最后,在由U-Boot完成所有准备工作之后,它会激活嵌入式系统的主控软件——即Linux内核,并将控制权交给该系统进行后续的操作。
#### 二、NAND Flash启动的软件配合实现
##### 2.1 UBL描述符的设计与实现
UBL描述符作为引导加载程序读取和执行的基础,通常位于特定位置并包含有关如何定位及解压缩UBL的信息。RBL通过解析这些元数据来确定UBl的确切地址,并将其载入AIM内存准备运行。
##### 2.2 U-Boot的启动机制分析与实现
U-Boot是一种开源引导加载程序解决方案,用于从NAND Flash中提取Linux内核并部署到系统RAM以供后续使用。它依赖于由UBL提供的环境支持来完成这一任务。
##### 2.3 利用U-Boot更新UBL和自身代码的原理
通过利用U-Boot的功能,可以实现对现有引导加载程序(包括UBL)进行升级或替换的操作流程。这通常涉及到从NAND Flash读取新的版本段落件,并在验证其完整性后覆盖原有的旧版内容。
##### 2.4 理想情况下的启动过程分析——无坏块的NAND
当不存在任何物理损坏或者不可用的数据存储单元时,整个引导链路将会顺畅运行。RBL能够顺利地从NAND Flash中提取UBL,并且UBL也能准确读取U-Boot代码以最终加载Linux内核。
#### 三、总结
本段落概述了TI DM365芯片在采用NAND Flash作为启动介质的情景下,其引导过程中的核心特点和技术细节。通过上述介绍可以看出,在正确配置和