This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM62P:向 SDK-RTOS 中添加 NAND 闪存 (Gigadevice GD5F2GM7UE) 支持功能

Guru**** 2864540 points

Other Parts Discussed in Thread: SYSCONFIG, AM62P

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1628206/am62p-add-nand-flash-gigadevice-gd5f2gm7ue-support-into-sdk-rtos

部件号: AM62P
主题中讨论的其他器件: SysConfig

 

TI 工程师、大家好、

为了降低成本、我们需要将 eMMC 更改为 256MB NAND 闪存。

在 Linux 系统中、NAND 闪存已通过驱动程序文件 drivers/mtd/nand/spi/千 兆位器件.c 验证可支持正常读取和写入功能  

我们需要 通过 SysConfig 在 RTOS 中配置新的 NAND 闪存支持。

 

1、硬件和软件环境:

 处理器:AM62P

 闪存器件:GD5F2GM7UE(四通道 SPI NAND 闪存、2Gb/256MB)

 

2.执行操作步骤

已刷写 SBL 固件  

sbl_ospi_linux_stage1.release.hs_fs.tiimage 至 起始地址(地址 0) QSPI NAND 闪存的闪存

 并将引导模式设置为 QSPI 引导、但加电后没有日志输出。

 

3.问题描述

执行上述步骤后、UART 控制台上没有任何日志输出。

不能在中选择其他协议  SysConfig、例如 4D-4D-4D

sch1_nandflash.jpgsch2_nandflash.jpg

sysconfig.jpg7949ad63-3b70-4957-bbcb-ab1ab458da0e.jpg
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    亲爱的东辉。

    1.请参阅 AM62A、它默认使用 Winbond 的 NAND 闪存 W35N01JWTBAG。

    下面所生成文件中闪存参数的主要变化如下所示。

    /opt/1Twork/repository/mcu_plus_sdk_am62ax_11_01_00_16/examples/drivers/boot/sbl_ospi_nand_linux_multistage/sbl_ospi_nand_linux_stage1/am62ax-sk/r5fss0-0_nortos/ti-arm-clang/generated/ti_board_open_close.c

    2.然后请根据新的 NAND 闪存规范修改 SysConfig UI 中的参数。 然后在出现任何问题时进行调试。

    此外、请检查您是否可以通过电子邮件向 TI 提供 NAND 闪存规范。

    非常感谢!

    Yong

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../gigadevice_5F00_SPI_5F00_NAND_5F00_GD5F2GM7UE_5F00_DS.pdf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Donghui、

      请查看 TRM 5.4.10 串行 NAND 引导、

      要读取模式 2、请支持 SPI 1-1-1 模式。

         读取模式 1、支持 1-1-4 模式。  

        此闪存的默认引导模式是什么?  谢谢。

    此致、

    Linjun

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    Linjun、

    引导模式选择将在稍后阶段进行、首先需要确保二进制文件已正确刷写到 QSPI NAND 闪存中。

     

    Peng、

    我们正在查看闪存数据表、并将根据正确的 SYSCONFIG > OSPI 和闪存配置返回给您。

    如果我们回复您、我们会让您对其进行测试。 如果刷写正确、那么我们只能继续选择正确的串行 NAND 引导模式引脚、但首先、在 UART 引导模式中的刷写应该正确。

    此致、

    Vaibhav

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我执行以下 Linux 步骤:

    1) cat /proc/mtd
    dev:size erasesize name
    mtd0:00100000 00020000 “ospi.tiboot3"</s>“
    mtd1:00100000 00020000 “ospi.tispl"</s>“
    mtd2:00080000 00020000 “ospi.HSM"</s>“
    mtd3:00100000 00020000 “ospi.u-boot"</s>“
    mtd4:00190000 00020000“ospi.eMMC_linux"</s>“
    mtd5:00800000 00020000 “ospi.param"</s>“
    mtd6:0100000 00020000 “ospi.calib"</s>“
    mtd7:06400000 00020000 “ospi.rootfs"</s>“
    mtd8:05a00000 00020000 “ospi.app"</s>“
    mtd9:00a00000 00020000 “ ospi.userdata“

    2) FLASH_ERASE /dev/mtd0 0 8
    擦除 1024Kibyte @ 0 --完成 100%  

    3) nandwrite -p /dev/mtd0 /sdcard/sbl_ospi_linux_stage1.release.tiimage
    在偏移 0x0 处将数据写入块 0
    在偏移 0x20000 处将数据写入块 1
    在偏移 0x40000 处将数据写入块 2

    4) nanddump -a /dev/mtd0 -f dump_sbl1.bin

    hexdump -C dump_sbl1.bin -n 256
    00000000 30 82 04 99 30 82 04 02 a0 03 02 02 02 02 02 14 3c |0...0 <|
    00000010 8d 11 39 02 07 14 74 ef F7 BA cc AC 6B 2D 14 E2 |..9..... k-..|
    00000020 69 54 D1 30 0d 06 09 2a 86 48 86 F7 0d 01 01 0d |IT.0...*.H. |
    00000030 05 00 30 81 90 31 0b 30 09 06 03 55 04 06 13 02 |..0...1.0...U...|
    00000040 55 53 31 0b 30 09 06 03 55 04 08 0c 02 53 43 31 |US1.0...U... SC1|
    00000050 11 30 0f 06 03 55 04 07 0c 08 4e 65 77 20 59 6F |.0...U.... N.

    00000060 72 6B 31 21 30 1f 06 03 55 04 0A 0c 18 54 65 78 |rk1!0...u.... Tex|
    00000070 61 73 20 49 6e 73 74 72 75 6d 65 6e 74 73 2e 2c |作为仪器。、|
    00000080 20 49 6e 63 2e 31 0c 30 0A 06 03 55 04 0b 0c 03 | INC.1.0...U...|
    00000090 44 53 50 31 0f 30 0d 06 03 55 04 03 0c 06 41 6c |DSP1.0...u.... AL|
    000000a0 62 65 72 74 31 1f 30 1D 06 09 2a 86 86 F7 0d |bert1.0...*
    000000b0 01 09 01 16 10 41 6c 62 65 72 74 40 67 74 2e 74 | Albert@gt.t|
    000000c0 69 2e 63 6.

    5)  hexdump -C /sdcard/sbl_ospi_linux_stage1.release.tiimage -n 256
    00000000 30 82 04 99 30 82 04 02 a0 03 02 02 02 02 02 14 3c |0...0 <|
    00000010 8d 11 39 02 07 14 74 ef F7 BA cc AC 6B 2D 14 E2 |..9..... k-..|
    00000020 69 54 D1 30 0d 06 09 2a 86 48 86 F7 0d 01 01 0d |IT.0...*.H. |
    00000030 05 00 30 81 90 31 0b 30 09 06 03 55 04 06 13 02 |..0...1.0...U...|
    00000040 55 53 31 0b 30 09 06 03 55 04 08 0c 02 53 43 31 |US1.0...U... SC1|
    00000050 11 30 0f 06 03 55 04 07 0c 08 4e 65 77 20 59 6F |.0...U...新 YO|
    00000060 72 6B 31 21 30 1f 06 03 55 04 0A 0c 18 54 65 78 |rk1!0...u.... Tex|
    00000070 61 73 20 49 6e 73 74 72 75 6d 65 6e 74 73 2e 2c |作为仪器。、|
    00000080 20 49 6e 63 2e 31 0c 30 0A 06 03 55 04 0b 0c 03 | INC.1.0...U...|
    00000090 44 53 50 31 0f 30 0d 06 03 55 04 03 0c 06 41 6c |DSP1.0...u.... AL|
    000000a0 62 65 72 74 31 1f 30 1D 06 09 2a 86 86 F7 0d |bert1.0...*

    看起来 Linux 固件读/写工作正常。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Donghui:

    到目前为止、MCU+ SDK 不支持 QSPI NAND 闪存型号、因此我们可以支持的最佳协议是 1S-1S-1S。

    以下是数据表中的闪存和 OSPI 配置、对于 MCU+ SDK 11.02 和 1S-1S-1S 配置:

    请在下面找到 flash_nand_ospi.c 中读取 ID 逻辑的补丁:

    e2e.ti.com/.../7635.readid_5F00_patch.diff

    此致、

    Aryamaan Chaurasia

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Aryamaan Chaurasia

      我已合并上述配置和补丁、但仍然无法从 QSPI 引导。  

      我会检查引导模式引脚设置、并在 SBL_EMMC_Linu_stage2 中验证 NAND 闪存读取/写入。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid=“629085" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1628206/am62p-add-nand-flash-gigadevice-gd5f2gm7ue-support-into-sdk-rtos/6282426 ]、但我仍然无法从 QSPI 引导。  [/报价]

    为了能够在 QSPI 模式下引导(利用 4 条线路进行读取)、您的闪存需要启用 QE 位。

    您能帮助回答以下问题吗?

    1. 与闪存供应商确认在向闪存发出复位信号时 QE 位是否设置回 0?
    2. 检查您的闪存封装是否连接了复位引脚?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请也参阅这部分。
    https://www.ti.com/lit/an/sprads5/sprads5.pdf#page=9

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1 μ s、如芯片)表 GD5F2GM7UE_DS.pdf 第 41 页所示、描述如下:器件置位后、即使发出复位 (FFh) 命令、器件也保持置位状态。

    2)此芯片没有复位引脚。

    3 μ s)我们使用 1S-1S-1S 模式、我们是否需要将引导模式引脚设置为 SPI 引导? 目前、它设置为 QSPI 引导。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Donghui:

    2)。 留出一些时间来通过发出命令或使用复位行确认 ROM 如何复位闪存。

    3)。 是的、如果使用 1S-1S-1S 模式、我们需要将 BOTMODE 引脚设置为 SPI 引导。

    此致、

    Aryamaan Chaurasia

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    kernel/drivers/mtd/nand/spi/core.c(确定)

    RTOS:

    函数: FLASH_nandOspiReadId 返回 0xC8 0x92 、可以。

    flash_nand_ospi.c:  

    函数 Flash_nandOspiRead:(返回 0xFF 0xFF 0xFF 0xFF 0xFF 失败)

    我没有看到将数据从高速缓存传输到 CPU 的代码。(0x6B)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Donghui:

    Flash_nandOspiPageLoad 用于将数据从闪存传输到其缓存、而 OSPI_readDirect 用于将数据从缓存传输到 CPU。

    但是、我能否知道您使用的是哪种协议? 因为对于 1S-1S-1S 协议、要发出的命令为 0x03h、这将从高速缓存中读取数据。

    此致、

    Aryamaan Chaurasia

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    使用 1S-1S-1S 模式时、

    RTOS NAND 闪存驱动程序:只有第一个字节错误 (0xFF)、所有其他数据都正确。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1S-1S-1S 模式现在可以了。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Donghui:

    很高兴知道 1S-1S-1S 模式现在可正常工作。

    此致、

    Aryamaan Chaurasia

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    亲爱的东辉。

    请让我们知道该州。 请问您是否解决了问题? 如果没有、请澄清要求? 您对此问题的时间计划是什么?

    非常感谢!

    Yong

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的永州:

       可以读取中的 NAND 闪存固件 sbl_eMMC_linux_stage2 消息流 1S-1S-1S 消耗量

    但没有来自的日志输出 sbl_ospi_linux_stage1 将引导模式引脚设置为之后 SPI 引导 消耗量。  

    我要验证引导模式配置是否正确、

    但我需要调试 VOUT 显示驱动程序。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    BOOTMODE 引脚至 SPI 引导 消耗量。  [/报价]

    您是否正在设置串行 NAND 引导模式 (1S-1S-1S) 或者是否正在设置 SPI 引导模式 (1S-1S-1S)?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已确认以下项目:

    1) 四路使能位 (QE) 默认为 0。

    2)调用 Flash_nandOspiSetProtocol flash_CFG_PROTO_1S_1S_1S

    3) 调用 OSPI_setProtocol (1、1、1、0);

    我的问题是:

    sbl_ospi_linux_stage1 是由 ROM 代码加载的第一个固件。

    ROM 代码如何知道 如何读取 NAND 闪存

    SPI NAND 读取协议 两者都是相同的?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    [报价 userid=“629085" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1628206/am62p-add-nand-flash-gigadevice-gd5f2gm7ue-support-into-sdk-rtos/6307533

    ROM 代码如何知道 如何读取 NAND 闪存

    SPI NAND 读取协议 两者都是相同的?

    [/报价]

    因此、ROM 代码从 NAND 闪存读取数据、这取决于您设置的引导模式。 如果您设置了该参数、我需要了解这一点  串行 NAND 引导模式 (1S-1S-1S) 或者您是否正在设置 SPI 引导模式 (1S-1S-1S)?

    以下是 TRM 本身的更多信息、请阅读以下内容:

    SPI NAND 读取协议 两者相同?

    这取决于您设置的模式。 请查看串行 NAND 闪存的不同引导模式。

    希望这有所帮助。

    此致、

    Vaibhav

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Vaibhav:

    我发现 相关问题:

    e2e.ti.com/.../5764419

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Donghui,

      您能否请将 DM 内核连接到 CCS、并 在此处转储寄存器 0x43000030 和反馈?  

      关于主引导模式选择、支持串行 NAND、OSPI、QSPI。 GD5F2GM7 就位于您的项目中 Seral NAND flas H.请确保 B6 B5 B4 B3 接地。  

    Linjun

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当我将引导模式设置为 OSPI

    请参阅 Vaibhav 上面发布的回复、并将引导模式引脚设置为串行 NAND SPI 引导模式 (1S-1S-1S)。  

    正确的引导模式引脚配置为:b0->b8:110 0000 01  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    串行 NAND SPI 引导模式 (1S-1S-1S)。

    解决 BOOTMODE8 上的引导模式配置异常后、即镜像 sbl_ospi_linux_stage1.release.hs_fs.tiimage 引导的工具相对应。