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.

[参考译文] AM2434:软件复位

Guru**** 2392905 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/1485530/am2434-software-reset

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

工具与软件:

各位专家、您好!

每当从 UART 接收到特定字符串时、我都需要执行芯片复位。

函数 SOC_generateSwWarmResetMainDomain()在收到特定消息后调用、固件执行停止、但从不重新启动。

我缺少什么吗?

此致、

Andrea

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

    安德烈、您好!

    我正在查看您的问题,您可能希望在一两天内得到回复。

    此致、

    Anil。

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

    安德烈、您好!

    上述 API 应起作用并执行 SOC 复位。

    您能否分享您如何在项目中实现上述实现的代码片段或项目?

    此致、

    Anil。

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

    Anil、您好!

    我将向您发送该项目。

    e2e.ti.com/.../uart_5F00_reset.zip

    在 UART 上接收到消息01 10 00 00 00 02 04 00 00 00 01 32 6F (HEX)之后调用复位 API: CONFIG_UART0_RS485。

    void modbus_writeDoubleWord(modbusReg_struct *regType)
    {
        switch(regType->regPointer)
        {
        case 0:
            if (regType->value == 1)
                regType->resetDrive = 1;
            break;
    
        default:
            regType->error = C_MODBUS_ERROR_REGISTER_UNDEFINED;
            break;
        }
    }

    接收到消息后、标志"regType->resetDrive"将设置为1 (第7行)。

    //Reset driver if requested
    if(regType.resetDrive)
    {
        //Wait for trasmit to finish
        while(uartType->txBusy)
        {
            shs_UART_trasmit_check_done(uartType);
        }
        //Reset MCU
        SOC_generateSwWarmResetMainDomain();    //TODO: Verificare reset
    }

    函数"Modbus_detect"检查  "regType->resetDrive"的值并 调用"SOC_generateSwWarmResetMainDomain();"。

    引导模式设置为 OSPI 模式、微软件位于 OSPI 闪存中。

    目标是在复位后开始执行闪存内的固件。

    BR、

    Andrea

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

    安德烈、您好!

    感谢您分享以上详细信息。

    我可以看你的代码,并将很快回来.

    此致、

    Anil。

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

    安德烈、您好!

    您能否确认控件是否位于上述代码的第10行?

    如果控制转向第10行、那么 SOC 将通过复位。

    复位后、SOC 引导流程从 RBL→SBL OSPI→Application 开始。

    同样、应用程序全新启动。 目前、我怀疑您的代码是否真的是转到第10行的控件。

    是否使用 XIP 模式? SBL 始终从外部闪存中选择一个应用映像、并将其放入 DDR/MSRAM 存储器中。 因此、当您使用 XIP 模式时、您需要将代码保存在闪存而非 RAM 存储器中。

    如果您使用的是 XIP 模式、请按照以下步骤操作。

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/10_01_00_32/exports/docs/api_guide_am243x/BOOTFLOW_XIP.html

    此致、

    Anil。

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

    Anil、您好!

    我正在使用 appimage.hs_fs 文件;我是否需要切换到 XIP 模式?

    "您能否确认控件是否位于上述代码的第10行?"

    是的、 执行代码的第10行、并且在执行 soc.c 的第746行时、程序卡住:

    如果我尝试在执行此函数后暂停调试、程序会在 F10801C0停止

    此致、

    Andrea

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

    安德烈、您好!

    您能否共享 UART 日志?

    我感觉 SOC 正在复位。

    另外、我假设您希望 CCS 根据您的代码新鲜运行、而这不会发生、因为当您从 CCS 加载示例时、CCS 将直接将数据写入 MSRAM/DDR 位置、复位后、内容将丢失、代码也不会从应用程序执行。

    您只需确认 SOC 是否正在执行复位。 只需检查 UART 日志、每次复位时都会打印 SBL 日志、这会确认 SOC 是否复位。

    此致、

    Anil。

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

    您好!

    我刚刚查看了 UART 日志。

    引导模式引脚的设置方式是主引导模式为 OSPI、备用引导模式为 UART。

    当我为电路板加电时、SBL 设法使用 OSPI 加载闪存固件。

    日志:

    DMSC 固件版本9.0.7--v09.00.07 (Kool Koala)
    DMSC 固件版本0x9
    DMSC ABI 修订版3.1

    [bootloader_profile]引导介质:NOR SPI 闪存
    [bootloader_profile]引导介质时钟:100.000 MHz
    [bootloader_profile]启动映像大小:108 KB
    [bootloader_profile] Cores present:
    r5f0-0
    [引导加载程序配置文件] SYSFW init:12183us
    [引导加载程序配置文件] System_init:5366309us
    [引导加载程序配置文件] Drivers_open : 276us
    [引导加载程序配置文件] Board_driversOpen:73us
    [bootloader profile] Sciclient 获取版本: 9844us
    [引导加载程序配置文件] CPU 负载:180616us
    [bootloader_profile] SBL 总耗时时间:200596us

    图像加载完成、切换到应用程序...

    我注意到、当发出软件复位(SOC_generateSwWarmResetMainDomain)时、IC 进入备用引导模式。

    日志:

    000000000011a0000616d36347800000000000048534653000002000000020002a6000000000000b018658ad99dc903c8c9bfb27b12751099920a042ad1dcd7b

    出于某种原因、SBL 无法从 OSPI 闪存加载固件、而是使用备用引导模式。

    BR、

    Andrea

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

    安德烈、您好!

    您能否确认您是否更改了 SBL OSPI 应用程序、或者默认情况下、SBL OSPI 用于您的应用程序?

    此致、

    Anil。

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

    Anil、您好!

    我正在使用从 sbl_ospi 示例编辑的定制 SBL 固件。

    BR、

    Andrea

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

    安德烈、您好!

    我的建议是、 使用 TI SBL 并确认此问题是否仍然存在。

    这将确认您的 SBL 创建问题或应用程序创建问题。

      此外、请分享修改后的 SBL 更改以查看更改。

    此致、

    Anil。

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

    Anil、您好!

    在将定制 SBL 工程与 TI 的 SBL ospi 进行比较后、我可以确认唯一的区别是所使用的闪存器件;该电路板使用的闪存与评估板不同。

    我尝试过的:

    1)我尝试在自定义 SBL 项目的 main 的第一行添加一个对"loop_forever ();"的调用以进行调试。

    /* call this API to stop the booting process and spin, do that you can connect
     * debugger, load symbols and then make the 'loop' variable as 0 to continue execution
     * with debugger connected.
     */
    void loop_forever(void)
    {
        volatile uint32_t loop = 1;
        while(loop)
            ;
    }
    
    int main(void)
    {
        int32_t status;
    
        loop_forever();
    
        Bootloader_profileReset();
    
        Bootloader_socWaitForFWBoot();
    

    上电时、整个程序正确执行、 主项目启动。

    在主应用程序发出"SOC_generateSwWarmResetMainDomain();"调用后、MCU 将进入备份引导模式、而不进入闪存中加载的自定义 SBL。

    2) 2)我尝试向函数添加调用

    Board_driversClose ();
    drivers_close();
    board_deinit();
    system_deinit();

    就在"SOC_generateSwWarmResetMainDomain();"之前,但没有任何变化。

    BR、

    Andrea

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

    安德烈、您好!

    [报价 userid="525901" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1485530/am2434-software-reset/5736489 #5736489"]

    我的建议是、 使用 TI SBL 并确认此问题是否仍然存在。

    这将确认您的 SBL 创建问题或应用程序创建问题。

    [报价]

    请也执行此步骤。这将提供有关 SBL 创建问题或应用程序的信息。

    我将把您的查询转给 SBL 专家。

    通常、引导流程会返回到备份模式、这种方式不正确。

    如果不知道 SBL 为什么要返回备份引导模式 、则在这里驱动程序可能没有帮助。

    好的、让 SBL 专家来评论这个问题。

    请使用什么协议(如8D 8D 8D 或任何其他协议或闪存器件型号和 syscfg)共享闪存详细信息、这有助于我们调试闪存侧的问题。

    此致、

    Anil。

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

    Anil、您好!

    尝试使用 TI SBL 后、复位工作正常:电路板成功复位、芯片进入 OSPI 引导模式。

    以下是有关闪存的一些详细信息:

    -设备: W25Q128JVSIM.

    -方案:4S-4S-4S

    在 zip 文件夹中、您可以找到定制 SBL 的工程

    e2e.ti.com/.../HT_2D00_NET_5F00_sbl_5F00_ospi.zip

    BR、

    Andrea

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

    安德烈、您好!  

    甚至在我继续查看代码之前、我也会直接查看与我共享的应用程序 SysConfig 中的闪存部分。

    我看到您配置了4S-4S 模式、但看了数据表、我只看到4S-4S 不是闪存支持的模式。

    请从数据表中找到相关快照。

    此致、

    Vaibhav

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

    您好、 Vaibhav、

    我正在使用 QPI 模式来启用4S-4S 模式。

    我使用 TI 提供的 ospi_flash_io 示例测试了该设置、它可以正常工作。

    此致、

    Andrea

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

    看起来很有趣、我提到了一个非常接近于您看到的数据表。

    我参考了以下数据表: https://www.winbond.com/hq/product/code-storage-flash-memory/serial-nor-flash/?__locale=en&partNo=W25Q128JV

    如果设置使用 OSPI 闪存 IO、则闪存和 OSPI 部分被排除。 我们需要查看代码。

    我会从闪存和 OSPI 的角度给它一个绿色标志。

    此致、

    Vaibhav

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

    安德烈、您好!

    我想这个线程还没有关闭?

    因为它支持 TI SBL OSPI、而不支持您的定制 SBL OSPI?

    此致、

    Vaibhav

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

    您好!

    我指的是此数据表:

    https://www.mouser.it/datasheet/2/949/w25q128jv_dtr_revc_03272018_plus-1489858.pdf

    BR、

    Andrea

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

    您好!

    正确、我正在尝试弄清楚是什么导致定制 SBL OSPI 无法正常工作。

    BR、

    Andrea

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

    您好!

    [报价 userid="541459" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1485530/am2434-software-reset/5745228 #5745228"]

    我指的是此数据表:

    https://www.mouser.it/datasheet/2/949/w25q128jv_dtr_revc_03272018_plus-1489858.pdf

    [报价]

    我昨天参考了这个数据表、看到有另一个表格说明了4-4-4协议的支持情况、因此该表格有效。

    正确、我正在尝试找出导致自定义 SBL OSPI 无法正常工作的原因。

    我还会在默认 SBL OSPI 与您发出的 SBL OSPI 之间进行比较。 如果您有发现问题、请及时通知我、我也会在同一时间进行解答。

    此致、

    Vaibhav

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

    您好!

    [报价 userid="541459" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1485530/am2434-software-reset/5741774 #5741774"]

    在 zip 文件夹中、您可以找到定制 SBL 的工程

    HT-NET_sbl_ospi.zip

    [报价]

    我在这里有疑问。

    您说过这是定制 SBL OSPI。

    但我看到的只是 SysConfig 的 OSPI 和闪存部分的更改、并且 main、.c 中的代码与默认 MCU + SDK 9.00.00.35所提供的代码相同。

    我是否遗漏了一些内容或您已对源/驱动程序进行了更改?

    期待您的答复。

    此致、

    Vaibhav

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

    安德烈、您好!

    我看到您的项目中缺少此配置。

    此外、在最新版本的 MCU PLUS SDK AM243中、您会看到引入了 API、而在9.00.00.35中缺失。

    API 是:flashFixUpQspiBoot

    请纳入最新的更改、并告诉我它是否适合您。

    此致、

    Vaibhav

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

    您好、Vaibhav、

    我检查了 API"flashFixUpQspiBoot"并注意到它使用输出引脚复位闪存 IC。

    遗憾的是、定制电路板没有用于重置闪存的引脚。 我将来会在定制板的下一修订版中尝试进行此更改。

    感谢您的支持、

    此致、

    Andrea

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

    安德烈、您好!

    感谢大家的参与。 我期待您对该电路板进行下一次修订。

    请随时打开新的 e2e 以继续讨论。

    此致、

    Vaibhav