本文共 1766 字,大约阅读时间需要 5 分钟。
在使用FPGA时,首先需要在Vivado开发环境中设置NAND存储器的参数。具体步骤如下:
在u-boot中配置NAND存储器参数,确保系统能够正确识别和访问NAND设备。
#define CONFIG_NAND#define CONFIG_NAND_ZYNQ
#define MTDIDS_DEFAULT "nand0=pl353-nand"#define MTDPARTS_DEFAULT "mtdparts=pl353-nand:128k(rcw),219008k(rootfs),32m(rd),128k(dtb),9088k(kernel),128k(fman),128k(bootenv),768k(boot)"
在u-boot环境下,通过NAND子系统命令进行操作和管理。
zynq-uboot> nand info
zynq-uboot> nand device [dev]
zynq-uboot> nand read -addr off|partition sizezynq-uboot> nand write -addr off|partition size
zynq-uboot> nand read.raw -addr off|partition [count]zynq-uboot> nand write.raw -addr off|partition [count]
在Linux内核中,配置NAND驱动以支持Winbond W29N01HV芯片。
CONFIG_PL35X_SMC=yCONFIG_MTD_NAND=yCONFIG_MTD_NAND_PL35X=y
drivers/mtd/nand/pl353_nand.c
在实际使用过程中,可能会遇到以下问题:
内核启动错误:
NAND: device found, Manufacturer ID: 0xef, Chip ID: 0xf1NAND: Unknown W29N01HV
ondie_ecc_state 0ONFI version: 10mtd name: pl353-nandmtd writesize: 2048mtd erasesize: 131072mtd oobsize: 64mtd chipsize: 134217728mtd bits_per_cell: 1mtd busw: 0 # x8mtd ecc_bits: 1mtd ecc_strength_ds: 1mtd ecc_step_ds: 512
处理坏块:
nand badnand markbad off [offset]nand scrub [size]
nand scrub -y off size
分区划分:
mtdparts=pl353-nand:128k(rcw),219008k(rootfs),32m(rd),128k(dtb),9088k(kernel),128k(fman),128k(bootenv),768k(boot)
通过以上配置和操作,可以有效解决NAND存储器在FPGA、u_boot、Linux环境下的初始化和使用问题,确保系统稳定运行。
转载地址:http://ddgg.baihongyu.com/