Linux TQ2440移植NandFlash驱动与MTD分区优化

4星 · 超过85%的资源 需积分: 18 46 下载量 160 浏览量 更新于2024-09-21 收藏 309KB DOC 举报
在Linux 2.6.32.2及后续版本中,如Linux 2.6.35.3,内核自带了一套NandFlash驱动支持,这些驱动位于drivers/mtd/nand/nand_ids.c文件中,涵盖了多种NandFlash类型。然而,这些默认的分区设置可能不符合特定硬件平台的需求,比如TQ2440。针对这种情况,用户可能需要对NandFlash的分区进行自定义配置。 具体到TQ2440,你需要在`arch/arm/plat-s3c24xx/common-smdk.c`文件中的`mtd_partitions`部分进行修改。原代码定义了一个名为`mdk_default_nand_part`的静态数组,它包含了多个分区: 1. `U-BOOT-2010.06SZ_256K`:这是U-Boot分区,占据前256KB空间。 2. `EnvironmentParameterSZ_128K`:环境变量分区,从256KB开始,大小为128KB。值得注意的是,NandFlash Block的最小大小是128KB,所以这里设置了合理的边界。 3. `Linux-2.6.35.3SZ_3M`:Linux内核分区,从2MB开始,占用3MB空间。 4. `Yaffs2RootFSSZ_REST`:这个分区对应/dev/mtdblock3,通常用于Linux文件系统,其大小为MTDPART_SIZ_FULL,即全部可用空间,去掉多余的逗号表示完整的分区。 除了上述四个主要分区,代码中还提到了一些预留的S3C2410闪存分区,但它们似乎并未被实际使用,因为它们的偏移量和大小设置不明确。如果TQ2440硬件需要这些额外的分区,你需要根据实际硬件规格调整它们的offset(偏移)和size(大小)。 为了成功移植NandFlash驱动并设置MTD分区,你需要确保提供的分区信息与硬件的存储结构相匹配,包括正确的分区名称、大小以及它们在物理NandFlash上的位置。这通常涉及到对NandFlash芯片的具体规格了解,例如块大小、总容量等。在实际操作中,你可能还需要测试和验证每个分区是否正确加载和工作,确保Linux系统的正常启动和功能执行。