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.

[FAQ] [参考译文] [常见问题解答] SBL-AM263PX:AM263P4:MCU-PLUS-SDK 在使用 ospi 示例时使用 sbl ospi 和错误时失败

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1471174/faq-mcu-plus-sdk-am263px-am263p4-sbl-fails-when-using-sbl-ospi-and-error-while-using-ospi-examples

器件型号:AM263P4
主题中讨论的其他器件:MCU-PLUS-SDK AM263PX-SysConfig

工具/软件: MCU-PLUS-SDK - AM263PX

以下示例在中失败 SDK 10.01.00 版本 am263px-cc PROC159A 电路板:

  • SBL ospi
  • ospi 示例
  • mcan_external_read_write / canfd_external_read_write
  • 旋转变压器示例

运行 ospi 示例时观察到的错误:

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

    发生此问题的原因是电路板版本不匹配、因为新修订版电路板(PROC159A)具有类似于 am263px-LP 的闪存复位机制。 ospi 闪存复位信号直接来自 SOC、而不是通过 IO 扩展器、在之前的版本 E1/E2中就是这种情况。

     对于 MCAN/旋转变压器示例:  

    • mcan_收 发器.c 文件替换 mcanEnableTransceiver () 使用此代码函数:

    void mcanEnableTransceiver()
    {
        int32_t status = SystemP_SUCCESS;
        uint8_t boardVer[2] = "";
    
        Board_eepromOpen();
    
        status = EEPROM_read(gEepromHandle[CONFIG_EEPROM0], EEPROM_OFFSET_READ_PCB_REV, boardVer, EEPROM_READ_PCB_REV_DATA_LEN);
        if(status == SystemP_SUCCESS)
        {
            if(boardVer[0] == 'A' && boardVer[1] == '\0')
            {
                /* boardVer is REV A */
                status = TCA6424_Mcan_Transceiver();
            }
            else if(boardVer[1] == '2' && boardVer[0] == 'E')
            {
                /* boardVer is E2 */
                status = TCA6424_Mcan_Transceiver();
            }
            else if(boardVer[1] == '1' && boardVer[0] == 'E')
            {
                /* boardVer is E1 */
                /* MCAN Transceiver is enabled by default in E1*/
            }
            else
            {
                /* boardVer is not valid */
                /* Do nothing */        
            }
        }
    
        DebugP_assert(status == SystemP_SUCCESS);
        Board_eepromClose();
    }

    • board.c 解析器示例文件、请替换  I2C_IO_expander_resolver_adc () 功能:

    void i2c_io_expander_resolver_adc(void)
    {
        int32_t status = SystemP_SUCCESS;
        uint32_t boardVer_offset = 0x1AU;
        uint32_t boardVer_length = 0x2U; // 2 char
    
        uint8_t boardVer[2] = "";
        status = EEPROM_read(gEepromHandle[CONFIG_EEPROM0], boardVer_offset, boardVer, boardVer_length);
        if(status == SystemP_SUCCESS)
        {
            /* read successful */
            if(boardVer[0] == 'A' && boardVer[1] == '\0')
            {
                /* boardVer is REV A */
                DebugP_log("Detected CC version is REV A. Calling TCA6424 Drivers for io expander configurations\r\n");
                i2c_io_expander_resolver_adc_gTCA6424();
            }
            else if(boardVer[1] == '1' && boardVer[0] == 'E')
            {
                /* boardVer is E1 */
                DebugP_log("Detected CC version is E1. Calling TCA6416 Drivers for io expander configurations\r\n");
                i2c_io_expander_resolver_adc_gTCA6416();
            }
            else if(boardVer[1] == '2' && boardVer[0] == 'E')
            {
                /* boardVer is E2 */
                DebugP_log("Detected CC version is E2. Calling TCA6424 Drivers for io expander configurations\r\n");
                i2c_io_expander_resolver_adc_gTCA6424();
            }
            else
            {
                /* boardVer is invalid */
                /* Do nothing */
            }
        }
        else
        {
            DebugP_log("EEPROM read failed. aborting\r\n");
            DebugP_assert(0);
        }
    }

    • 重新编译示例

    
    

     对于 SBL OSPI/OSPI 示例

    a. SysConfig 更新:

    •  转至 source/sysconfig/drivers/.meta/ospi/v0/ospi_v0.syscfg.js 并将 syscfg.js 文件替换为随附的更新文件 ospi_v0.syscfg.js.zip .

    •  它向 SysConfig 公开 OSPI_RESET_OUT0信号。

    b.源驱动程序更新:

    •  转至 source/drivers/ospi/V0 并粘贴的内容 source_ospi_v0_files.zip . 当系统提示时、单击合并文件夹并替换文件。  

    c. SBL OSPI 更新:

    •   转至 examples/drivers/boot/sbl_ospi/am263px-cc/r5fss0-0_nortos 并粘贴的内容 sbl_ospi_files.zip .  当系统提示时、单击合并文件夹并替换文件。

    d. oSPI 示例更新:(例如:ospi_flash_io 项目)

    •   转至 examples/drivers/ospi/ospi_flash_io 并粘贴的内容 ospi_flash_io_files.zip .  单击合并文件夹并在出现提示时替换文件。

    •   对其他所需的 ospi 示例进行类似的更改。

    e.重新构建库

    f.重新构建 SBL、示例项目

    e2e.ti.com/.../ospi_5F00_v0.syscfg.zip

    e2e.ti.com/.../source_5F00_ospi_5F00_v0_5F00_files.zip

    e2e.ti.com/.../sbl_5F00_ospi_5F00_files.zip

    e2e.ti.com/.../ospi_5F00_flash_5F00_io_5F00_files.zip