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.

[参考译文] TMDS64EVM:关于 GPMC 时钟

Guru**** 2482225 points
Other Parts Discussed in Thread: TMDS64EVM, TMDXEVM3358

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1405983/tmds64evm-about-the-gpmc-clock

器件型号:TMDS64EVM
主题中讨论的其他器件: TMDXEVM3358

工具与软件:

您好、支持。

关于 GPMC 我有两个问题。

1.能否使用带有 PSDK9.1.0.8的 GPMC 从 NAND 闪存读取/写入和引导?

2. GPMC 的工作时钟是什么? 如何才能对其进行检查? 我需要它来计算写入/读取时序。

工作环境如下。

EVM:TMDS64EVM (从 HSC 连接到定制 NAND 板)

PSDK:9.1.0.8

此致、

最终目的

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

    您好、

    Unknown 说:
    1. 我能否将 GPMC 与 PSDK9.1.0.8配合使用以从 NAND 闪存进行读取/写入和引导?[/QUOT]

    有。

    Unknown 说:
    2. GPMC 的工作时钟是什么? [报价]

    SDK 将 GPMC FCLK 配置为133MHz、但它也可以配置为100、80和60MHz。

    Unknown 说:
    我该如何检查它?
    [/quote]

    在 Linux 中运行以下命令的一种方法:

    # k3conf 转储时钟80

    例如:

    root@am64xx-evm:~# k3conf dump clock 80
    |------------------------------------------------------------------------------|
    | VERSION INFO                                                                 |
    |------------------------------------------------------------------------------|
    | K3CONF | (version 0.3-nogit built Wed Mar 06 14:29:58 UTC 2024)              |
    | SoC    | AM64x SR2.0                                                         |
    | SYSFW  | ABI: 3.1 (firmware version 0x0009 '9.2.8--v09.02.08 (Kool Koala))') |
    |------------------------------------------------------------------------------|
    
    |-------------------------------------------------------------------------------------------------------------------------|
    | Device ID | Clock ID | Clock Name                                                   | Status          | Clock Frequency |
    |-------------------------------------------------------------------------------------------------------------------------|
    |    80     |     0    | DEV_GPMC0_FUNC_CLK                                           | CLK_STATE_READY | 133333333       |
    |    80     |     1    | DEV_GPMC0_FUNC_CLK_PARENT_HSDIV4_16FFT_MAIN_0_HSDIVOUT3_CLK  | CLK_STATE_READY | 133333333       |
    |    80     |     2    | DEV_GPMC0_FUNC_CLK_PARENT_POSTDIV4_16FF_MAIN_2_HSDIVOUT7_CLK | CLK_STATE_READY | 100000000       |
    |    80     |     3    | DEV_GPMC0_PI_GPMC_RET_CLK                                    | CLK_STATE_READY | 0               |
    |    80     |     4    | DEV_GPMC0_VBUSM_CLK                                          | CLK_STATE_READY | 250000000       |
    |    80     |     5    | DEV_GPMC0_PO_GPMC_DEV_CLK                                    | CLK_STATE_READY | 0               |
    |-------------------------------------------------------------------------------------------------------------------------|

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

    您好、Bin。

    感谢您介绍这款有用的工具。

    我调节了 NAND 时序并进行了检查。 但它不起作用...

    我还有几个问题。

    1. 我进行了检查、当前时钟频率为133MHz。
      如何将其更改为100MHz? 请告诉我修改源代码的位置。

    2. 我已经调整了设备树时序并检查了 dmesg。
      我收到以下错误、时间是否有问题?


      错误1:
      这只是一个警告、而不是问题吗?
      [    6.646347] mtdblock: MTD device 'NAND.tiboot3' is NAND, please consider using UBI block devices instead.
      [    6.740584] mtdblock: MTD device 'NAND.tispl' is NAND, please consider using UBI block devices instead.
      [    6.786904] mtdblock: MTD device 'NAND.tiboot3.backup' is NAND, please consider using UBI block devices instead.
      [    6.899275] mtdblock: MTD device 'NAND.u-boot' is NAND, please consider using UBI block devices instead.
      [    6.988535] mtdblock: MTD device 'NAND.u-boot-env' is NAND, please consider using UBI block devices instead.
      [    7.113752] mtdblock: MTD device 'NAND.u-boot-env.backup' is NAND, please consider using UBI block devices instead.
      [    7.209012] mtdblock: MTD device 'NAND.file-system' is NAND, please consider using UBI block devices instead.


      错误2:
      此错误是否由时序错误引起?
      [   11.873804] mtdblock: MTD device 'NAND.file-system' is NAND, please consider using UBI block devices instead.
      [   11.884905] omap2-nand 51000000.nand: uncorrectable bit-flips found
      [   11.891294] I/O error, dev mtdblock6, sector 502656 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 2
      [   11.903146] omap2-nand 51000000.nand: uncorrectable bit-flips found
      [   11.909533] I/O error, dev mtdblock6, sector 502656 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
      [   11.918770] Buffer I/O error on dev mtdblock6, logical block 62832, async page read
      
      [   11.927644] mtdblock: MTD device 'NAND.u-boot-env' is NAND, please consider using UBI block devices instead.
      [   11.938352] omap2-nand 51000000.nand: uncorrectable bit-flips found
      [   11.944871] I/O error, dev mtdblock4, sector 8 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 2
      [   11.954319] omap2-nand 51000000.nand: uncorrectable bit-flips found
      [   11.960650] I/O error, dev mtdblock4, sector 8 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
      [   11.969305] Buffer I/O error on dev mtdblock4, logical block 1, async page read
      
      [   12.006356] mtdblock: MTD device 'NAND.tiboot3.backup' is NAND, please consider using UBI block devices instead.
      [   12.017408] omap2-nand 51000000.nand: uncorrectable bit-flips found
      [   12.023836] I/O error, dev mtdblock2, sector 3968 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 2
      [   12.033593] omap2-nand 51000000.nand: uncorrectable bit-flips found
      [   12.039936] I/O error, dev mtdblock2, sector 3968 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
      [   12.048841] Buffer I/O error on dev mtdblock2, logical block 496, async page read
      
      [   12.057756] mtdblock: MTD device 'NAND.tiboot3' is NAND, please consider using UBI block devices instead.
      [   12.068353] omap2-nand 51000000.nand: uncorrectable bit-flips found
      [   12.074693] I/O error, dev mtdblock0, sector 3968 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 2
      [   12.084367] omap2-nand 51000000.nand: uncorrectable bit-flips found
      [   12.090805] I/O error, dev mtdblock0, sector 3968 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
      [   12.099934] Buffer I/O error on dev mtdblock0, logical block 496, async page read
      
      [   12.114512] mtdblock: MTD device 'NAND.u-boot-env.backup' is NAND, please consider using UBI block devices instead.
      [   12.129757] omap2-nand 51000000.nand: uncorrectable bit-flips found
      [   12.140820] I/O error, dev mtdblock5, sector 8 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 2
      [   12.155816] omap2-nand 51000000.nand: uncorrectable bit-flips found
      [   12.167139] I/O error, dev mtdblock5, sector 8 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
      [   12.180065] Buffer I/O error on dev mtdblock5, logical block 1, async page read
      
      [   12.233106] mtdblock: MTD device 'NAND.u-boot' is NAND, please consider using UBI block devices instead.
      [   12.243429] omap2-nand 51000000.nand: uncorrectable bit-flips found
      [   12.250255] omap2-nand 51000000.nand: uncorrectable bit-flips found
      [   12.256630] Buffer I/O error on dev mtdblock3, logical block 1008, async page read
      
      [   12.265633] mtdblock: MTD device 'NAND.tispl' is NAND, please consider using UBI block devices instead.
      [   12.277338] omap2-nand 51000000.nand: uncorrectable bit-flips found
      [   12.284243] omap2-nand 51000000.nand: uncorrectable bit-flips found
      [   12.290614] Buffer I/O error on dev mtdblock1, logical block 496, async page read


      参考:
      使用的 NAND 闪存为 MT29F2G08ABAEAWP。
      读取 ID 命令(0x90)的结果是正确的。
      我认为时间安排合理、因为我没错。
      [ 1.337095] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xda
      [ 1.343515] nand: Micron NAND 256MiB 3,3V 8-bit
      [ 1.351610] nand: 256 MiB, MLC, erase size: 128 KiB, page size: 2048, OOB size: 64
      [ 1.359229] nand: using OMAP_ECC_BCH8_CODE_HW ECC scheme
      [ 1.364616] 7 fixed-partitions partitions found on MTD device omap2-nand.0
      [ 1.371495] Creating 7 MTD partitions on "omap2-nand.0":
      [ 1.376805] 0x000000000000-0x000000200000 : "NAND.tiboot3"
      [ 1.384291] 0x000000200000-0x000000400000 : "NAND.tispl"
      [ 1.391453] 0x000000400000-0x000000600000 : "NAND.tiboot3.backup"
      [ 1.405140] 0x000000600000-0x000000a00000 : "NAND.u-boot"
      [ 1.413025] 0x000000a00000-0x000000a40000 : "NAND.u-boot-env"
      [ 1.420268] 0x000000a40000-0x000000a80000 : "NAND.u-boot-env.backup"
      [ 1.428161] 0x000000a80000-0x000010000000 : "NAND.file-system"

    此致、

    最终目的

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

    您好、

    请对器件树中的"&GPMC"节点使用以下补丁、将 GPMC FCLK 更改为100MHz。

            #address-cells = <2>;
            #size-cells = <1>;
    +       assigned-clocks = <&k3_clks 80 0>;
    +       assigned-clock-parents = <&k3_clks 80 1>;
    +       assigned-clock-rates = <100000000>;
     
            nand@0,0 {
                    compatible = "ti,am64-nand";

    "mtdbock:MTD 器件'NAND.tiboot3"为 NAND、请考虑改用 UBI 块器件。"

    这些消息会扭曲、可以忽略它们。

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

    您好、Bin。

    感谢您的答复。

    我尝试更改频率并进行检查。

    您能回答有关错误2的问题吗?

    我担心"不可纠正的位翻转"和"I/O 错误"的问题。

    此致、

    最终目的

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

    您好、

    我不熟悉"不可纠正的位翻转"消息、但在内核源代码中、似乎表明 BCH 校验无法纠正 CRC 错误。

    但我对"Buffer I/O"错误更加关注。 这可能意味着 GPMC 时序配置不正确。

    您如何刷写 NAND 器件?

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

    您好、Bin。

    感谢您的答复。

    但是我对"Buffer I/O"错误更担忧。 这可能意味着 GPMC 时序配置不正确。

    我正在使用 Micron 的 MT29F2G08ABAEAWP。
    我不确定如何设置 NAND 时序。  您能告诉我如何设置它吗?

    目前、时序参数基于 AM335x-evm.dts。
    AM335x-EVM(TMDXEVM3358 )有一个 MT29F2G08ABAEAWP 连接到 GPMC。  ->  链接

    TMDS64EVM 使用的器件树如下所示:

    &gpmc0 {	
            status = "okay";	
            pinctrl-names = "default";	
            pinctrl-0 = <&gpmc0_pins_default>;	
            ranges = <0 0 0x00 0x51000000 0x01000000>; /* CS0 space. Min partition = 16MB */	
            #address-cells = <2>;	
            #size-cells = <1>;	
    	
            assigned-clocks = <&k3_clks 80 0>;	
            assigned-clock-parents = <&k3_clks 80 1>;	
            assigned-clock-rates = <100000000>;	
    	
            nand0_0: nand@0,0 {	
                    compatible = "ti,am64-nand";	
                    reg = <0 0 4>; /* CS0, offset 0, IO size 4 */	
                    interrupt-parent = <&gpmc0>;	
                    interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */	
                                 <1 IRQ_TYPE_NONE>; /* termcount */	
                    rb-gpios = <&gpmc0 0 GPIO_ACTIVE_HIGH>; /* gpmc_wait0 */	
                    ti,nand-xfer-type = "prefetch-polled";	
                    ti,nand-ecc-opt = "bch8";	
                    ti,elm-id = <&elm0>;	
                    nand-bus-width = <8>;	
                    gpmc,device-width = <1>;	
                    gpmc,sync-clk-ps = <0>;	
                    gpmc,cs-on-ns = <0>;	
                    gpmc,cs-rd-off-ns = <44>;	
                    gpmc,cs-wr-off-ns = <44>;	
                    gpmc,adv-on-ns = <6>;	
                    gpmc,adv-rd-off-ns = <34>;	
                    gpmc,adv-wr-off-ns = <44>;	
                    gpmc,we-on-ns = <0>;	
                    gpmc,we-off-ns = <40>;	
                    gpmc,oe-on-ns = <0>;	
                    gpmc,oe-off-ns = <54>;	
                    gpmc,access-ns = <64>;	
                    gpmc,rd-cycle-ns = <82>;	
                    gpmc,wr-cycle-ns = <82>;	
                    gpmc,bus-turnaround-ns = <0>;	
                    gpmc,cycle2cycle-delay-ns = <0>;	
                    gpmc,clk-activation-ns = <0>;	
                    gpmc,wr-access-ns = <40>;	
                    gpmc,wr-data-mux-bus-ns = <0>;	
    
                    partitions {
                            compatible = "fixed-partitions";
                            #address-cells = <1>;
                            #size-cells = <1>;
    
                            partition@0 {
                                    label = "NAND.tiboot3";
                                    reg = <0x00000000 0x00200000>;  /* 2M */
                            };
                            partition@200000 {
                                    label = "NAND.tispl";
                                    reg = <0x00200000 0x00200000>;  /* 2M */
                            };
                            partition@400000 {
                                    label = "NAND.tiboot3.backup";  /* 2M */
                                    reg = <0x00400000 0x00200000>;  /* BootROM looks at 4M */
                            };
                            partition@600000 {
                                    label = "NAND.u-boot";
                                    reg = <0x00600000 0x00400000>;  /* 4M */
                            };
                            partition@a00000 {
                                    label = "NAND.u-boot-env";
                                    reg = <0x00a00000 0x00040000>;  /* 256K */
                            };
                            partition@a40000 {
                                    label = "NAND.u-boot-env.backup";
                                    reg = <0x00a40000 0x00040000>;  /* 256K */
                            };
                            partition@a80000 {
                                    label = "NAND.file-system";
                                    reg = <0x00a80000 0x0f580000>;
                            };
                    };
            };
    };
    
    

    您如何闪存 NAND 器件?

    由于出现错误、无法刷新。
    我执行了"flash_erase"命令、但擦除失败。
    整个 NAND 块是一个错误块。 这是计时问题吗?

    root@am64xx-evm:~# flash_erase /dev/mtd0 0 0
    Erasing 2048 Kibyte @ 0 --  0 % complete [ 1948.665054] nand: nand_erase_nand: attempt to erase a bad block at 0x00000000
    libmtd: error!: MEMERASE64 ioctl failed for eraseblock 0 (mtd0)
            error 5 (Input/output error)
    flash_erase: error!: /dev/mtd0: MTD Erase entire chip failureTrying one by one each sector.
                 error 5 (Input/output error)
    flash_erase: Skipping bad block at 00000000
    flash_erase: Skipping bad block at 00010000
    flash_erase: Skipping bad block at 00020000
    flash_erase: Skipping bad block at 00030000
    flash_erase: Skipping bad block at 00040000
    flash_erase: Skipping bad block at 00050000
    flash_erase: Skipping bad block at 00060000
    flash_erase: Skipping bad block at 00070000
    flash_erase: Skipping bad block at 00080000
    flash_erase: Skipping bad block at 00090000
    flash_erase: Skipping bad block at 000a0000
    flash_erase: Skipping bad block at 000b0000
    flash_erase: Skipping bad block at 000c0000
    flash_erase: Skipping bad block at 000d0000
    flash_erase: Skipping bad block at 000e0000
    flash_erase: Skipping bad block at 000f0000
    flash_erase: Skipping bad block at 00100000
    flash_erase: Skipping bad block at 00110000
    flash_erase: Skipping bad block at 00120000
    flash_erase: Skipping bad block at 00130000
    flash_erase: Skipping bad block at 00140000
    flash_erase: Skipping bad block at 00150000
    flash_erase: Skipping bad block at 00160000
    flash_erase: Skipping bad block at 00170000
    flash_erase: Skipping bad block at 00180000
    flash_erase: Skipping bad block at 00190000
    flash_erase: Skipping bad block at 001a0000
    flash_erase: Skipping bad block at 001b0000
    flash_erase: Skipping bad block at 001c0000
    flash_erase: Skipping bad block at 001d0000
    flash_erase: Skipping bad block at 001e0000
    flash_erase: Skipping bad block at 001f0000
    Erasing 64 Kibyte @ 1f0000 -- 100 % complete

    此致、

    最终目的

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

    收件人:

    我会将您的查询发送给我们的 GPMC 硬件专家、以便对计时配置进行评论。

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

    嗨、Bin 和硬件专家。

    感谢您的支持。

    请帮助我调整 NAND 时序

    目前情况如下:

    NAND 型号

    MT29F2G08ABAEAWP

    与非时序

    &gpmc0 {
            status = "okay";
            pinctrl-names = "default";
            pinctrl-0 = <&gpmc0_pins_default>;
            ranges = <0 0 0x00 0x51000000 0x01000000>; /* CS0 space. Min partition = 16MB */
            #address-cells = <2>;
            #size-cells = <1>;
    
            nand0_0: nand@0,0 {
                    compatible = "ti,am64-nand";
                    reg = <0 0 64>; /* CS0, offset 0, IO size 4 */
                    interrupt-parent = <&gpmc0>;
                    interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */
                                 <1 IRQ_TYPE_NONE>; /* termcount */
                    rb-gpios = <&gpmc0 0 GPIO_ACTIVE_HIGH>; /* gpmc_wait0 */
                    ti,nand-xfer-type = "prefetch-polled";
                    ti,nand-ecc-opt = "bch8";
                    ti,elm-id = <&elm0>;
                    nand-bus-width = <8>;
                    gpmc,device-width = <1>;
                    gpmc,sync-clk-ps = <0>;
                    gpmc,cs-on-ns = <0>;
                    gpmc,cs-rd-off-ns = <38>;
                    gpmc,cs-wr-off-ns = <38>;
                    gpmc,adv-on-ns = <8>;
                    gpmc,adv-rd-off-ns = <30>;
                    gpmc,adv-wr-off-ns = <38>;
                    gpmc,we-on-ns = <0>;
                    gpmc,we-off-ns = <30>;
                    gpmc,oe-on-ns = <0>;
                    gpmc,oe-off-ns = <45>;
                    gpmc,access-ns = <53>;
                    gpmc,rd-cycle-ns = <68>;
                    gpmc,wr-cycle-ns = <68>;
                    gpmc,bus-turnaround-ns = <0>;
                    gpmc,cycle2cycle-delay-ns = <0>;
                    gpmc,clk-activation-ns = <0>;
                    gpmc,wr-access-ns = <30>;
                    gpmc,wr-data-mux-bus-ns = <0>;

    操作结果

    NAND 设备:正常

    [    1.345030] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xda
    [    1.351523] nand: Micron NAND 256MiB 3,3V 8-bit
    [    1.356084] nand: 256 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
    [    1.363706] nand: using OMAP_ECC_BCH8_CODE_HW ECC scheme


    MTD 检测:正常
    root@am64xx-evm:~# cat /proc/mtd
    dev:    size   erasesize  name
    mtd0: 00200000 00020000 "NAND.tiboot3"
    mtd1: 00200000 00020000 "NAND.tispl"
    mtd2: 00200000 00020000 "NAND.tiboot3.backup"
    mtd3: 00400000 00020000 "NAND.u-boot"
    mtd4: 00040000 00020000 "NAND.u-boot-env"
    mtd5: 00040000 00020000 "NAND.u-boot-env.backup"
    mtd6: 0f580000 00020000 "NAND.file-system"

    擦除和读取:确定

    root@am64xx-evm:~# flash_erase /dev/mtd0 0 0
    Erasing 2048 Kibyte @ 0 -- 100 % complete
    root@am64xx-evm:~# hexdump /dev/mtd0
    0000000 ffff ffff ffff ffff ffff ffff ffff ffff
    *
    0200000

    节目:NG
    程序似乎在工作。
    但是、与源数据(tiboot3.bin)相比、数据不匹配。
    mtd0~6会出现同样的问题。
    我认为这是因为出现了错误"找到不可纠正的位翻转"。  这是计时问题吗?

    root@am64xx-evm:~# nandwrite -p /dev/mtd0 /run/media/boot-mmcblk1p1/tiboot3.bin
    Writing data to block 0 at offset 0x0
    Writing data to block 1 at offset 0x20000
    Writing data to block 2 at offset 0x40000
    Writing data to block 3 at offset 0x60000
    Writing data to block 4 at offset 0x80000
    root@am64xx-evm:~# hexdump /dev/mtd0 | head
    [  655.599277] omap2-nand 51000000.nand: uncorrectable bit-flips found
    [  655.605622] omap2-nand 51000000.nand: uncorrectable bit-flips found
    [  655.611907] omap2-nand 51000000.nand: uncorrectable bit-flips found
    [  655.618221] omap2-nand 51000000.nand: uncorrectable bit-flips found
    [  655.625036] omap2-nand 51000000.nand: uncorrectable bit-flips found
    [  655.631423] omap2-nand 51000000.nand: uncorrectable bit-flips found
    [  655.637711] omap2-nand 51000000.nand: uncorrectable bit-flips found
    [  655.644014] omap2-nand 51000000.nand: uncorrectable bit-flips found
    0000000 8230 ba07 8230 a205 03a0 0102 0202 1e14
    0000010 cf9e d294 2773 3c6d 456a 625d 575c 2eec
    0000020 8798 0d30 0906 862a 8648 010d 0d01 0005
    0000030 8130 0b31 0930 0306 0455 1306 5302 0b31
    0000040 0930 0306 0455 0c08 5402 3158 300f 060d
    0000050 5503 0704 060c 6144 6c6c 7361 2731 2530
    0000060 0306 0455 0c0a 541e 7865 7361 4920 736e
    0000070 7274 6d75 6e65 7374 4920 636e 726f 7270
    0000080 7461 6465 1331 1130 0306 0455 0c0b 500a
    0000090 6f72 6563 7373 726f 3173 3013 0611 5503
    root@am64xx-evm:~# hexdump /run/media/boot-mmcblk1p1/tiboot3.bin | head
    0000000 8230 ba07 8230 a205 03a0 0102 0202 1e14
    0000010 cf9e d294 2773 3c6d fe6a 5d45 5c62 ec57
    0000020 982e 3087 060d 2a09 4886 f786 010d 0d01
    0000030 0005 8130 319d 300b 0609 5503 0604 0213
    0000040 5355 0b31 0930 0306 0455 0c08 5402 3158
    0000050 300f 060d 5503 0704 060c 6144 6c6c 7361
    0000060 2731 2530 0306 0455 0c0a 541e 7865 7361
    0000070 4920 736e 7274 6d75 6e65 7374 4920 636e
    0000080 726f 6f70 6172 6574 3164 3013 0611 5503
    0000090 0b04 0a0c 7250 636f 7365 6f73 7372 1331

    NAND 测试命令:NG
    mtd0~6会出现同样的问题。

    root@am64xx-evm:~# nandtest /dev/mtd0
    ECC corrections: 0
    ECC failures   : 2
    Bad blocks     : 0
    BBT blocks     : 0
    00000000: reading (1 of 4)...[   48.009870] omap2-nand 51000000.nand: uncorrectable bit-flips found
    [   48.018171] omap2-nand 51000000.nand: uncorrectable bit-flips found
    [   48.024513] omap2-nand 51000000.nand: uncorrectable bit-flips found
    [   48.030888] omap2-nand 51000000.nand: uncorrectable bit-flips found
    ~ skip ~
    [   49.639881] omap2-nand 51000000.nand: uncorrectable bit-flips found
    [   49.646191] omap2-nand 51000000.nand: uncorrectable bit-flips found
    [   49.652469] omap2-nand 51000000.nand: uncorrectable bit-flips found
    
    ECC failed at 00000000
    00000000: checking...
    compare failed. seed 388096503
    Byte 0x2 is 11 should be d9
    Byte 0x3 is 02 should be 11
    Byte 0x4 is a5 should be 02
    Byte 0x5 is 1b should be 5d
    Byte 0x6 is cf should be a5
    Byte 0x7 is 7f should be 1b
    Byte 0x8 is 02 should be cf
    Byte 0x9 is 91 should be 7f
    Byte 0xa is 23 should be 02
    ~ skip ~


    此致、

    最终目的

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

    您好、

    感谢您提供的意见。

    我将会检查输入。

    我可能必须在内部联系专家。

    此致、

    Sreenivasa

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

    您好、Sreenivasa。

    感谢您的合作。

    我要查看数据表并调整时序、但由于 ECC 错误、无法进行编程。
    随附了 NAND (MT29F2G08ABAEAWP)数据表。 请将其用作参考。

    e2e.ti.com/.../m69a_2D00_2gb_2D00_ecc_2D00_nand.pdf

    我希望能够通过以下 URL 使用 NAND 时序。
    此器件树显示了安装在 TI 扩展板 PROC143E1上的 NAND 参数。
    https://patchwork.kernel.org/project/linux-arm-kernel/patch/20240622-am62lp-sk-nand-v1-2-caee496eaf42@kernel.org/

    MT29F8G08ADAFAH 似乎已安装在 PROC143E1上。
    /cfs-file/__key/communityserver-discussions-components-files/791/2804.proc143e2_5F00_sch.pdf

    此致、

    最终目的

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

    您好、

    谢谢你。

    正在检查是否有查询或您正在尝试的内容是否为 FYI?

    此致、

    Sreenivasa

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

    您好、

    我与这里的团队进行了核实、您所遵循的方法似乎符合正确的方向。

    请告知我们您的观察结果。

    此致、

    Sreenivasa

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

    您好、Sreenivasa。

    感谢您的支持。

    我通过查看 NAND 数据表来调整时序。

    但是、时序调整没有正确完成、并且不起作用。

    我在 Excel 中附加了一个计时图。

    您能检查一下内容吗? 如有任何问题、请告诉我。

    e2e.ti.com/.../NAND-timing.xlsx

    此致、

    最终目的

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

    您好、

    我爱你。"

    我必须联系专家、了解他的想法。

    这预计需要一些时间。

    此致、

    Sreenivasa

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

    您好、Sreenivasa、

    感谢您的支持。

    我将在下周开始定制电路板设计、因此我希望在本周结束时(如果可能)得到解答。

    检查软件参数时、我检查一下 GPMC 波形。

    此致、

    最终目的

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

    您好、

    谢谢你。

    让我跟进并更新。

    此致、

    Sreenivasa

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

    您好、

    我将为我们的软件专家分配线程以提供支持。

    此致、

    Sreenivasa

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

    您好、

    您能否确认 NAND 设备的工作电压?

    大多数情况下、MCU+SDK 或 Processor SDK 中提供的已配置时序参数应该适用于所有 NAND 器件。

    (TI)内部使用以下工具来配置 NAND 时序参数。

    您可以尝试使用相同的工具。

    在工具中、转到"NAND 时序"选项卡。 然后提供中每个时序参数的最小值和最大值   E 列中。

    并尝试中的 GPMC 时钟配置 b 列中。

    如果您遇到任何问题,请告诉我。

    e2e.ti.com/.../GPMC_2B00_tool.xlsm

    此致、

    Anil。

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

    Anil、您好!

    您能否确认您的 NAND 器件的工作电压?

    NAND 的电压为3.3V。

    感谢您发送 NAND 时序配置 工具。

    您能告诉我如何使用此工具吗?

    1.我只能更改 Reg 转储表的 B 列吗?  

    2. GPMC 正在将 NAND 闪存连接到 CS0。 在这种情况下、是否仍需要从 GPMC_REVISION (第14行)到 GPMC_ECCj_RESULT (第101行)的寄存器信息?

    自昨天以来我就一直在观察 GPMC 波形、但它有很大的噪声

    可能是硬件问题。 我将继续检查 GPMC 波形。

    此致、

    最终目的

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

    Anil、您好!

    感谢您的支持。

    GPMC 时序不存在问题。

    AM64EVM 与 NAND 闪存之间的连接过长、因此波形有噪声。

    因此、我确定是硬件问题。

    您能再告诉我一件事吗?

    我有一个关于 NAND 写入时序波形的问题。

    1.下面红色箭头所示期间发生了什么情况?  CS 置为无效。

    2. 我想消除这个时期,但我怎么能做到呢?

    *在下图中,  黄色箭头是"CS",粉色箭头是"我们",蓝色箭头是"D0"。

    基准

    1. 检查波形时的寄存器值如下:

    GPMC_CONFIG1_0 (0x3B000060):0x00000800
    GPMC_CONFIG2_0 (0x3B000064):0x00060700
    GPMC_CONFIG3_0 (0x3B000068):0x00040400
    GPMC_CONFIG4_0 (0x3B00006C):0x03000501
    GPMC_CONFIG5_0 (0x3B000070):0x00050607
    GPMC_CONFIG6_0 (0x3B000074):0x86000000
    GPMC_CONFIG7_0 (0x3B000078):0x00000F51

    2. NAND 读取时序正常

    读取数据时、CS 绝不会置为无效。
    *在下图中,  黄色箭头是"CS",粉色箭头是"RE",蓝色箭头是"D0"。

    此致、

    最终目的

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

    您好!

    我将添加更多信息。

    GPMC 时钟为133MHz、器件树值如下:

    NAND 总线宽度=<8>;
    GPMC、器件宽度=<1>;
    GPMC、sync-clk-ps =<0>;
    GPMC、cs-on-ns =<0>;
    GPMC、cs-rd-off-ns =<50>;
    GPMC、cs-power-off-ns =<40>;
    GPMC、adv-on-ns =<0>;
    GPMC、Adv-rd-off-ns =<25>;
    GPMC、Adv-wr-off-ns =<25>;
    GPMC、we-on-ns =<0>;
    GPMC、WE-OFF-ns =<20>;
    GPMC、OE-ON-ns =<3>;
    GPMC、OE-OFF-ns =<35>;
    GPMC、access-ns =<35>;
    GPMC、第周期 ns =<50>;
    GPMC、电源周期 ns =<40>;
    GPMC、总线周转 ns =<0>;
    GPMC、cycle2cycle-delay-ns =<0>;
    GPMC、clk-activation-ns =<0>;
    GPMC、wr-access-ns =<40>;
    GPMC、wr-data-mux-bus-ns =<0>;

    此致、

    最终目的

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

    您好、支持。

    您有更新吗?

    请告诉我今天的状态。

    此致、

    最终目的

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

    您好、

    我们已正确调整所有时序参数、并将其添加到用于读取和写入操作的 AM64x 和 AM62x 器件中。

    无论 MCU_SDK 中可用的任何时序参数都经过优化、我们无法进一步减少。

    此致、

    Anil。

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

    Anil、您好!

    感谢您的答复。

    您能回答以下问题1和2吗?

    [报价 userid="575384" url="~/support/processors-group/processors/f/processors-forum/1405983/tmds64evm-about-the-gpmc-clock/5408437 #5408437"]

    我有一个关于 NAND 写入时序波形的问题。

    1.下面红色箭头所示期间发生了什么情况?  CS 置为无效。

    2. 我想消除这个时期,但我怎么能做到呢?

    *在下图中,  黄色箭头是"CS",粉色箭头是"我们",蓝色箭头是"D0"。

    [报价]

    此致、

    最终目的

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

    您好、

    我需要一些多美来回到这个.

    我会在一个或拖天来.

    此致、

    Anil。

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

    Anil、您好!

    感谢您的支持。

    我期待收到您的回复。

    此致、

    最终目的

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

    您好、

    我尚未使用时序参数验证您的测试结果、可能需要比平时更长的时间。

    我可以尝试在一天结束或明天结束之前作出答复。

    此致、

    Anil。

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

    Anil、您好!

    感谢您的合作。

    您是否有任何更新?

    此致、

    最终目的

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

    尊敬的支持部门:

    请今天就进展情况作出答复。

    此致、

    最终目的

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

    您好、

    实现这一点。

    您可以浏览"NAND 时序"选项卡。

    然后、进入 NAND 命令锁存周期、您可以在该周期中检查跟踪参数。

    我根据连接到 EVM 的 NAND 数据表提供了5ns 的值。

    在这种情况下、请浏览数据表、将最小值输入到 Excel 工作表中、然后尝试仅修改 CSWROFFTIME 参数。

    在 MCU+SDK 中、我们默认配置为6、然后在根据 NAND 数据表进行更新后、我们也可以将其设置为4。  

    4值后跟缝合最小值和最大值标准。

    更新更改后、请确认读写循环。

    此致、

    Anil。

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

    Anil、您好!

    感谢您的支持。

    我将 CSWROFFTIME 从6clk 更改为4clk。

    此外、我还在 GPMC 工具中更新了 NAND 请求时序和 GPMC_CONFIGX。

    附带了修改后的 GPMC 工具。  我会检查一下并分享结果。

    此致、

    最终目的

    e2e.ti.com/.../6087.GPMC_2B00_tool.xlsm

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

    Anil、您好!

    我将 CSWROFFTIME 更改为4时钟、并确认了 NAND 写入波形。 如下图所示:

    但是、红色箭头周期并未消除。 在写入两个字节后、似乎有一个大约100ns 的空白周期。

    我对标有红色箭头的这段时间有疑问。

    1.是否可以消除此期间?

    2. GPMC 驱动程序在这段时间内起什么作用?

    此致、

    最终目的

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

    您好、

    很抱歉昨天的回复延迟、印度 TI 是 假期。

    感谢您分享上述详细信息。

    我将把您的查询发送给硬件专家。

    GPMC CS 线路不受 GPMC 驱动程序控制、GPMC IP 控制每个读写事务的此引脚。

    [报价 userid="575384" url="~/support/processors-group/processors/f/processors-forum/1405983/tmds64evm-about-the-gpmc-clock/5442423 #5442423"]

    1.是否可以消除此期间?

    2. GPMC 驱动程序在这段时间内起什么作用?

    [报价]

    此致、

    Anil。

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

    Anil、您好!

    谢谢你。

    我指派给 GPMC 专家来提供支持。

    请预计会有一些响应延迟。

    此致、

    Sreenivasa

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

    大家好、Anil 和 Sreenivas、

    感谢您的支持。

    我期待收到 GPMC 专家的意见。

    此致、

    最终目的

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

    您好、Sreenivas、

    主题的进展如何?

    我期待收到您的回复。

    此致、

    最终目的

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

    您好、Sreenivasa、

    您能给我更新一下吗?

    此致、

    最终目的

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

    看起来分配给这个人的专家不在办公室。 我会在下周早些时候跟他们跟进。 很抱歉让你久等了。  

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

    我不是专家,我可以根据我的经验告诉。

    是否可以取消此期间?

    不能使用 CPU 访问、可以改为使用 DMA 访问来减少。

    .GPMC 驱动程序在此期限内做了什么?

    没有。 这是从 CPU 到 GPMC 的内部总线上的桥接器之间的延迟。

    因此、尽管 GPMC 总线时钟为100MHz 或133MHz、但吞吐量低于预期。  

    实际上、有许多 e2e 线程对 GPMC 吞吐量提出疑问。 您的波形说明了根本原因。

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

    您好、Tony、

    你有什么想法为什么这种延迟没有在读取周期和为什么只有这种延迟在写入周期?

    此致、

    Anil。

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

    您好、Mukul、

    似乎指派给此人的专家已离开办公室。 我将在下周早些时候与他们跟进。

    您能给我更新一下吗?

    此致、

    最终目的

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

    我相信 Tony 的解释是正确的。 我联系了指定的专家、希望他们下周早些时候会回复以确认  

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

    穆库尔:

     这篇 e2e 帖子中有很多信息-是否有任何需要填充到[常见问题解答]中的内容?????

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

    很抱歉迟到了响应。 我怀疑 Tony 也是正确的-可以通过使用 DMA 和 GPMC 预取和写发布引擎来减少写入 CS 非活动时间开销...

    对于硬件用户而言、我很难从 MTD_utils 中的 nandwrite 和 nanddump 驱动程序跟踪到 drivers/mtd/nand/raw……

    如果我们能看到 nanddump 使用 DMA +预取和写发布引擎、而 nandwrite 仅使用 CPU、这将会告诉我们。

    预取和写入发布引擎包含一个64字节的 FIFO 缓冲区、DMA 可以在连续读取或连续写入期间填充该缓冲区。 引擎无法向 NAND 器件提供新的命令或地址-仅提供数据。

    此致、
    标记

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

    大家好!

    感谢您的支持。

    我更改了对 DMA 而不是 CPU 的 GPMC 访问。 (请参阅#1)

    但是、DMA 引擎请求失败。 (请参阅#2)

    请告诉我如何解决此问题。

    #1。 器件树更改

    - ti,nand-xfer-type = "prefetch-polling";
    + ti,nand-xfer-type = "prefetch-dma";
    

    #2。 Linux 调试日志

    [    1.337459] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xda
    [    1.347400] nand: Micron MT29F2G08ABAEAWP
    [    1.351423] nand: 256 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
    [    1.359003] omap2-nand 51000000.nand: DMA engine request failed

    此致、
    最终目的

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

    您好、

    软件团队表示、AM335x nand 驱动程序支持 DMA、但 K3器件不支持、因此不能在 K3上使用"prefetch DMA"。 抱歉。

    • AM64x

    ti、nand-xfer-type ="预取-轮询";

    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am642-evm-nand.dtso?h=10.01.06#n80

    • AM335x

    ti、nand-xfer-type ="预取-dma";

    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm/boot/dts/ti/omap/am335x-evm.dts?h=10.01.06#n515

    此致、
    标记

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

    您好、Mark、

    感谢您的确认。

    K3器件无法使用 DMA 进行 GPMC 访问、那么这是否意味着 AM64xx 无法消除下面红色箭头指示的周期?

    [报价 userid="575384" url="~/support/processors-group/processors/f/processors-forum/1405983/tmds64evm-about-the-gpmc-clock/5442423 #5442423"]

    我对标有红色箭头的这段时间有疑问。

    1.是否可以消除此期间?

    2. GPMC 驱动程序在这段时间内起什么作用?

    [报价]

    此致、
    最终目的

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

    您好/Mark、

    在 R5F 内核的 MCU+SDK 中、我们在读取周期支持 DMA。

    请查看下图、这是 NAND FIFO、它填充在64字节后、并生成一个事件。 该事件可以触发 DMA。

    我假设 DMA 也可以采用 写入 周期。

    因此、AM64X 器件 GPMC 支持 NAND GPMC 器件的 DMA。

    我不明白为什么上述延迟是在写入周期而不是读取周期。

    此致、

    Anil。

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

    您好、

    请确认在写入周期中或在字节取消置位之间传输的每个字节都会发生此延迟?

    此致、

    Anil。

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

    Anil、您好!

    感谢您的调查。

    我使用的是 PSDK、而不是 MCU+SDK。 因此、我无法确认 GPMC 在 R5F 上是否正常工作。  

    关于对 GPMC 的 DMA 支持、我知道 MCU+SDK 支持这项功能。

    是否计划在 PSDK 中包含对 GPMC 的 DMA 支持?

    此致、

    最终目的