成功移植u-boot1.1.6至2410,实现nor/nand双启动教程

5星 · 超过95%的资源 需积分: 10 4 下载量 124 浏览量 更新于2024-09-15 收藏 173KB PDF 举报
"移植u-boot1.1.6到2410平台,实现nor和nand闪存的双启动,涉及u-boot移植、配置文件修改、启动方式判断" 移植u-boot到S3C2410平台,尤其是实现nor和nand双启动,是一项复杂的工作,需要对嵌入式系统、微处理器架构以及u-boot有深入的理解。S3C2410是一款由Samsung公司推出的基于ARM920T内核的微处理器,常用于嵌入式设备。在这个过程中,移植者通常需要完成以下步骤: 1. **创建自定义配置文件**: - 在`board/samsung`目录下,创建一个新的目录,如`my2410`,用于存放针对特定板子的配置和源代码。 - 复制`smdk2410`的相关文件,并修改文件名和Makefile中的配置,例如将`smdk2410`更改为`my2410`,并将Makefile中的`COBJS`设置为`my2410.o`。 - 在`include/configs`目录中,复制`smdk2410.h`为`my2410.h`,并根据实际硬件配置进行修改。 2. **更新根目录下的Makefile**: - 添加新板子的配置选项,使得构建系统能识别并编译新添加的配置。 3. **修改`start.s`**: - `start.s`是u-boot的启动汇编代码,负责初始化硬件和执行初步的引导任务。 - 对于nor和nand双启动,需要在这里加入代码来检测启动介质。S3C2410处理器在上电时,会自动将nand flash的前4KB数据加载到内部RAM并从那里启动。因此,u-boot需要在nand启动时执行自我复制到RAM的过程。 4. **启动方式的判断**: - UBoot支持从nor flash直接启动,因为nor flash可以直接执行。而对于nand flash,由于硬件特性,需要在前4KB的固件中包含初始化代码,将u-boot的剩余部分复制到RAM中。 - 可以通过检查启动地址或特定硬件标志来判断是nor还是nand启动。例如,如果CPU从0x00000000启动,可能是nand flash;而nor flash通常使用较高的地址启动。 5. **编译与调试**: - 使用适当的交叉编译器(如gcc3.4.5)编译u-boot,确保编译选项正确设置以匹配目标平台和配置。 - 然后将编译好的u-boot分别烧录到nor和nand flash中,并通过硬件开关或配置选择不同的启动方式。 - 在实际运行中测试双启动功能,可能需要多次迭代和调试以解决可能出现的问题。 完成以上步骤后,u-boot就能根据硬件状态选择从nor或nand flash启动,增强了系统的灵活性和可靠性。在实际应用中,这种双启动功能对于开发、故障恢复和系统升级都具有重要的价值。