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.

[参考译文] TMS320F2.8377万D:当CPU2从闪存运行而没有连接时,我是否可以从RAM调试CPU1?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/582853/tms320f28377d-can-i-debug-cpu1-from-ram-while-cpu2-runs-from-flash-without-connection-to-it

部件号:TMS320F2.8377万D

我有一块板上有tms320f2.8377万d。 它是自己的主板,而不是TI提供的主板。

我编写了一个简单的程序:CPU1从闪存运行,进行初始化,使用IPCBootCPU2 (C1C2_Brom_bootmode_boot_fove_flash)使CPU2退出重置,并在一段时间内切换GPIO。

CPU2从闪存运行,并在一段时间内切换第二个GPIO。

我使用这些GPIO在示波器上查看我的代码是否正常工作。

打开主板电源时,CPU1和CPU2按预期工作。 但我有一些问题:

1.如果我使用调试器(xds220 iso)连接到CPU1,并运行其代码CPU2不起作用(但我不连接到CPU2)。 “IPCBootCPU2(C1C2_Brom_bootmode_boot_fby_flash)”功能不能帮助使CPU2退出重置。 如果CPU2从闪存运行而没有连接,我是否可以从RAM调试CPU1?

2.函数“IPCBootCPU2(C1C2_Brom_bootmode_boot_fRO_RAM)”有什么作用,如何使用它? 如果我连接到CPU2并将程序加载到其RAM,我可以手动运行它,这样我就不会找到参数为“C1C2_Brom_bootmode_boot_fRO_RAM”的函数“IPCBootCPU2”的方案。

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

    您好,

    [引述] 1. 如果我使用调试器(xds220 ISO)连接到CPU1,并运行其代码CPU2不起作用(但我不连接到CPU2)。 “IPCBootCPU2(C1C2_Brom_bootmode_boot_fby_flash)”功能不能帮助使CPU2退出重置。 如果CPU2从闪存运行而没有连接,我是否可以从RAM调试CPU1? [/引述]

    是的,您应该能够从RAM运行CPU1,从闪存运行CPU2。 在此情况下,CPU1代码是否正常运行?

    [引述] 2. “IPCBootCPU2(C1C2_Brom_bootmode_boot_fRO_RAM)”函数有什么作用,如何使用它? 如果我连接到CPU2并将程序加载到其RAM,我可以手动运行它,这样我就不会找到参数为“C1C2_Brom_bootmode_boot_fRO_RAM”的函数“IPCBootCPU2”的方案。 [/引述]

    它允许CPU2从已加载代码的RAM引导。 如果用户已在RAM中加载代码,并且在CPU2重置后不想再次加载代码,则可以使用此代码。

    此致,

    Vivek Singh

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

    [报价用户="Vivek Singh"]

    是的,您应该能够从RAM运行CPU1,从闪存运行CPU2。 在此情况下,CPU1代码是否正常运行?

    [/引述]

    CPU1代码从RAM中正确运行,但它不会使CPU2退出重置功能"IPCBootCPU2 (C1C2_Brom_bootmode_boot_fove_flash)",我在从闪存工作时使用该功能(并且它工作正常)。

    我编程了CPU2闪存并断开连接。 然后我连接到CPU1,将程序加载到其RAM并运行,但CPU2代码不起作用。 我做错了什么?

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

    您好,

    [报价]我编程了CPU2闪存并断开连接。 然后我连接到CPU1,将程序加载到其RAM并运行,但CPU2代码不起作用。 我做错了什么? [/引述]

    在断开CPU2之前,是否可以重置CPU2,然后断开? 基本上,将代码加载到CPU2上,重置代码,然后将其断开。

    Vivek Singh

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

    [报价用户="Vivek Singh"]

    基本上,将代码加载到CPU2上,重置代码,然后将其断开。

    [/引述]

    如果我执行此 序列,我将获得(IpcRegs.IPCBOOTSTS ==0)和无限循环

    while (bootStatus != C2_BootROM_BOOTSTS_SYSTEM_READY_));

    在函数"IPCBootCPU2"中。

    如果我只连接到CPU1并从RAM功能运行程序,"IPCBootCPU2"将结束,没有错误或我可以检测到的问题,但CPU2将不工作(CPU2代码在打开主板电源之前编程到闪存中)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的,CPU1被卡住了,但在这种情况下CPU2是否工作正常? 对于CPU1,您如何运行代码? 您是否正在初始化RAM引导的位置0xD00,然后在加载代码后执行"reset",然后执行"run"?
    通常,应在独立模式或调试模式下运行两个CPU,因为CPU2不应在CPU1之前运行。 在这种情况下,当CPU1处于RESET (重置)状态时,CPU2开始运行,因此有点棘手。

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

    [报价用户="Vivek Singh"]

    好的,CPU1被卡住了,但在这种情况下CPU2是否工作正常? 对于CPU1,您如何运行代码? 您是否正在初始化RAM引导的位置0xD00,然后在加载代码后执行"reset",然后执行"run"?
    通常,应在独立模式或调试模式下运行两个CPU,因为CPU2不应在CPU1之前运行。 在这种情况下,当CPU1处于RESET (重置)状态时,CPU2开始运行,因此有点棘手。

    [/引述]

    我尝试了很多东西,但在调试会话中CPU2不管怎样都不起作用,如果CPU1尝试从闪存启动它。

    示例我做什么(步骤):

    CPU2不工作。

    如果我连接到它,我会看到:

    我尝试更改EMU_KEY和EMU_BMODE,重置和运行CPU,以不同的组合连接/断开它们,但CPU2不想从闪存工作。 也许我漏掉了一些重要 的东西或在思考错误...

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

    .和另一个问题:

    数据表中有一个重置信号表:

    我理解如下:在CPU2 WD重置后,我不需要再次使用"IPCBootCPU2"程序,但没有此 操作,CPU2将无法工作。 我需要启用NMI中断,并且需要通过 "IPCBootCPU2"过程启动CPU2,对吗? 那么,在CPU2.WDRS之后,CPU2未保持在"重置"中意味着什么?

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

    [引述]我理解如下:在CPU2 WD重置后,我不需要再次使用"IPCBootCPU2"程序,但如果没有此 操作,CPU2将不起作用。 我需要启用NMI中断,并且需要通过 "IPCBootCPU2"过程启动CPU2,对吗? 那么,在CPU2.WDRS之后,CPU2未保持在"重置"中意味着什么? [/引述]

    CPU1具有重置位,用于重置CPU2。 开机时,CPU1需要释放CPU2,使其脱离重置。 在CPU2 WD复位的情况下,此位不会进行复位,因此CPU2将退出复位,CPU2将执行引导ROM代码,使CPU2处于空闲状态(如正常启动)。  CPU1需要向  CPU2发送引导命令以跳至闪存中的应用程序,为此,您需要在CPU1上具有NMI处理程序。 如果您不想这样做,则可以对"ZX.BOOTCTRL.OT_BMODE"进行编程

    == flash boot",这样每次重置后,CPU2将引导至闪存,而无需等待CPU1发出引导命令。

    此致,

    Vivek Singh

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