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.

[参考译文] AM623:闪存器件识别错误

Guru**** 2487425 points
Other Parts Discussed in Thread: SK-AM62B, SYSCONFIG, SK-AM62

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1422248/am623-flash-device-recognition-error

器件型号:AM623
主题中讨论的其他器件:SK-AM62、SysConfig、SK-AM62B

工具与软件:

我使用安装了定制电路板的 AM62器件、并使用 SD 引导启动。

闪存器件配置有一个错误、但我不知道是什么原因造成了这个错误。

我参考了以下链接并创建了 SD。

https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/latest/exports/docs/linux/Overview/Processor_SDK_Linux_create_SD_card.html

将 SBL_NULL 工程生成的映像文件重命名为"tiboot3.bin"并放置在 SD 卡上。

由于闪存器件不同于 SK-AM62评估板上安装的元件、因此配置更改如下。

【器件信息】

・CPU:AM6234ATCGHAALW
・FlashROM:MT25QL256ABA8ESF
-256Mbit
-四路 SPI

【更多信息】

・我确认波形显示 RESET 在 CS 置位后解锁。
・CLK 不是输出。

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

    大家好、我会将这个问题发送给我们的一位专家。 同时、我想知道您是否可以尝试 MCU+SDK 中的 QSPI 闪存(不含 SD 卡)过程?  AM62x MCU+ SDK:EVM 设置(TI.com)

    此外、他们是否有 AM62x SK 或 LP 板来尝试在上述共享步骤下使用 SD 卡和闪存?

    最后、最好在 SysConfig 中仔细检查制造商 ID 和器件 ID 是否正确。

    谢谢!

    Paula.

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

    感谢您的支持。 此致。

    我有评估板 SK-AM62和 SK-AM62B、
    我无法使用默认 UART 端口、因此无法沿 MCU+SDK 过程运行正常流程、因此我要从 SD 卡引导。

    我已经检查了"MT25QL256ABA"数据表中的制造商 ID 和设备 ID。

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

    您好!

    如果使用 SD 卡引导模式、请使用相应的 SBL_SD 引导加载程序

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM62X/10_00_00_14/exports/docs/api_guide_am62x/EXAMPLES_DRIVERS_SBL.html

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

    感谢您发送编修。
    我已确认可以使用 SBL_SD 引导来引导定制板。
    但是、我认为 SBL_SD 没有 FlashROM 设置。

    我还确认可以通过将使用 SBL_NULL 创建的映像文件放置到 SD 卡来启动评估板。
    (我知道在 SBL_NULL 的情况下、DDR4需要额外初始化)。


    我真正要做的就是检查 FlashROM 和 CPU 之间的连接。
    而且、我认为在将来执行各类项目时无法使用 FlashROM 也会带来不便。
    因此、我想让您检查与 FlashROM 相关的设置是否有任何故障。

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

    您能否按照这些步骤以1-1s 至1s 模式初始化闪存、而不是以更高的模式初始化闪存、如果自定义闪存器件配置没有正确完成、这些模式可能会出现问题。

    • 将协议更改为1S-1S-1S。
    • 根据您的闪存器件更新基本闪存配置参数、例如闪存大小、ManID 和 DeviceID。
    • 重新编译 SBL_NULL。

    如果读取 ID 时仍然失败、您是否可以应用以下补丁来转储读取的 ID

    diff --git a/source/board/flash/ospi/flash_nor_ospi.c b/source/board/flash/ospi/flash_nor_ospi.c
    index f859408..23dacbb 100644
    --- a/source/board/flash/ospi/flash_nor_ospi.c
    +++ b/source/board/flash/ospi/flash_nor_ospi.c
    @@ -851,6 +851,9 @@ static int32_t Flash_norOspiReadId(Flash_Config *config)
     
             manfID = (uint32_t)idCode[0];
             devID = ((uint32_t)idCode[1] << 8) | ((uint32_t)idCode[2]);
    +
    +        DebugP_log("[%s:%d] manfID: 0x%x, devID: 0x%x\r\n", __func__, __LINE__, manfID, devID);
    +
             if (!((manfID == config->attrs->manufacturerId) && (devID == config->attrs->deviceId)))
             {
                 /* Try the other 3 bytes */
    

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

    感谢快速响应。 我使用1 - 1 - 1、并得到以下信息。
    PHY 似乎不是启用状态。

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

    附加的是配置值的一部分。

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

    您好!

    SBL_NULL 引导加载程序从默认地址0xA00000引导 WKUP R5F 应用程序映像。 如果未刷写应用程序映像、引导将失败。

    如果您希望仅测试闪存 R/W、我建议使用 SBL_SD 引导加载程序来引导 OSPI_FLASH_IO 示例。

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM62X/10_00_00_14/exports/docs/api_guide_am62x/EXAMPLES_DRIVERS_OSPI_FLASH_IO.html

    此致、

    Prashant

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

    运行 SBL_SD 引导加载程序后、我从 CCS 运行了 OSPI_FLASH_IO 示例、但发生了相同的错误。
    使用的设置为1s-1s。

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

    尊敬的 TI 工程师:
    我尚未解决此问题。 请查看该应用手册。

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

    您好!

    运行 SBL_SD 引导加载程序后、我从 CCS 运行了 OSPI_FLASH_IO 示例、但发生了相同的错误。

    您是否可以禁用 PHY 并重试?

    我还想知道您从 CCS 运行哪个内核的 OSPI_FLASH_IO 示例。

    谢谢!

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

    我关闭了 PHY、但仍然出现相同的错误。

    以下是 ti_board_open_close.c 的一部分、在 SysConfig 中设置 TI 板驱动程序>>闪存后输出。

    /*
     * FLASH
     */
    /* FLASH Object - initialized during Flash_open() */
    Flash_NorOspiObject gFlashObject_MT25QL256ABA8ESF =
    {
        .rdDummyValPhyMode = FLASH_NOR_UPDATE_RD_DUMMY_VALUE,
    };
    
    /* FLASH Attrs */
    Flash_Attrs gFlashAttrs_MT25QL256ABA8ESF =
    {
        .flashType = CONFIG_FLASH_TYPE_SERIAL,
        .flashName = "MT25QL256ABA8ESF",
        .deviceId = 0xBA19,
        .manufacturerId = 0x20,
        .flashSize = 33554432,
        .blockCount = 1024,
        .blockSize = 32768,
        .pageCount = 128,
        .pageSize = 256,
        .sectorCount = 8192,
        .sectorSize = 4096,
    };
    
    /* FLASH DevConfig */
    Flash_DevConfig gFlashDevCfg_MT25QL256ABA8ESF =
    {
        .cmdExtType = OSPI_CMD_EXT_TYPE_REPEAT,
        .enable4BAddr = TRUE,
        .addrByteSupport = 1,
        .fourByteAddrEnSeq = 0xA0,
        .cmdWren = 0x06,
        .cmdRdsr = 0x05,
        .cmdWrsr = 0x00,
        .srWip = (1 << 0),
        .srWel = (1 << 1),
        .xspiWipRdCmd = 0x85,
        .xspiWipReg = 0x00800000,
        .xspiWipBit = (1 << 0),
        .resetType = 0x10,
        .eraseCfg = {
            .blockSize = 32768,
            .sectorSize = 4096,
            .cmdBlockErase3B = 0x52,
            .cmdBlockErase4B = 0x52,
            .cmdSectorErase3B = 0x20,
            .cmdSectorErase4B = 0x20,
            .cmdChipErase = 0xC7,
        },
        .idCfg = {
            .cmd = 0x9F, /* Constant */
            .numBytes = 3,
            .dummy4 = 0,
            .dummy8 = 0,
        },
        .protocolCfg = {
            .protocol = FLASH_CFG_PROTO_1S_1S_1S,
            .isDtr = FALSE,
            .cmdRd = 0x0B,
            .cmdWr = 0x02,
            .modeClksCmd = 0,
            .modeClksRd = 0,
            .dummyClksCmd = 8,
            .dummyClksRd = 8,
            .enableType = 0xFF,
            .enableSeq = 0xFF,
            .dummyCfg = {
                .isAddrReg = FALSE,
                .cmdRegRd = 0x85,
                .cmdRegWr = 0xB1,
                .cfgReg = 0x00,
                .shift = 0,
                .mask = 0x00,
                .cfgRegBitP = 0,
            },
        },
        .flashWriteTimeout = 512,
        .flashBusyTimeout = 256000000,
    };

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

    您好、您可以使用 OSPI_FLASH_IO 示例的 SysConfig 中的以下选项禁用4B 寻址模式吗?

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

    感谢您的确认。
    当使用的内核为 r5fss0-0 FreeRTOS 时通过的测试。
    在 a53ss0-0 FreeRTOS 中、会出现相同的错误、但我不知道原因。

    当我换4S-4S-4S 时、控制台中没有显示。


    SysConfig 的"ti_board_oepn_close.c"中的闪存设置如下所示。

    /*
     * FLASH
     */
    /* FLASH Object - initialized during Flash_open() */
    Flash_NorOspiObject gFlashObject_MT25QL256ABA8ESF =
    {
        .rdDummyValPhyMode = FLASH_NOR_UPDATE_RD_DUMMY_VALUE,
    };
    
    /* FLASH Attrs */
    Flash_Attrs gFlashAttrs_MT25QL256ABA8ESF =
    {
        .flashType = CONFIG_FLASH_TYPE_SERIAL,
        .flashName = "MT25QL256ABA8ESF",
        .deviceId = 0xBA19,
        .manufacturerId = 0x20,
        .flashSize = 33554432,
        .blockCount = 1024,
        .blockSize = 32768,
        .pageCount = 128,
        .pageSize = 256,
        .sectorCount = 8192,
        .sectorSize = 4096,
    };
    
    /* FLASH DevConfig */
    Flash_DevConfig gFlashDevCfg_MT25QL256ABA8ESF =
    {
        .cmdExtType = OSPI_CMD_EXT_TYPE_REPEAT,
        .enable4BAddr = FALSE,
        .addrByteSupport = 1,
        .fourByteAddrEnSeq = 0xA0,
        .cmdWren = 0x06,
        .cmdRdsr = 0x05,
        .cmdWrsr = 0x00,
        .srWip = (1 << 0),
        .srWel = (1 << 1),
        .xspiWipRdCmd = 0x85,
        .xspiWipReg = 0x00800000,
        .xspiWipBit = (1 << 0),
        .resetType = 0x10,
        .eraseCfg = {
            .blockSize = 32768,
            .sectorSize = 4096,
            .cmdBlockErase3B = 0x52,
            .cmdBlockErase4B = 0x52,
            .cmdSectorErase3B = 0x20,
            .cmdSectorErase4B = 0x20,
            .cmdChipErase = 0xC7,
        },
        .idCfg = {
            .cmd = 0x9F, /* Constant */
            .numBytes = 3,
            .dummy4 = 0,
            .dummy8 = 0,
        },
        .protocolCfg = {
            .protocol = FLASH_CFG_PROTO_4S_4S_4S,
            .isDtr = FALSE,
            .cmdRd = 0x6B,
            .cmdWr = 0x02,
            .modeClksCmd = 0,
            .modeClksRd = 0,
            .dummyClksCmd = 10,
            .dummyClksRd = 10,
            .enableType = 0,
            .enableSeq = 0x00,
            .protoCfg = {
                .isAddrReg = FALSE,
                .cmdRegRd = 0x6B,
                .cmdRegWr = 0x02,
                .cfgReg = 0x00,
                .shift = 0,
                .mask = 0x00,
                .cfgRegBitP = 0,
            },
            .strDtrCfg = {
                .isAddrReg = TRUE,
                .cmdRegRd = 0x85,
                .cmdRegWr = 0xB1,
                .cfgReg = 0x00800006,
                .shift = 1,
                .mask = 0x02,
                .cfgRegBitP = 1,
            },
            .dummyCfg = {
                .isAddrReg = FALSE,
                .cmdRegRd = 0x85,
                .cmdRegWr = 0xB1,
                .cfgReg = 0x00,
                .shift = 0,
                .mask = 0x00,
                .cfgRegBitP = 0,
            },
        },
        .flashWriteTimeout = 512,
        .flashBusyTimeout = 256000000,
    };

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当我更改为4S-4S-4S 时、控制台中没有显示任何内容。

    如前所述、根据闪存数据表、更高模式需要正确的闪存参数。

    如果您已根据数据表填写了不同参数、但仍然看到问题、请创建新主题、让我们的 OSPI 专家来跟进该问题。

    谢谢!

    Prashant

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

    感谢您的答复。 我在下面发布了一个新帖子。

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1442727/am623-flash-device-io-test-error