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.

[参考译文] AM5726:McSPI 驱动程序无法读取大于64KB 的块

Guru**** 2349990 points
Other Parts Discussed in Thread: BEAGLEBOARD-X15
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1508460/am5726-mcspi-driver-cannot-read-blocks-larger-than-64-kb

器件型号:AM5726
主题中讨论的其他器件:BeagleBoard-X15

工具/软件:

您好、

我们在基于 AM57的平台上有一个 SPI NOR 闪存连接到 McSPI2、采用 linux-ti-staging 6.1 (SDK 09.03.06.05)。
它主要工作、但一次读取超过64KB 时除外:

$ dd if=/dev/mtd0 of=/tmp/dump count=1 bs=65534
1+0 records in
1+0 records out
65534 bytes (64.0KB) copied, 0.034515 seconds, 1.8MB/s
$ hexdump -C /tmp/dump -n128
00000000  00 00 00 00 01 00 00 00  10 00 00 00 00 00 00 00  |................|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00  01 00 00 00 34 00 00 00  |............4...|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 01 00 00 00  |................|
00000050  58 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |X...............|
00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000080

$ dd if=/dev/mtd0 of=/tmp/dump count=1 bs=65535
1+0 records in
1+0 records out
65535 bytes (64.0KB) copied, 0.034546 seconds, 1.8MB/s
$ hexdump -C /tmp/dump -n128
00000000  00 00 00 00 01 00 00 00  10 00 00 00 00 00 00 00  |................|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00  01 00 00 00 34 00 00 00  |............4...|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 01 00 00 00  |................|
00000050  58 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |X...............|
00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000080

$ dd if=/dev/mtd0 of=/tmp/dump count=1 bs=65536
(hangs forever)

我已将此问题追溯到内部的 wait_for_completion()调用 SPI-OMAP2-mcspi.c 、从不返回。

您能否在 AM57xx IDK 上重现它?
我们只使用了 BeagleBoard-X15、它没有 McSPI 有线输出。

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

    我还在 linux-ti-staging 中尝试了此操作 6.12 而效果则有所不同:

    $ dd if=/dev/mtd0 of=/tmp/dump count=1 bs=65535
    1+0 records in
    1+0 records out
    65535 bytes (64.0KB) copied, 0.034576 seconds, 1.8MB/s
    $ hexdump -C /tmp/dump -n128
    00000000  00 00 00 00 01 00 00 00  10 00 00 00 00 00 00 00  |................|
    00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000020  00 00 00 00 00 00 00 00  01 00 00 00 34 00 00 00  |............4...|
    00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000040  00 00 00 00 00 00 00 00  00 00 00 00 01 00 00 00  |................|
    00000050  58 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |X...............|
    00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    00000080

    $ dd if=/dev/mtd0 of=/tmp/dump count=1 bs=65536
    1+0 records in
    1+0 records out
    65536 bytes (64.0KB) copied, 0.041382 seconds, 1.5MB/s
    $ hexdump -C /tmp/dump -n128
    00000000  00 00 00 00 01 00 00 00  10 00 00 00 00 00 00 00  |................|
    00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000020  00 00 00 00 00 00 00 00  01 00 00 00 34 00 00 00  |............4...|
    00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000040  00 00 00 00 00 00 00 00  00 00 00 00 01 00 00 00  |................|
    00000050  58 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |X...............|
    00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    00000080

    $ dd if=/dev/mtd0 of=/tmp/dump count=1 bs=65537
    1+0 records in
    1+0 records out
    65537 bytes (64.0KB) copied, 0.000427 seconds, 146.4MB/s
    $ hexdump -C /tmp/dump -n128
    00000000  00 00 00 02 00 00 24 01  00 50 c4 48 04 00 01 09  |......$..P.H....|
    00000010  ff ff ff ff ff ff d7 ed  fe ff ff fd ef f7 d5 fe  |................|
    00000020  00 00 2a 36 04 82 00 86  00 00 80 44 00 00 3b 90  |..*6.......D..;.|
    00000030  ff ff 5f f7 ff ff fa fe  fe ff ff ff ff ff ff ff  |.._.............|
    00000040  04 00 89 01 00 20 00 00  00 00 43 00 c0 00 00 00  |..... ....C.....|
    00000050  ff ff ff ff ff fd ff df  ff ff ef ff ff ff ff 7f  |................|
    00000060  00 00 82 0c 00 08 02 b4  10 80 34 20 00 00 00 20  |..........4 ... |
    00000070  7f bf ff ff ff ef ff 7f  7f bf 7f 7f fe df fe ff  |................|
    00000080

    这次最大块大小多为1个字节。
    它也不再挂起在此阈值以上,而是返回垃圾。

    提前感谢您的支持!

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

    您好 Julien、

    将尝试在一周结束前复制。

    只是为了澄清一下、您在 Linux 提示符/用户空间中执行此操作是正确的吗?

    -Josue

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

    Julien、

    我看不出这种限制。  

    root@am57xx-evm:~# cat /proc/mtd
    dev:    size   erasesize  name
    mtd0: 00040000 00010000 "QSPI.SPL"
    mtd1: 00100000 00010000 "QSPI.u-boot"
    mtd2: 00080000 00010000 "QSPI.u-boot-spl-os"
    mtd3: 00010000 00010000 "QSPI.u-boot-env"
    mtd4: 00010000 00010000 "QSPI.u-boot-env.backup1"
    mtd5: 00800000 00010000 "QSPI.kernel"
    mtd6: 01620000 00010000 "QSPI.file-system"
    root@am57xx-evm:~# dd if=/dev/mtd0 of=/tmp/dump count=1 bs=65536
    1+0 records in
    1+0 records out
    65536 bytes (66 kB, 64 KiB) copied, 0.00314331 s, 20.8 MB/s
    root@am57xx-evm:~# hexdump -C /tmp/dump -n128
    00000000  00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f  |................|
    00000010  10 11 12 13 14 15 16 17  18 19 1a 1b 1c 1d 1e 1f  |................|
    00000020  20 21 22 23 24 25 26 27  28 29 2a 2b 2c 2d 2e 2f  | !"#$%&'()*+,-./|
    00000030  30 31 32 33 34 35 36 37  38 39 3a 3b 3c 3d 3e 3f  |0123456789:;<=>?|
    00000040  40 41 42 43 44 45 46 47  48 49 4a 4b 4c 4d 4e 4f  |@ABCDEFGHIJKLMNO|
    00000050  50 51 52 53 54 55 56 57  58 59 5a 5b 5c 5d 5e 5f  |PQRSTUVWXYZ[\]^_|
    00000060  60 61 62 63 64 65 66 67  68 69 6a 6b 6c 6d 6e 6f  |`abcdefghijklmno|
    00000070  70 71 72 73 74 75 76 77  78 79 7a 7b 7c 7d 7e 7f  |pqrstuvwxyz{|}~.|
    00000080
    root@am57xx-evm:~# dd if=/dev/mtd0 of=/tmp/dump count=1 bs=65534
    1+0 records in
    1+0 records out
    65534 bytes (66 kB, 64 KiB) copied, 0.00314331 s, 20.8 MB/s
    root@am57xx-evm:~# hexdump -C /tmp/dump -n128
    00000000  00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f  |................|
    00000010  10 11 12 13 14 15 16 17  18 19 1a 1b 1c 1d 1e 1f  |................|
    00000020  20 21 22 23 24 25 26 27  28 29 2a 2b 2c 2d 2e 2f  | !"#$%&'()*+,-./|
    00000030  30 31 32 33 34 35 36 37  38 39 3a 3b 3c 3d 3e 3f  |0123456789:;<=>?|
    00000040  40 41 42 43 44 45 46 47  48 49 4a 4b 4c 4d 4e 4f  |@ABCDEFGHIJKLMNO|
    00000050  50 51 52 53 54 55 56 57  58 59 5a 5b 5c 5d 5e 5f  |PQRSTUVWXYZ[\]^_|
    00000060  60 61 62 63 64 65 66 67  68 69 6a 6b 6c 6d 6e 6f  |`abcdefghijklmno|
    00000070  70 71 72 73 74 75 76 77  78 79 7a 7b 7c 7d 7e 7f  |pqrstuvwxyz{|}~.|
    00000080
    root@am57xx-evm:~# dd if=/dev/mtd0 of=/tmp/dump count=1 bs=65536
    1+0 records in
    1+0 records out
    65536 bytes (66 kB, 64 KiB) copied, 0.00314331 s, 20.8 MB/s
    root@am57xx-evm:~# dd if=/dev/mtd0 of=/tmp/dump2 count=1 bs=66560
    1+0 records in
    1+0 records out
    66560 bytes (67 kB, 65 KiB) copied, 0.00323486 s, 20.6 MB/s
    root@am57xx-evm:~# hexdump -C /tmp/dump2 -n128
    00000000  00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f  |................|
    00000010  10 11 12 13 14 15 16 17  18 19 1a 1b 1c 1d 1e 1f  |................|
    00000020  20 21 22 23 24 25 26 27  28 29 2a 2b 2c 2d 2e 2f  | !"#$%&'()*+,-./|
    00000030  30 31 32 33 34 35 36 37  38 39 3a 3b 3c 3d 3e 3f  |0123456789:;<=>?|
    00000040  40 41 42 43 44 45 46 47  48 49 4a 4b 4c 4d 4e 4f  |@ABCDEFGHIJKLMNO|
    00000050  50 51 52 53 54 55 56 57  58 59 5a 5b 5c 5d 5e 5f  |PQRSTUVWXYZ[\]^_|
    00000060  60 61 62 63 64 65 66 67  68 69 6a 6b 6c 6d 6e 6f  |`abcdefghijklmno|
    00000070  70 71 72 73 74 75 76 77  78 79 7a 7b 7c 7d 7e 7f  |pqrstuvwxyz{|}~.|
    00000080
    root@am57xx-evm:~# diff /tmp/dump /tmp/dump2
    Files /tmp/dump and /tmp/dump2 differ
    root@am57xx-evm:~#
    root@am57xx-evm:~#
    root@am57xx-evm:~#
    root@am57xx-evm:~# diff -help
    diff: invalid option -- 'h'
    BusyBox v1.35.0 () multi-call binary.
    
    Usage: diff [-abBdiNqrTstw] [-L LABEL] [-S FILE] [-U LINES] FILE1 FILE2
    root@am57xx-evm:~# hexdump -C /tmp/dump2 -n256
    00000000  00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f  |................|
    00000010  10 11 12 13 14 15 16 17  18 19 1a 1b 1c 1d 1e 1f  |................|
    00000020  20 21 22 23 24 25 26 27  28 29 2a 2b 2c 2d 2e 2f  | !"#$%&'()*+,-./|
    00000030  30 31 32 33 34 35 36 37  38 39 3a 3b 3c 3d 3e 3f  |0123456789:;<=>?|
    00000040  40 41 42 43 44 45 46 47  48 49 4a 4b 4c 4d 4e 4f  |@ABCDEFGHIJKLMNO|
    00000050  50 51 52 53 54 55 56 57  58 59 5a 5b 5c 5d 5e 5f  |PQRSTUVWXYZ[\]^_|
    00000060  60 61 62 63 64 65 66 67  68 69 6a 6b 6c 6d 6e 6f  |`abcdefghijklmno|
    00000070  70 71 72 73 74 75 76 77  78 79 7a 7b 7c 7d 7e 7f  |pqrstuvwxyz{|}~.|
    00000080  80 81 82 83 84 85 86 87  88 89 8a 8b 8c 8d 8e 8f  |................|
    00000090  90 91 92 93 94 95 96 97  98 99 9a 9b 9c 9d 9e 9f  |................|
    000000a0  a0 a1 a2 a3 a4 a5 a6 a7  a8 a9 aa ab ac ad ae af  |................|
    000000b0  b0 b1 b2 b3 b4 b5 b6 b7  b8 b9 ba bb bc bd be bf  |................|
    000000c0  c0 c1 c2 c3 c4 c5 c6 c7  c8 c9 ca cb cc cd ce cf  |................|
    000000d0  d0 d1 d2 d3 d4 d5 d6 d7  d8 d9 da db dc dd de df  |................|
    000000e0  e0 e1 e2 e3 e4 e5 e6 e7  e8 e9 ea eb ec ed ee ef  |................|
    000000f0  f0 f1 f2 f3 f4 f5 f6 f7  f8 f9 fa fb fc fd fe ff  |................|
    00000100
    root@am57xx-evm:~# hexdump -C /tmp/dump -n256
    00000000  00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f  |................|
    00000010  10 11 12 13 14 15 16 17  18 19 1a 1b 1c 1d 1e 1f  |................|
    00000020  20 21 22 23 24 25 26 27  28 29 2a 2b 2c 2d 2e 2f  | !"#$%&'()*+,-./|
    00000030  30 31 32 33 34 35 36 37  38 39 3a 3b 3c 3d 3e 3f  |0123456789:;<=>?|
    00000040  40 41 42 43 44 45 46 47  48 49 4a 4b 4c 4d 4e 4f  |@ABCDEFGHIJKLMNO|
    00000050  50 51 52 53 54 55 56 57  58 59 5a 5b 5c 5d 5e 5f  |PQRSTUVWXYZ[\]^_|
    00000060  60 61 62 63 64 65 66 67  68 69 6a 6b 6c 6d 6e 6f  |`abcdefghijklmno|
    00000070  70 71 72 73 74 75 76 77  78 79 7a 7b 7c 7d 7e 7f  |pqrstuvwxyz{|}~.|
    00000080  80 81 82 83 84 85 86 87  88 89 8a 8b 8c 8d 8e 8f  |................|
    00000090  90 91 92 93 94 95 96 97  98 99 9a 9b 9c 9d 9e 9f  |................|
    000000a0  a0 a1 a2 a3 a4 a5 a6 a7  a8 a9 aa ab ac ad ae af  |................|
    000000b0  b0 b1 b2 b3 b4 b5 b6 b7  b8 b9 ba bb bc bd be bf  |................|
    000000c0  c0 c1 c2 c3 c4 c5 c6 c7  c8 c9 ca cb cc cd ce cf  |................|
    000000d0  d0 d1 d2 d3 d4 d5 d6 d7  d8 d9 da db dc dd de df  |................|
    000000e0  e0 e1 e2 e3 e4 e5 e6 e7  e8 e9 ea eb ec ed ee ef  |................|
    000000f0  f0 f1 f2 f3 f4 f5 f6 f7  f8 f9 fa fb fc fd fe ff  |................|
    00000100
    root@am57xx-evm:~# hexdump -C /tmp/dump -n512
    00000000  00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f  |................|
    00000010  10 11 12 13 14 15 16 17  18 19 1a 1b 1c 1d 1e 1f  |................|
    00000020  20 21 22 23 24 25 26 27  28 29 2a 2b 2c 2d 2e 2f  | !"#$%&'()*+,-./|
    00000030  30 31 32 33 34 35 36 37  38 39 3a 3b 3c 3d 3e 3f  |0123456789:;<=>?|
    00000040  40 41 42 43 44 45 46 47  48 49 4a 4b 4c 4d 4e 4f  |@ABCDEFGHIJKLMNO|
    00000050  50 51 52 53 54 55 56 57  58 59 5a 5b 5c 5d 5e 5f  |PQRSTUVWXYZ[\]^_|
    00000060  60 61 62 63 64 65 66 67  68 69 6a 6b 6c 6d 6e 6f  |`abcdefghijklmno|
    00000070  70 71 72 73 74 75 76 77  78 79 7a 7b 7c 7d 7e 7f  |pqrstuvwxyz{|}~.|
    00000080  80 81 82 83 84 85 86 87  88 89 8a 8b 8c 8d 8e 8f  |................|
    00000090  90 91 92 93 94 95 96 97  98 99 9a 9b 9c 9d 9e 9f  |................|
    000000a0  a0 a1 a2 a3 a4 a5 a6 a7  a8 a9 aa ab ac ad ae af  |................|
    000000b0  b0 b1 b2 b3 b4 b5 b6 b7  b8 b9 ba bb bc bd be bf  |................|
    000000c0  c0 c1 c2 c3 c4 c5 c6 c7  c8 c9 ca cb cc cd ce cf  |................|
    000000d0  d0 d1 d2 d3 d4 d5 d6 d7  d8 d9 da db dc dd de df  |................|
    000000e0  e0 e1 e2 e3 e4 e5 e6 e7  e8 e9 ea eb ec ed ee ef  |................|
    000000f0  f0 f1 f2 f3 f4 f5 f6 f7  f8 f9 fa fb fc fd fe ff  |................|
    00000100  00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f  |................|
    00000110  10 11 12 13 14 15 16 17  18 19 1a 1b 1c 1d 1e 1f  |................|
    00000120  20 21 22 23 24 25 26 27  28 29 2a 2b 00 00 00 00  | !"#$%&'()*+....|
    00000130  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
    *
    00000200
    root@am57xx-evm:~# hexdump -C /tmp/dump2 -n512
    00000000  00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f  |................|
    00000010  10 11 12 13 14 15 16 17  18 19 1a 1b 1c 1d 1e 1f  |................|
    00000020  20 21 22 23 24 25 26 27  28 29 2a 2b 2c 2d 2e 2f  | !"#$%&'()*+,-./|
    00000030  30 31 32 33 34 35 36 37  38 39 3a 3b 3c 3d 3e 3f  |0123456789:;<=>?|
    00000040  40 41 42 43 44 45 46 47  48 49 4a 4b 4c 4d 4e 4f  |@ABCDEFGHIJKLMNO|
    00000050  50 51 52 53 54 55 56 57  58 59 5a 5b 5c 5d 5e 5f  |PQRSTUVWXYZ[\]^_|
    00000060  60 61 62 63 64 65 66 67  68 69 6a 6b 6c 6d 6e 6f  |`abcdefghijklmno|
    00000070  70 71 72 73 74 75 76 77  78 79 7a 7b 7c 7d 7e 7f  |pqrstuvwxyz{|}~.|
    00000080  80 81 82 83 84 85 86 87  88 89 8a 8b 8c 8d 8e 8f  |................|
    00000090  90 91 92 93 94 95 96 97  98 99 9a 9b 9c 9d 9e 9f  |................|
    000000a0  a0 a1 a2 a3 a4 a5 a6 a7  a8 a9 aa ab ac ad ae af  |................|
    000000b0  b0 b1 b2 b3 b4 b5 b6 b7  b8 b9 ba bb bc bd be bf  |................|
    000000c0  c0 c1 c2 c3 c4 c5 c6 c7  c8 c9 ca cb cc cd ce cf  |................|
    000000d0  d0 d1 d2 d3 d4 d5 d6 d7  d8 d9 da db dc dd de df  |................|
    000000e0  e0 e1 e2 e3 e4 e5 e6 e7  e8 e9 ea eb ec ed ee ef  |................|
    000000f0  f0 f1 f2 f3 f4 f5 f6 f7  f8 f9 fa fb fc fd fe ff  |................|
    00000100  00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f  |................|
    00000110  10 11 12 13 14 15 16 17  18 19 1a 1b 1c 1d 1e 1f  |................|
    00000120  20 21 22 23 24 25 26 27  28 29 2a 2b 00 00 00 00  | !"#$%&'()*+....|
    00000130  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
    *
    00000200
    root@am57xx-evm:~#
    root@am57xx-evm:~# uname -r
    6.1.119-ti-ge4e8b16e66f5
    root@am57xx-evm:~#

    -Josue

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

    是的、这是来自 shell/userspace (dd 命令等)。

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

    我也使用了 QSPI NOR 闪存:这里的一切都很好。 McSPI 总线/驱动器有问题。

    我在进行测试时、尚未加载 QSPI 驱动程序(SPI-QSPI)、只有 McSPI 驱动器。
    这就是为什么它的 MTD id 为0的原因。 对您来说、它可能是 mtd7或更多。

    您是否在 McSPI 总线上连接了 NOR 闪存芯片?
    您可能还需要将其添加到器件树中、至少有一个分区用于在/proc/mtd 中显示、例如:

    &mcspi2 {
    	ti,pindir-d0-out-d1-in;
    	status = "okay";
    
    	flash@0 {
    		compatible = "jedec,spi-nor";
    		reg = <0>;
    		#address-cells = <1>;
    		#size-cells = <1>;
    
    		partition@0 {
    			label = "mcspi-test-part";
    			reg = <0 0x80000>;
    		};
    	};
    };



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

    您好 Julien、

    这是 IDK 手册说的:

    这是 u-boot 条目:

    &qspi {
            status = "okay";
    
            spi-max-frequency = <76800000>;
            flash@0 {
                    compatible = "s25fl256s1", "jedec,spi-nor";
                    spi-max-frequency = <76800000>;
                    reg = <0>;
                    spi-tx-bus-width = <1>;
                    spi-rx-bus-width = <4>;
                    #address-cells = <1>;
                    #size-cells = <1>;
    
                    /* MTD partition table.
                     * The ROM checks the first four physical blocks
                     * for a valid file to boot and the flash here is
                     * 64KiB block size.
                     */
                    partition@0 {
                            label = "QSPI.SPL";
                            reg = <0x00000000 0x00040000>;
                    };
                    partition@1 {
                            label = "QSPI.u-boot";
                            reg = <0x00040000 0x00100000>;
                    };
                    partition@2 {
                            label = "QSPI.u-boot-spl-os";
                            reg = <0x00140000 0x00080000>;
                    };
                    partition@3 {
                            label = "QSPI.u-boot-env";
                            reg = <0x001c0000 0x00010000>;
                    };
                    partition@4 {
                            label = "QSPI.u-boot-env.backup1";
                            reg = <0x001d0000 0x0010000>;
                    };
                    partition@5 {
                            label = "QSPI.kernel";
                            reg = <0x001e0000 0x0800000>;
                    };
                    partition@6 {
                            label = "QSPI.file-system";
                            reg = <0x009e0000 0x01620000>;
                    };
            };
    };

    因此、我们无法直接在电路板上测试您的设置。

    -Josue

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

    您好 Josue、

    我希望您可以直接将外部 SPI NOR 闪存连接到扩展连接器(IDK 上的 J21):
    McSPI2似乎是免费提供在那里。

    该额外的芯片并不是为了替换 QSPI 闪存(引导源)、因此 IDK 不应有重大更改/问题。 仅从上面添加器件树。 引脚多路复用(U-Boot 中的 mux_data.h)对于 IDK 上的 SPI2也是合适的。

    感谢您的支持。

    Julien

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

    Julien、

    我必须看看是否有这些可用的资源。 我将通过 EOD 告知您。

    Josue

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

    Julien、

    看起来我们没有可在内部进行测试的软件。 遗憾的是、这不受 SDK 的支持、因为我们的 EVM 中没有集成模块、 您必须自行进行测试。

    这个限制似乎是已知的、如以下应用手册所述: https://www.ti.com/lit/an/sprad26/sprad26.pdf

    "McSPI 每次传输可以发送或接收64K-1字节、因此、SPI 从器件驱动程序需要确保将较大的读取/写入事务分解为64K-1块、而主器件必须确保在启动时钟之前从器件准备好发送/接收数据。"

    那么、我假设这里的 SPI 从驱动器存在问题。 您是否已确保 SPI 驱动程序设置正确? 它的功能以前是否已经过验证?

    从 DT 节点断开、

    我看到您缺少 YAML 文件中定义的兼容 项以及 spi-max-frequency 条目。
    请参阅  ti-linux-kernel-6.1.119+gitAUTOINC+e4e8b16e66-ti/Documentation/devicetree/bindings/MTD/JEDEC、SPI-NOR.YAML

    同时请记住、有大量外部来源支持自由和开放源码软件。 请参阅免责声明:

    https://software-dl.ti.com/processor-sdk-linux/esd/AM57X/09_03_06_05/exports/docs/linux/Overview_Technical_Support software.html#open-source-software-support-免 责声明

    此致、  

    Josue

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

    您好 Josue、

    感谢您查看本应用手册。

    SPI-max-frequency 是来自总线的频率(如果未定义)、这是可以接受的。 还应设置额外的兼容性、但在这里没有帮助。 从芯片已通过另一个平台/主器件验证。

    在这种情况下、McSPI 也是主器件、但我想上述限制在从器件读取时以某种方式适用。 内核驱动程序无法处理此类情况或对此类情况发出警告的情况太糟糕了。

    感谢您的关注!

    此致、
    Julien

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

    Julien、  

    从器件或外设驱动程序 正常工作、这意味着读取不应限制为64KB。 驾驶员应正确处理。 您是否在同一总线上尝试过其他记忆端口设备?  

    环回测试如何执行?

    -Josue

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

    我现在不可能进一步测试 McSPI、我将看到可以在这里执行什么操作。

    不过、从另一个主器件(不是 AM57x 的 McSPI)驱动时、从器件外设(= NOR 闪存芯片)可以正确读取(一次超过64KB)。 所以从器件本身看起来正常。