2248523_zh-CN

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2248523_zh-CN

2248523_zh-CN

RT1021:使用 ROM_FLEXSPI_NorFlash_Erase() 擦除闪存扇区

你好

在 EVK 上,我试用了 SDK 25.03.00 中的 evkmimxrt1020_fsl_romapi 示例,它工作正常。

然后,我自己在另一个项目中进行了尝试。它失败了。

ROM_FLEXSPI_NorFlash_Erase() 返回 6001,表示 kStatus_ROM_FLEXSPI_InvalidSequence。

我不知道是哪个顺序。
这两个项目使用完全相同的结构:

    config->memConfig.tag              = FLEXSPI_CFG_BLK_TAG;
    config->memConfig.version          = FLEXSPI_CFG_BLK_VERSION;
    config->memConfig.readSampleClksrc=kFLEXSPIReadSampleClk_LoopbackInternally;
    config->memConfig.serialClkFreq =
        kFLEXSPISerialClk_30MHz; /* Serial Flash Frequencey.See System Boot Chapter for more details */
    config->memConfig.sflashA1Size   = FLASH_SIZE;
    config->memConfig.csHoldTime     = 3U;                           /* Data hold time, default value: 3 */
    config->memConfig.csSetupTime    = 3U;                           /* Date setup time, default value: 3 */
    config->memConfig.deviceType     = kFLEXSPIDeviceType_SerialNOR; /* Flash device type default type: Serial NOR */
    config->memConfig.deviceModeType = kDeviceConfigCmdType_Generic;
    config->memConfig.columnAddressWidth  = 0U;
    config->memConfig.deviceModeCfgEnable = 0U;
    config->memConfig.waitTimeCfgCommands = 0U;
    config->memConfig.configCmdEnable     = 0U;
    /* Always enable Safe configuration Frequency */
    config->memConfig.controllerMiscOption = FSL_ROM_FLEXSPI_BITMASK(kFLEXSPIMiscOffset_SafeConfigFreqEnable);
    config->memConfig.sflashPadType = kSerialFlash_4Pads; /* Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal */
    config->pageSize                = FLASH_PAGE_SIZE;
    config->sectorSize              = FLASH_SECTOR_SIZE;
    config->blockSize               = FLASH_BLOCK_SIZE;
    config->ipcmdSerialClkFreq      = kFLEXSPISerialClk_30MHz; /* Clock frequency for IP command */

    /* Fast Read Quad I/O */
    config->memConfig.lookupTable[4U * NOR_CMD_LUT_SEQ_IDX_READ + 0U] =
        FSL_ROM_FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xebU, RADDR_SDR, FLEXSPI_4PAD, 0x18U);
    config->memConfig.lookupTable[4U * NOR_CMD_LUT_SEQ_IDX_READ + 1U] =
        FSL_ROM_FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 0x06U, READ_SDR, FLEXSPI_4PAD, 0x4U);

    /* Read Status */
    config->memConfig.lookupTable[4U * NOR_CMD_LUT_SEQ_IDX_READSTATUS] =
        FSL_ROM_FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x05U, READ_SDR, FLEXSPI_1PAD, 0x1U);

    /* Write Enable */
    config->memConfig.lookupTable[4U * NOR_CMD_LUT_SEQ_IDX_WRITEENABLE] =
        FSL_ROM_FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06U, STOP, FLEXSPI_1PAD, 0x0U);

    /* Page Program - quad mode */
    config->memConfig.lookupTable[4U * NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM + 0U] =
        FSL_ROM_FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x32U, RADDR_SDR, FLEXSPI_1PAD, 0x18U);
    config->memConfig.lookupTable[4U * NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM + 1U] =
        FSL_ROM_FLEXSPI_LUT_SEQ(WRITE_SDR, FLEXSPI_4PAD, 0x04U, STOP, FLEXSPI_1PAD, 0x0U);

    /* Sector Erase */
    config->memConfig.lookupTable[4U * NOR_CMD_LUT_SEQ_IDX_ERASESECTOR] =
        FSL_ROM_FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xD7U, RADDR_SDR, FLEXSPI_1PAD, 0x18U);

    /* Block Erase */
    config->memConfig.lookupTable[4U * NOR_CMD_LUT_SEQ_IDX_ERASEBLOCK] =
        FSL_ROM_FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xD8U, RADDR_SDR, FLEXSPI_1PAD, 0x18U);

此外,在这两个项目中,我在调用 ROM_FLEXSPI_NorFlash_Erase() 之前立即验证了 LUT。这些值完全匹配(我还打印了未打包的值):

 0:  a1804eb -  1 0 eb -  2 2 18
 1: 26043206 -  c 2  6 -  9 2  4
 2:        0 -  0 0  0 -  0 0  0
 3:        0 -  0 0  0 -  0 0  0

 4:      406 -  1 0  6 -  0 0  0
 5:        0 -  0 0  0 -  0 0  0
 6:        0 -  0 0  0 -  0 0  0
 7:        0 -  0 0  0 -  0 0  0

 8: d33e7f5c - 1f 3 5c - 34 3 3e
 9: 450ef151 - 3c 1 51 - 11 1  e
10: 46d155d4 - 15 1 d4 - 11 2 d1
11: 73a1e822 - 3a 0 22 - 1c 3 a1

12: 47bf75f6 - 1d 1 f6 - 11 3 bf
13: a1f5786b - 1e 0 6b - 28 1 f5
14: ed50a7ab - 29 3 ab - 3b 1 50
15: fdf85725 - 15 3 25 - 3f 1 f8

16: 3de09612 - 25 2 12 -  f 1 e0
17: 73b47a1d - 1e 2 1d - 1c 3 b4
18: 5cd51237 -  4 2 37 - 17 0 d5
19: 86c0494b - 12 1 4b - 21 2 c0

20: 36343fa5 -  f 3 a5 -  d 2 34
21: 60d6ddf4 - 37 1 f4 - 18 0 d6
22: fa5745bf - 11 1 bf - 3e 2 57
23: 45fbf74d - 3d 3 4d - 11 1 fb

24: 755471dc - 1c 1 dc - 1d 1 54
25: d5a578c4 - 1e 0 c4 - 35 1 a5
26: 11330943 -  2 1 43 -  4 1 33
27: de5431f6 -  c 1 f6 - 37 2 54

28: 2404049f -  1 0 9f -  9 0  4
29:        0 -  0 0  0 -  0 0  0
30:        0 -  0 0  0 -  0 0  0
31:        0 -  0 0  0 -  0 0  0

32: 81750f57 -  3 3 57 - 20 1 75
33: c25ccbf0 - 32 3 f0 - 30 2 5c
34: 8235cd11 - 33 1 11 - 20 2 35
35: 107dccd7 - 33 0 d7 -  4 0 7d

36: c3dde31f - 38 3 1f - 30 3 dd
37: 52185d05 - 17 1  5 - 14 2 18
38: c558911f - 24 1 1f - 31 1 58
39: 6d076d06 - 1b 1  6 - 1b 1  7

40: ad5b6f74 - 1b 3 74 - 2b 1 5b
41: c5d5fe5e - 3f 2 5e - 31 1 d5
42: 80654f09 - 13 3  9 - 20 0 65
43: 407951c6 - 14 1 c6 - 10 0 79

44: b456e9a3 - 3a 1 a3 - 2d 0 56
45: 41a8df34 - 37 3 34 - 10 1 a8
46: f31f6b95 - 1a 3 95 - 3c 3 1f
47: 87dddb44 - 36 3 44 - 21 3 dd

48: 3d917153 - 1c 1 53 -  f 1 91
49: 1d205437 - 15 0 37 -  7 1 20
50: 48256685 - 19 2 85 - 12 0 25
51: 546d7544 - 1d 1 44 - 15 0 6d

52: 75741a5c -  6 2 5c - 1d 1 74
53: 7115f5fd - 3d 1 fd - 1c 1 15
54: 4cdff553 - 3d 1 53 - 13 0 df
55: 27c647eb - 11 3 eb -  9 3 c6

56: 7e4c0413 -  1 0 13 - 1f 2 4c
57: 303f0784 -  1 3 84 -  c 0 3f
58: 25f045b8 - 11 1 b8 -  9 1 f0
59: a5898157 - 20 1 57 - 29 1 89

60: 4715e747 - 39 3 47 - 11 3 15
61: 554858c4 - 16 0 c4 - 15 1 48
62: cd44c644 - 31 2 44 - 33 1 44
63: 50597dd9 - 1f 1 d9 - 14 0 59


我深信一定存在差异,但我已不知道该去哪里寻找。

两个项目都在 RAM 中运行,时钟配置完全相同。


我应该把问题的重点放在哪里?

此致问候

最大值

i.MX RT102xRe: RT1021: Erasing flash sector using ROM_FLEXSPI_NorFlash_Erase()

您好@Sam_Gao

我解决了它。问题出在错误的擦除地址上,但错误代码kStatus_ROM_FLEXSPI_InvalidSequence却让我想到了一个完全不同类型的问题,因此我在相当长的一段时间里都把注意力放在了错误的事情上。


顺祝商祺!

最大值

Re: RT1021: Erasing flash sector using ROM_FLEXSPI_NorFlash_Erase()

@mastupristi

https://mcuxpresso.nxp.com/api_doc/dev/4490/a00017.html#ga05dc3f1fb8704a958f48f18ad04c2f0f

这似乎是无效序列中的一些问题。我能知道这两个项目是否都来自恩智浦的官方示例,并在同一个EVK板上为你进行了测试吗?

Sam_Gao_0-1764230819640.png


タグ(1)
評価なし
バージョン履歴
最終更新日:
‎11-28-2025 02:44 AM
更新者: