主题中讨论的其他器件: TMDXEVM3358
工具与软件:
您好、支持。
关于 GPMC 我有两个问题。
1.能否使用带有 PSDK9.1.0.8的 GPMC 从 NAND 闪存读取/写入和引导?
2. GPMC 的工作时钟是什么? 如何才能对其进行检查? 我需要它来计算写入/读取时序。
工作环境如下。
EVM:TMDS64EVM (从 HSC 连接到定制 NAND 板)
PSDK:9.1.0.8
此致、
最终目的
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.
工具与软件:
您好、支持。
关于 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。
[/quote]Unknown 说:我该如何检查它?在 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 时序并进行了检查。 但它不起作用...
我还有几个问题。
[ 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.
[ 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
[ 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。
感谢您的答复。
但是我对"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此致、
最终目的
嗨、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
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。
感谢您的合作。
我要查看数据表并调整时序、但由于 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
此致、
最终目的
您好、Sreenivasa。
感谢您的支持。
我通过查看 NAND 数据表来调整时序。
但是、时序调整没有正确完成、并且不起作用。
我在 Excel 中附加了一个计时图。
您能检查一下内容吗? 如有任何问题、请告诉我。
e2e.ti.com/.../NAND-timing.xlsx
此致、
最终目的
您好、
您能否确认 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>;
此致、
最终目的
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"。

此致、
最终目的
您好、
实现这一点。
您可以浏览"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
您好、
很抱歉昨天的回复延迟、印度 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。
我不是专家,我可以根据我的经验告诉。
是否可以取消此期间?
不能使用 CPU 访问、可以改为使用 DMA 访问来减少。
.GPMC 驱动程序在此期限内做了什么?
没有。 这是从 CPU 到 GPMC 的内部总线上的桥接器之间的延迟。
因此、尽管 GPMC 总线时钟为100MHz 或133MHz、但吞吐量低于预期。
实际上、有许多 e2e 线程对 GPMC 吞吐量提出疑问。 您的波形说明了根本原因。
您好、Mukul、
似乎指派给此人的专家已离开办公室。 我将在下周早些时候与他们跟进。
您能给我更新一下吗?
此致、
最终目的
很抱歉迟到了响应。 我怀疑 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"。 抱歉。
ti、nand-xfer-type ="预取-轮询";
ti、nand-xfer-type ="预取-dma";
此致、
标记
您好、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。