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.

[参考译文] AM2432:OSPI 读取/写入,包含自定义闪存 — IS25WX064

Guru**** 2524370 points
Other Parts Discussed in Thread: AM2432, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1561607/am2432-ospi-read-write-isse-with-the-custom-flash---is25wx064

器件型号:AM2432
主题: SysConfig 中讨论的其他器件

工具/软件:

TI 团队大家好、

根据有关 TI 官员 ( https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/latest/exports/docs/api_guide_am243x/EXAMPLES_DRIVERS_OSPI_FLASH_DIAG.html)的文档、我在 AM2432 上运行诊断示例并从 OSPI 闪存存储器 (IS25WX064) 中读取 SFDP 参数。 我成功读取 SFDP 参数、但在 OSPI 读取/写入配置期间出现问题。

对于 OSPI 闪存读取/写入、我考虑了这一点 (ospi_flash_io) TI 的示例代码 —  https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/08_00_00_21/exports/docs/api_guide_am64x/EXAMPLES_DRIVERS_OSPI_FLASH_IO.html ;但是、在调试期间、代码卡在 driver_open API 处。

我认为闪存或 OSPI 配置可能存在问题。 我将分享 SFDP 参数和 SysConfig 数据。 请根据数据告诉我可能的原因和解决方案。

SFDP 参数:

================================================
                      SFDP                      
================================================
SFDP Major Revision                       : 0x1
SFDP Minor Revision                       : 0x9
Number of Parameter Headers in this Table : 4

Types of Additional Parameter Tables in this flash
---------------------------------------------------
4 BYTE ADDRESSING MODE INSTRUCTIONS TABLE
NOR SPI PROFILE TABLE 
OCTAL DDR MODE COMMAND SEQUENCE TABLE

Parsing of OCTAL DDR MODE COMMAND SEQUENCE TABLE table not yet supported. 
JSON Data for the flash :

{

"flashSize": 8388608,
"flashPageSize": 256,
"flashManfId": "0x9D",
"flashDeviceId": "0x5B17",
"flashBlockSize": 131072,
"flashSectorSize": 4096,
"cmdBlockErase3B": "0xD8",
"cmdBlockErase4B": "0xDC",
"cmdSectorErase3B": "0x20",
"cmdSectorErase4B": "0x21",
"protos": {
"p111": {
"isDtr": false,
"cmdRd": "0x03",
"cmdWr": "0x02",
"modeClksCmd": 0,
"modeClksRd": 0,
"dummyClksCmd": 0,
"dummyClksRd": 0,
"enableType": "0",
"enableSeq": "0x00",
"dummyCfg": null,
"protoCfg": null,
"strDtrCfg": null
},
"p112": null,
"p114": null,
"p118": {
"isDtr": false,
"cmdRd": "0x7C",
"cmdWr": "0x84",
"modeClksCmd": 0,
"modeClksRd": 1,
"dummyClksCmd": 0,
"dummyClksRd": 7,
"enableType": "0",
"enableSeq": "0x00",
"dummyCfg": null,
"protoCfg": null,
"strDtrCfg": null
},
"p444s": null,
"p444d": null,
"p888s": null,
"p888d": {
"isDtr": false,
"cmdRd": "0x0B",
"cmdWr": "0x12",
"modeClksCmd": 0,
"modeClksRd": 0,
"dummyClksCmd": 8,
"dummyClksRd": 20,
"enableType": "0",
"enableSeq": "0x00",
"dummyCfg": {
"isAddrReg": false,
"cmdRegRd":"0x00",
"cmdRegWr":"0x00",
"cfgReg":"0x00000000",
"shift":0,
"mask":"0x00",
"bitP":20
},
"protoCfg": {
"isAddrReg": false,
"cmdRegRd": "0x00",
"cmdRegWr": "0x00",
"cfgReg": "0x00000000",
"shift": 0,
"mask": "0x00",
"bitP": 0
},
"strDtrCfg": {
"isAddrReg": false,
"cmdRegRd": "0x00",
"cmdRegWr": "0x00",
"cfgReg": "0x00000000",
"shift": 0,
"mask": "0x00",
"bitP": 0
}
},
"pCustom": { 
"fxn": null
}
},
"addrByteSupport": "1",
"fourByteAddrEnSeq": "0xA1",
"cmdExtType": "REPEAT",
"resetType": "0x30",
"deviceBusyType": "0",
"cmdWren": "0x06",
"cmdRdsr": "0x05",
"srWip":  0,
"srWel":  1,
"cmdChipErase": "0xC7",
"rdIdSettings": {
"cmd": "0x9F",
"numBytes": 5,
"dummy4": 0,
"dummy8": 0
},
"xspiWipRdCmd": "0x00",
"xspiWipReg": "0x00000000",
"xspiWipBit": 0,
"flashDeviceBusyTimeout": 20000000,
"flashPageProgTimeout": 120
}

SysConfig 脚本:

在 SFDP 参数->协议配置参数全部为 NULL。 这可能会造成问题。

"protoCfg": {
"isAddrReg": false,
"cmdRegRd": "0x00",
"cmdRegWr": "0x00",
"cfgReg": "0x00000000",
"shift": 0,
"mask": "0x00",
"bitP": 0
},

请检查 SFDP 参数是否正确、或者我需要修改它。

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

    您好、Nilesh

    感谢您的问题。

    “那你就回去吧。“

    谢谢、

    Vaibhav

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

    请尽快告诉我。  

    正在等待您的回答。

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

    这是我从 E2E 下载的闪存配置: —  TMDS243EVM:sbl_JTAG_uniflash_am243x-evm_r5fss0-0_nortos_ti-arm-clang 的八路闪存配置 — 基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛

    /* FLASH DevConfig */
    Flash_DevConfig gFlashDevCfg_IS25WX064 =
    {
        .cmdExtType = OSPI_CMD_EXT_TYPE_REPEAT,
        .enable4BAddr = TRUE,
        .addrByteSupport = 1,
        .fourByteAddrEnSeq = 0xA1,
        .cmdWren = 0x06,
        .cmdRdsr = 0x05,
        .srWip = (1 << 0),
        .srWel = (1 << 1),
        .xspiWipRdCmd = 0x00,
        .xspiWipReg = 0x00000000,
        .xspiWipBit = (1 << 0),
        .resetType = 0x30,
        .eraseCfg = {
            .blockSize = 131072,
            .sectorSize = 4096,
            .cmdBlockErase3B = 0xD8,
            .cmdBlockErase4B = 0xDC,
            .cmdSectorErase3B = 0x20,
            .cmdSectorErase4B = 0x21,
            .cmdChipErase = 0xC7,
        },
        .idCfg = {
            .cmd = 0x9F, /* Constant */
            .numBytes = 3,
            .dummy4 = 0,
            .dummy8 = 8,
            .addrSize = 0
        },
        .protocolCfg = {
            .protocol = FLASH_CFG_PROTO_8D_8D_8D,
            .isDtr = TRUE,
            .cmdRd = 0x7C,
            .cmdWr = 0x84,
            .modeClksCmd = 0,
            .modeClksRd = 0,
            .dummyClksCmd = 16,
            .dummyClksRd = 16,
            .enableType = 0,
            .enableSeq = 0x00,
            .protoCfg = {
                .isAddrReg = TRUE,
                .cmdRegRd = 0x85,
                .cmdRegWr = 0x81,
                .cfgReg = 0x00000000,
                .shift = 0,
                .mask = 0xFF,
                .cfgRegBitP = 231,
            },
            .strDtrCfg = {
                .isAddrReg = TRUE,
                .cmdRegRd = 0x85,
                .cmdRegWr = 0x81,
                .cfgReg = 0x00000000,
                .shift = 255,
                .mask = 255,
                .cfgRegBitP = 0,
            },
            .dummyCfg = {
                .isAddrReg = TRUE,
                .cmdRegRd = 0x85,
                .cmdRegWr = 0x81,
                .cfgReg = 0x00000001,
                .shift = 0,
                .mask = 0xFF,
                .cfgRegBitP = 16,
            },
        },
        .flashWriteTimeout = 120,
        .flashBusyTimeout = 72000000,
    };
    

    但问题仍然是一样的。

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

    您好:

    谢谢我正在审查这些,并会在一段时间内回到你。

    此致、

    Vaibhav

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

    您好:

    请更新此内容、因为我们需要尽快解决。

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

    您好、Nilesh

    在开发应用时、请参阅 AM243 的最新 SDK。

    在该注意事项中、您不需要获取闪存参数、因为该闪存已存在于以下位置: C:\ti\mcu_plus_sdk_am243x_11_01_00_17\source\sysconfig\board\.meta\flash\IS25WX064.json

    您可以在此处查看这些值。

    要了解确切的工作值、请参阅以下屏幕截图。

    这应该对您有用。 标记螺纹已关闭。

    谢谢、

    Vaibhav

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

    仅供参考、这是一个已测试的闪存器件、目前存在于 AM263PX TI EVM 上。 其 OSPI 闪存 IO 应用 在板上具有 IS25LX256 闪存。

    与您使用的闪存的唯一区别在于闪存大小和 JEDEC 器件 ID、其余所有命令和参数是相同的。

    因此、有关参考、您也可以参阅 AM263PX MCU+ SDK。 注意:AM263PX 使用与 AM243X 相同的驱动程序。

    Github 示例链接: https://github.com/TexasInstruments/mcupsdk-core/tree/next/examples/drivers/ospi/ospi_flash_io/am263px-lp/r5fss0-0_nortos

    MCU+ MCU-PLUS-SDK AM263PX: https://www.ti.com/tool/download/SDK-AM263PX