S3C6410 SD启动支持教程:定制uboot配置与解决常见问题

需积分: 5 1 下载量 161 浏览量 更新于2024-08-03 收藏 29KB DOC 举报
本文档主要介绍了如何针对三星S3C6410平台的嵌入式系统实现SD卡启动,使用的不是标准的U-Boot(统一固件加载器),而是由三星和Denx合作定制的s3c-u-boot-1.1.6版本。这个版本原本支持NAND启动,但目标是将其转变为SD启动(也称为movinand启动)。 首先,用户需要在configurations/smdk6410.h配置文件中进行修改。原有的NAND启动选项(如`#define CONFIG_BOOT_NAND`)需要注释掉,同时启用`#define CONFIG_BOOT_MOVINAND`来选择SD启动。这样,U-Boot将能够识别和处理SD卡作为启动设备。 然而,仅仅更改配置还不足以解决问题,因为U-Boot预设了从SD卡CH0(通道0)启动,而实际硬件可能使用的是CH1。因此,必须在include/movi.h文件中调整HSMMC_CHANNEL的值,将其设置为1,以便U-Boot能正确识别SD卡在不同通道上的存在。 接着,即使将修改后的U-Boot.bin文件烧写到SD卡上,直接使用IROM_Fusing_tools进行烧写会导致问题。正确的做法是先将大文件u-boot.bin拆分成两个部分:u-boot_256k.bin和u-boot_8k.bin,分别烧录到SD卡的不同区域。具体步骤如下: 1. 使用`cat u-boot.bin >> temp`命令将u-boot.bin追加到temp文件中。 2. 分割文件:`split -b 256k temp u-boot_256k.bin` 和 `split -b 8k temp u-boot_8k.bin` 3. 将u-boot_256k.bin复制到u-boot_mmc.binfile中:`mv xaa u-boot_256k.bin u-boot_mmc.bin` 4. 将u-boot_8k.bin复制到u-boot_mmc.bin的剩余部分:`mv xaa u-boot_8k.bin >> u-boot_mmc.bin` 通过以上操作,确保了U-Boot能在S3C6410平台正确识别并从SD卡启动,解决了启动时的硬件兼容性和文件布局问题。这对于开发基于S3C6410的嵌入式系统的开发者来说,是一个重要的实践指导,特别是对于那些需要在非标准硬件配置上部署U-Boot的项目。