主题中讨论的其他器件:OMAP-L132
工具/软件:Linux
我必须从运行的 Linux 系统中将新的 Linux 内核更新(写入)到 NAND-Flash 分区。
要写入 NAND-Flash 的分区2、我使用带有选项"-p"的程序"nandwrite":
nandwrite /dev/mtd -p
但之后、我的电路板无法启动;引导加载程序"u-boot"抱怨加载内核时出现 CRC 错误。
我将在引导加载程序和 Linux 内核中对 NAND-Flash 使用"4位 HW ECC 校正"。
对于引导加载程序"u-boot"、定义了:
#undef CONFIG_SYS_NAND_HW_ECC
#define CONFIG_SYS_NAND_4BIT_HW_ECC_OOBFIRST
#define CONFIG_SYS_NAND_USE_FLASH_BBT
对于 Linux 内核(在特定于电路板的文件中)、定义如下:
静态结构 Davinci_aemif_timing gins_qmonixx_nand_timing ={
//以纳秒为单位的所有时序
.wsetup = 10、
.wstrobe = 20、
whold = 0、
.rsetup=10、
.rstrobe = 20、
.rhold = 20、//要实现可靠的16位 NAND 操作、必须将 R_hold 设置为1、以确保 ECC 计算的2个时钟周期
.TA = 60、
};
静态结构 Davinci_nand_pdata gins_qmonixx_nand_pdata ={
.parts = gins_qmonixx_nand_parts、
nr_parts = array_size (gins_qmonixx_nand_parts)、
.options = NAND_BUSWIDTH_16、
.timing =&gins_qmonixx_nand_timing、
// ECC 配置
//另请参见 U-Boot 的配置:CONFIG_SYS_NAND_4BIT_HW_ECC_OOBFIRST、CONFIG_SYS_NAND_USE_FLASH_BBT
ecc_mode = NAND_ECC_HW、 //此处不要使用 NAND_ECC_HW_OOB_FIRST!
ecc_bits = 4、
.bBT_options = NAND_BBT_USE_FLASH、
};
问题可能出在哪呢?
备注:
如果我在引导加载程序"u-boot"的帮助下将 Linux 内核写入 NAND 闪存、则系统会成功启动!
提前感谢您的帮助!
Jan-Marc。