Xilinx Zynq pl353-nand使用
发布日期:2021-05-08 04:05:28 浏览次数:8 分类:精选文章

本文共 1766 字,大约阅读时间需要 5 分钟。

FPGA与NAND存储器配置及常见问题解决方案

FPGA配置

在使用FPGA时,首先需要在Vivado开发环境中设置NAND存储器的参数。具体步骤如下:

  • 打开Vivado IDE,创建一个新的项目。
  • 在项目中添加一个NAND存储器块。
  • 在NAND存储器的属性中,设置合适的参数,如芯片类型、块大小、擦除区间等。
  • 通过用户自定义的IP核或预定义的核进行接口配置,确保与系统总线和其他硬件兼容。
  • u-boot配置

    在u-boot中配置NAND存储器参数,确保系统能够正确识别和访问NAND设备。

  • 在u-boot的配置文件中,启用NAND支持:
    #define CONFIG_NAND#define CONFIG_NAND_ZYNQ
  • 设置mtd设备的ID映射:
    #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)"
  • 根据需要调整NAND存储器的分区配置,确保各分区大小和 offset正确。
  • NAND存储器操作

    在u-boot环境下,通过NAND子系统命令进行操作和管理。

  • 查看NAND设备信息:
    zynq-uboot> nand info
  • 切换到指定的NAND设备:
    zynq-uboot> nand device [dev]
  • 执行读写操作:
    zynq-uboot> nand read -addr off|partition sizezynq-uboot> nand write -addr off|partition size
  • 擅自读取或写入数据时,可使用raw命令:
    zynq-uboot> nand read.raw -addr off|partition [count]zynq-uboot> nand write.raw -addr off|partition [count]
  • Linux驱动配置

    在Linux内核中,配置NAND驱动以支持Winbond W29N01HV芯片。

  • 启用相关配置:
    CONFIG_PL35X_SMC=yCONFIG_MTD_NAND=yCONFIG_MTD_NAND_PL35X=y
  • 确保NAND驱动文件已加载:
    drivers/mtd/nand/pl353_nand.c
  • 常见问题解决

    在实际使用过程中,可能会遇到以下问题:

  • 内核启动错误

    • 错误信息表明NAND设备无法正确初始化:
      NAND: device found, Manufacturer ID: 0xef, Chip ID: 0xf1NAND: Unknown W29N01HV
    • 通过ONFI协议获取NAND信息:
      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]
    • 使用 scrub 命令清理坏块:
      nand scrub -y off size
  • 分区划分

    • 根据NAND芯片信息,调整分区划分:
      mtdparts=pl353-nand:128k(rcw),219008k(rootfs),32m(rd),128k(dtb),9088k(kernel),128k(fman),128k(bootenv),768k(boot)
    • 确保各分区大小和 offset无误。
  • 通过以上配置和操作,可以有效解决NAND存储器在FPGA、u_boot、Linux环境下的初始化和使用问题,确保系统稳定运行。

    上一篇:Xilinx Zynq boot模式
    下一篇:cpp学习之一维数组与二维数组

    发表评论

    最新留言

    路过,博主的博客真漂亮。。
    [***.116.15.85]2025年04月04日 16时34分16秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章