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:有关如何使用 DMASS0的问题

Guru**** 2451970 points
Other Parts Discussed in Thread: LP-AM243, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1176632/am2434-problems-regarding-how-to-use-dmass0

器件型号:AM2434
主题中讨论的其他器件:LP-AM243UNIFLASH

大家好、


当我调试电路板时,我发现 PowerClock_init()函数不能正常工作。 我对它进行了跟踪、发现它是由于 DMASS0_SEC_PROXY 寄存器 DMASS0的 CUR_CNT 造成的。 在 Sciclient_sendMessage()发送消息后,CUR_CNT 无法将计数设置 为1。
请问,当 Sciclient_sendMessage()发送消息时,DMASS0_SEC_PROXY 寄存器的 CUR_CNT 在什么情况下可以接收计数并将其设置为1? DMASS0应如何设置?

此致、

凯瑟琳

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

    该程序在 LP-AM243上运行良好。 当我在 自己的电路板上使用它时,Sciclient_sendMessage()发送了一条消息,但 DMASS0_SEC_PROXY 寄存器的 CUR_CNT 计数不能增加。 DMAASS0的部分应该与 MCU 的外部设计硬件无关。 同样,该方案也不应存在这种问题。 我 想它 与 仿真调试接口和仿真器识别通信有关。 请帮我检查一下。

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

    您好 Katherine、

    很抱歉耽误你的回答。

    Sciclient_sendMessage()是从多个 Sciclient 函数调用的低级 Sciclient 内部函数,这些函数从 PowerClock_init()调用。 我收集对 Sciclient_sendMessage ()(用于将 DMASS0_SEC_PROXY _0_STATUS:CUR_CNT 设置为1)的调用会在 PowerClock_init ()中的某个位置进行调用。 它被称为什么?

    您是否在 LP 和定制板上使用相同的引导方法?

    此致、
    弗兰克

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

    您好、Frank、

    它是同一个项目、代码是相同的。

    PowerClock_init()>>Module_clockEnable()>>SOC_moduleClockEnable()>>...>>Sciclient_sendMessage()

    此致、

    凯瑟琳

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

    您好 Katherine、

    感谢您的反馈。

    您是否在 LP 和定制板上使用相同的引导方法?

    此致、
    弗兰克

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

    您好、Frank、

    是的、所有设置 都是 QSPI。 在 使用 CCS.12.10+XDS110或 XDS200进行调试过程中、我当前遇到了问题。

    此致、

    凯瑟琳

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

    您好 Katherine、

    好的、我希望大家在调试过程中使用 CCS/JTAG。

    您是否使用 SBL NULL (从 OSPI 或 SD 卡引导)或 CCS 脚本进行 SOC 初始化?

    下面介绍了 SoC 初始化方法:

    在调试时、引导模式引脚是否在 LP 和定制硬件平台上设置相同?

    此致、
    弗兰克

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

    您好、Frank、

    两个电路板都设置为相同 的引导模式、主启动为 QSPI、第二个启动为无。 当它位于 LP-AM243上时、可以正常且正确地对其进行调试。 XDS110或 XDS200无法在自己制作的电路板上正常工作。

    此外、您提到的 SBL NULL 是否仅在串行模式中启动?  在此模式下、出现相同的问题。

    此外、在使用 tools/ccs_load/am243x/load_dmsc.js 进行初始化、然后加载应用程序后 、也会发生同样的情况。

    此致、

    凯瑟琳

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

    您好 Katherine、

    [引用 userid="543421" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1176632/am2434-problems-regarding-how-to-use-dmass0/4432713 #4432713]PowerClock_init()>>Module_clockEnable()>>SOC_moduleClockEnable()>>...>SCIClient_sendMessage()

    当您在定制硬件板上观察到意外行为时,Sciclient()(或其他) API 函数是否返回任何类型的故障?

    意外的行为是否会导致应用程序在 PowerClock_init()期间失败,或者应用程序是否继续通过 PowerClock_init()并且稍后会发生另一个故障?

    发生该行为时、启用哪个模块时钟? 您应该能够确定将索引(变量 I)的值找到到 gSock模 块[]数组中,然后检查 ti_power_clock_config.c.c 中的 gSock模 块[]数组

    [引用 userid="543421" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1176632/am2434-problems-regarding-how-to-use-dmass0/4438224 #4438224">两个主板均设置为相同 的引导模式,主启动为 QSPI,第二次启动为无。 [/报价]

    我不明白。 一次只能选择一种引导模式。

    两个电路板通常都设置为 QSPI 引导(即 SBL 和应用都在 QSPI 闪存中)?

    您何时使用无第二次启动方法? 进行调试时会发生什么情况?

    [引用 userid="543421" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1176632/am2434-problems-regarding-how-to-use-dmass0/4438224 #4438224"] XDS110或 XDS200无法在自己制作的电路板上正常工作。

    它们工作不好(可能是由于某些 JTAG 硬件信号问题)、还是根本不工作?

    [引用 userid="543421" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1176632/am2434-problems-regarding-how-to-use-dmass0/4438224 #4438224"]您提到的 SBL NULL 是否仅在串行模式下启动?[/quot]

    请详细说明一下吗? 什么是"串行模式"?

    有关引导流程和引导加载程序的更多详细信息、请访问 :https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/08_04_00_17/exports/docs/api_guide_am243x/BOOTFLOW_GUIDE.html

    SBL NULL 详细信息可以在以下位置找到: https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/08_04_00_17/exports/docs/api_guide_am243x/BOOTFLOW_GUIDE.html#autotoc_md263

    [引用 userid="543421" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1176632/am2434-problems-regarding-how-to-use-dmass0/4438224 #4438224"]使用 tools/ccs_load/am243x/load_dmsc.js 进行初始化、然后加载应用程序后 、会发生相同的情况。

    在定制硬件板集上设置为不引导并使用 CCS 脚本、您在加载和执行程序后会发现此问题?

    这会使我感到困惑、因为 CCS 脚本方法需要 JTAG 连接。 如果 JTAG (XDS110/XDS200)不能在定制电路板上工作、CCS 脚本在您的定制硬件电路板上如何工作?

    请在此处查看有关无引导引脚设置的详细信息:无引导: https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/08_04_00_17/exports/docs/api_guide_am243x/EVM_SETUP_PAGE.html#BOOTMODE_NOBOOT

    此致、
    弗兰克

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="16636" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1176632/am2434-problems-regarding-how-to-use-dmass0/4439005 #4439005]\n 您能详细说明吗? 什么是"串行模式"?[/quot]

    您好、Frank、

    抱歉、它应该是'UART 引导模式'。  

    客户 认为 它可能与 ARM 内核调试系统有关。

    此致、

    凯瑟琳

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

    您好 Katherine、

    [引用 userid="543421" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1176632/am2434-problems-regarding-how-to-use-dmass0/4439697 #4439697"]抱歉、它应该是'UART 引导模式'。  [/报价]

    好的、感谢您的澄清。

    SBL NULL 在这里进行了说明: https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/08_04_00_17/exports/docs/api_guide_am243x/BOOTFLOW_GUIDE.html#autotoc_md263

    SBL NULL 通常闪存到 OSPI 或 SD、然后从其中一个非易失性存储器源启动。

    此致、
    弗兰克

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

    您好!

    [引用 userid="543421" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1176632/am2434-problems-regarding-how-to-use-dmass0/4438224 #4438224"]第二次启动时没有。

    很抱歉造成混淆。 我已向客户确认、他的意思是他没有设置备份引导。

    XDS110或 XDS200可以连接到调试 MCU,但电路板本身卡在 PowerClock_init()函数上,无法通过。

    SoC_moduleClockEnable() 将无法启用任何模块, 包括 UART 等,并进入一个无限循环 Sciclient_waitForMessage()。

    昨天客户又对 SBL 进行了编程、不知怎么说、一切都很好。 请告诉 他为什么? 是  因为 SBL 损坏、DMSC 无法检测到正确的 SBL、从而直接关闭所有模块吗?

    此致、

    凯瑟琳

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

    您好 Katherine、

    感谢您的反馈。

    我目前的理解是:

    • LP 和客户硬件板的引导方法是 SBL OSPI。 自定义硬件板无法正确执行应用程序、但确切地说、不知道发生故障的原因。
    • 为了调试此问题、电路板被置于无引导模式、CCS 脚本被用于 SOC 初始化。
      • LP:未观察到挂起。
      • 定制板:应用程序在 PowerClock_init()中挂起。
    • 在定制硬件板上重新刷新 SBL OSPI 后、不再观察到引导故障。

    在 SBL OSPI 仍在使用时、客户是否尝试调试自定义硬件板上的故障?

    为此、请执行以下操作:

    • 在 System_init()之前,在应用程序启动时添加自旋锁。 请参阅 例如\examples\drivers\boot\SBL_ospi\am243x-lp\r5fss0-0_nortos\main.c。
    • 重建/重新刷新应用程序。
    • 启动后、在 CCS 中启动目标。
    • 连接到 R5F0_0、而不使用"on target connect" GEL 函数。
    • 从.out 文件加载符号。
    • 禁用自旋锁以允许应用程序继续。
    • 单步执行 PowerClock_init()以查看是否发生挂起。
    [引用 userid="543421" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1176632/am2434-problems-regarding-how-to-use-dmass0/4441528 #4441528"]昨天、客户再次对 SBL 进行了编程、但不管怎么说、一切似乎都运行良好。 请告诉 他为什么? 是  因为 SBL 损坏、DMSC 无法检测到正确的 SBL、因此直接关闭所有模块吗?[/quot]

    不、我无法肯定地说。

    客户是否使用了 Uniflash (UART 或 JTAG)? https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/08_04_00_17/exports/docs/api_guide_am243x/TOOLS_FLASH.html

    最初刷写定制硬件板上的 SBL/APP 时、客户是否在刷写过程中观察到任何错误?

    如果客户重复刷写、是否可以重现相同的启动错误?

    此致、
    弗兰克

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

    您好 Frank,í a

    我添加了旋转锁、但结果仍然相同。  我‘m 不清楚添加旋转锁的目的。 请您详细说明一下吗?  

    状态= Spinlock_lock (CSL_SPINLOCK0_BASE、3);

    (笑声)

    Spinlock_unlock (CSL_SPINLOCK0_BASE、3);

    此致、

    凯瑟琳

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

    您好 Katherine、

    想法是添加一个软件自旋锁、而不是一个硬件自旋锁。 请参阅 例如\examples\drivers\boot\SBL_ospi\am243x-evm\r5fss0-0_nortos\main.c:

    /* 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()
    {
        volatile uint32_t loop = 1;
        while(loop)
            ;
    }
    

    这种类型的自旋可以添加到应用中。 应用程序启动后,您可以使用 JTAG 连接到内核,加载符号,设置 LOOP=0,然后单步执行 PowerClock_init()。

    其思路是确认在引导加载与不使用引导模式并从 JTAG 加载应用程序时、您会看到相同的故障。

    重复我的问题:如果客户重复刷写、是否可以重现相同的启动错误?

    此致、
    弗兰克

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

    您好、Frank、

    软件自旋锁是否意味着它循环并等待 DMSC 准备器件后级? 或其目的是什么? 我一侧观察到的现象是、只要 SBL 在闪存中固化、程序就可以正常执行 PowerClock_init ()、否则它将等待 PowerClock_init ()内的无限循环。

    我已经检查了 SDK 源代码。 其中的 SCI 接口功能应该是 DMSC 完全控制 MCU 外设。 应用程序必须与 DMSC 通信才能启用外设模块。 同时、当 DMSC 处于 QSPI 引导模式时、需要检查闪存中是否有完整的 SBL。 否则、相关外设将被禁用。 我想知道我的理解是否正确?

    此外、DMSC 与 PC 中的 BIOS 等效、后者管理外设、但很难使用。 当 闪存全部为空(0xFF)时、是否可以禁用 DMSC 功能、并且用户自己的 SBL 或应用程序是否可以完全控制外设的启用和禁用?

    此致、

    凯瑟琳

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

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

    您好、Frank、

    客户询问是否有问题更新。 请继续进行此操作吗?

    谢谢、此致、

    凯瑟琳

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

    您好 Katherine、

    很抱歉耽误你的回答。 我将进行回顾、并尽快与您联系。

    此致、
    弗兰克

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

    您好 Katherine、

    感谢您对此问题的耐心等待。

    [引用 userid="543421" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1176632/am2434-problems-regarding-how-to-use-dmass0/4454343 #445434a]a 软件自旋锁是否意味着它循环并等待 DMSC 准备器件后台? 或其目的是什么? [/报价]

    目的是在 SBL 完成后证明应用程序代码在 PowerClock_init()中失败。 我的印象是、当使用 CCS 脚本进行 SOC 初始化时、客户硬件上也发生了应用程序故障。

    我将总结我当前对这种情况的理解。 您能否确认我的总结是否正确?

    Uniflash 用于将 OPSI SBL、SYSFW 和应用程序写入闪存。

    LP 和客户硬件板的引导方法是 SBL OSPI。

    • LP 引导并正确执行。
    • 自定义硬件板在引导后无法正确执行应用程序。 连接 JTAG 并加载符号后、确定应用代码在 PowerClock_init()中一直循环。

    如果电路板被置于无引导模式、并且 CCS 脚本被用于 SOC 初始化:

    • LP:未观察到挂起。
    • 定制板:未观察到挂起。

    这意味着该问题仅在自定义硬件上的 OSPI 引导时发生。

    在定制硬件板上重新刷新 SBL OSPI 后、不再观察到引导故障。

    [引用 userid="543421" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1176632/am2434-problems-regarding-how-to-use-dmass0/4454343 #445434"]我身边观察到的现象是,只要 SBL 在闪存中固化,程序就可以正常执行 PowerClock_init(),否则它将等待 PowerClock_init()内部的无限循环。

    这是 Uniflash 问题,而不是 SBL、SYSFW、PowerClock_init()或 DMASS 问题。 是这样吗? Uniflash 是否会报告刷写期间出现故障的情况中的任何错误?

    此致、
    弗兰克