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.

[参考译文] TMS320F28388D:重置 CM 核心

Guru**** 2589300 points
Other Parts Discussed in Thread: TMS320F28388D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1074121/tms320f28388d-resetting-cm-core

部件号:TMS320F28388D

大家好,

我希望在收到通过 TCP 的明确命令时重置 CM 核心。 我如何实现这一目标?

我已经浏览了 TRM 第41章,见下表:

我想在 AIRCR 寄存器中将 SYSRESETREQ 位设置为1。

但我无法找到它的基本地址,因此无法访问它。

我是否可以通过任何方式重置 CM Core,使其从引导加载程序阶段引导(如果可能,不重置调试器)。

谢谢,此致,
pranay

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

    您好,

    这是 Cortex-M4寄存器集的一部分,详细信息可在 ARM 用户手册中找到-

    此致,

    维耶克·辛格

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

    Vivek,

    感谢您的参与,但我发现当我执行以下操作时 CM Core 未被重置:

    我认为,如果我在主断点中保留断点,则必须在重置后达到该断点。 正确吗?

    我尝试在表达式中读取*lRegVal,它正在更新,预期值为0x05FA0004。

    ALS 我尝试使用“sysctl_simulateReset (sysctl_caus_CPU1RSN)”;这样所有其他 CPU 也将重置,但我看到 CPU 被保持在重置状态并启动:

    我们是否有用于独立重置 CPU1 &CPU2 &CM 内核的库 API? 您能否就此向我们提供一些见解?

    普拉奈。

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

    您好,

    [引用 userid="457894" url="~/support/icins/c2000微控制器组/CC2000 /f/c2000微控制器-forume/1074121/tms320f28388d-resette-cm-core/3976104#3976104]',我假设如果我在主断点保持断点,则必须在重置后达到断点。 正确?

    这取决于引导设置的方式。 最好检查一些 CPU 寄存器或将断点保留在重置矢量处。

    [引用 userid="457894" url="~/support/icles/c2000-iclers-group/c2f/c2000微控制器-forume/1074121/tms320f28388d- reset-cm-core/3976104#3976104]ALS I 尝试使用“sysctl_simulatereset”(sysctl_cause reset_reset_reset_cpu 重置),但也将在 CP1N[和所有这些 CPU 中保留],这样的 CPU 都将在 CPU 中;

    CPU1重置将重置所有其他内核,因为重置配置位将被重置。 用户软件需要同时释放 CPU2和 CM,使其不能复位。 这就是为什么它显示 CM 处于重置状态。

    ~引用 userid="457894" url="支持/微控制器/C2000 -微控制器组/CC2000 /f/C2000 -微控制器-论坛/1074121/tms320f28388d-重置-厘米-内核/3976104#3976104]\n 我们是否有用于单独重置 CPU1 &CPU2 &CM 内核的库 API? 您能否就此向我们提供一些见解。

    CPU1无法单独重置,因为它是主 CPU,因此它也会重置其他内核。 CPU2和 CM 可以单独重置。 有驱动程序库函数 sysctl_controlCMReset 和 sysctl_controlCPU2 Reset 可从 CPU1代码重置 CM 和 CPU2。

    此致,

    维耶克·辛格

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

    Vivek 您好,

    感谢您的回复。

    [引用 userid="19481" url="~/support/icros/c2000-微控制器组/CC2000 /f/c2000-微控制器-论坛/1074121/tms320f28388d-重置- cm-core/3976531#3976531"],这取决于启动设置的方式

    如何检查这一点? 在代码中的何处可以找到?

    [引用 userid="19481" url="~/support/icros/c2000-icroms-group/c2f/c2000-微控制器-forume/1074121/tms320f28388d-重置- cm-core/3976531#3976531"]将断点保留在重置矢量上[/quot]

    -在哪里可以找到 CPU1/CPU2的重置矢量? 您是否引用了名为“vectorTableFlash”的 On ein startup_CSS.c 文件?

    [引用 userid="19481" url="~ë/support/intrles/c2000-微控制器-组/CC2000 /f/c2000 -微控制器-论坛/1074121/tms320f28388d-重置- cm-core/3976531#3976531">用户软件需要释放 CPU2和 CM,使其不再重置。 这就是为什么它显示 CM 处于重置状态。

    我只能使用“sysctl_resetDevice()”执行 CPU1/CM/CPU2重置;使用所有其他命令,我无法看到重置发生(至少我不知道要检查的位置和内容)-尝试将断点保留在主位置,但这并不有帮助。

    因此,在执行 CPU1重置后,如果 CPU1启动,并且主功能也执行 Device_bootCM(bootmode_boot_to_flash_SECTOR0),哪个版本的 CM 也是正确的? 但这里的主要内容本身并不是触发的。 如果我的理解有误,或者在重置 CPU1时需要在何处释放 CM 和 CPU2复位而不能复位,请纠正我的问题? 我指的是 CPU1代码在重置时出现或开始的位置。

    [引用 userid="19481" url="~ë/support/icc-intrlers-group/c2f/c2000-微控制器-forum/1074121/tms320f28388d-resette-cm-core/3976531#3976531"]驱动程序库函数 sysctl_controlCMReset and Reset sctl_CPU2 from CP2U/CP2U/2]

    我尝试使用这些,但不知道如何确保 CM 在执行这些操作时启动。 请提供一些意见。

    请提前感谢您的参与。

    普拉奈

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

    您好,

    [引用 userid="457894" url="~ë/support/icros/c2000-微控制器-组/CC2000 /f/c2000-微控制器-论坛/1074121/tms320f28388d-重置- cm-core/3977035#3977035 "]-如何检查? 代码中的何处可以找到?

    连接 CCS 后,CPU 将根据仿真启动进行引导,如果设置不正确,则重置后 CPU 将不会跳转到应用程序。 有关仿真启动的更多详细信息,请检查设备 TRM。

    [引用 userid="457894" url="~/support/icros/c2000-icroms-group/c2f/c2000-microms-forum/1074121/tms320f28388d- reset-cm-core/3977035703#39770358"]-在哪里可以找到 CPU1/CPU2的重置矢量? 您是否引用了名为“vectorTableFlash”的 On ein startup_CSS.c 文件?[/quot]

    当您从 CCS (调试器)发出重置时,PC 会指向重置矢量。 在那里设置断点。

    [引用 userid="457894" url="~ë/support/intrans/c2000微控制器-组/CC2000 /f/c2000微控制器-论坛/1074121/tms320f28388d 重置- cm-core/397U1#39770358]so 在执行 CPU1重置后,如果 CPbootboot 和主要功能也执行 Device_boot_CM_boot 操作,哪些操作模式也正确? [/引用]

    没错。 请检查仿真启动设置,一旦纠正,它应该能够在重置后跳至主启动。

    此致,

    维耶克·辛格

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

    Vivek 您好,

    因此,我需要在重置磁芯之前执行所需的设置。 还是其他方式?

    到目前为止,我正在使用调试模式,因此应该使用 EMUBOOTCONFIG,但要在非调试模式下使用,即,对于现场固件更新,我可以使用闪存启动,因为我们的计划是通过 TCP 从 CM 接收到的 IPC 数据闪存 CPU1的固件。 请向我们推荐您在其他情况下采用的任何其他方法。

    此外,我们是否还有任何可用于配置的 API

    EMUBOOTPINCONFIG,EMUBOOTDEF_LOW/ HIGH 和 EMC_BOOTPIN_CONFIG_KEY 寄存器,或者我们是否需要在 FW 应用程序中明确写入数据? 如果有 API,请提出建议吗?

    谢谢,
    普拉奈

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="457894" url="~ë/support/icins/c2000-icro-group/c2f/c2000-微控制器-forume/1074121/tms320f28388d- reset-cm-core/3980318#3980318">这样,我需要在重置内核之前执行所需的设置吗? 或任何其他方式?

    重置后,您必须先对其进行设置,然后再运行核心。 因此,您可以在重置前或重置后,但在单击 RUN (运行)之前对其进行设置。

    [引用 userid="457894" url="~/support/icins/c2000微控制器-组/CC2000 /f/c2000微控制器-论坛/1074121/tms320f28388d-重置- cm-core/3980318#3980318">,到目前为止,我可以使用调试模式进行闪存更新,以在 iCPU1上使用闪存更新,但可以在 iCPFW 的闪存模式上使用。 请向我们推荐您在其他情况下采用的任何其他方法。

    是的,EMUBOOT 仅适用于连接的调试器。 在独立模式下,它并不在乎,因此您不必使用它。

    [引用 userid="457894" url="~/support/icros/c2000-icroms-group/c2f/c2000-微控制器-forume/1074121/tms320f28388d- reset-cm-core/3980318#3980318"]我们是否还有任何可用于配置的 API

    如上所述,EMUBOOT 仅用于调试,因此没有用于调试的 API。 您需要通过调试器内存视图进行设置。 CCS 菜单中有一些预定义的 gel 命令可供使用-

    此致,

    维耶克·辛格

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

    Vivek 您好,

    感谢您的投入,

    我现在可以重置 CPU1内核。

    [引用 userid="19481" url="~ë/support/intrles/c2000-微控制器组/CC2000 /f/c2000 -微控制器-论坛/1074121/tms320f28388d-重置- cm-core/3980958#3980958英寸]是的,EMUBOOT 仅适用于连接的调试器。 在独立模式下,它并不在乎,因此您不必使用它。

    因此,在独立模式下,我们需要设置特定的 Z1/Z2-BOOTPINCONFIG 寄存器并配置引导表,然后再设置正确的 CPU1。 否则请更正我。

    如何重置 CM 核心? 我尝试启动 sysctl_controlCMReset (sysctl_core_active);从 CPU1中  ,在调试器中,我看到 CM 正在进入挂起状态,但似乎仍在运行,当我暂停时,它显示为挂起,以太网连接将不再工作。 所以我认为 CM 已进入重置状态。 现在要启动它,我是否需要使用 Device_bootCM()从 CPU1 bu 再次显式初始化 CM 核心?

    如果有更好的方法,请向我们提出建议。

    另外,如何使用十六进制实用程序来实现 CM 核心? 用于通过 TCP 实现引导加载程序功能。

    我正在使用“${CG_TOOL_HEX}”“${BuildArtifactFileName}” -a -o“${BuildArtifactFileBaseName}.txt”-这是否足够或需要任何其他参数?

    普拉奈

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="457894" url=~ë/support/intrans/c2000微控制器-组/CC2000 /f/c2000微控制器-论坛/1074121/tms320f28388d-重置- cm-core/3981127#3981127z1]\n 因此,您的意思是,在独立模式下,我们需要设置特定的/COTPU1 -在设置正确的引导寄存器和配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置 否则请更正我。

    如果用户 想要更改默认引导模式设置,则需要更新 Z1/Z2-BOOTPINCONFIG,否则,在独立模式下,设备将按照默认引导引脚值引导。 例如,如果 GPIO72/GPIO84值被驱动1/1,则重置后它将从闪存启动。

    [引用 userid="457894" url="~ë/support/icins/c2000-微控制器-组/CC2000 /f/c2000 -微控制器-论坛/1074121/tms320f28388d-重置-厘米-内核/3981127#3981127]',我还如何重置 CM 内核? 我尝试启动 sysctl_controlCMReset (sysctl_core_active);从 CPU1中  ,在调试器中,我看到 CM 正在进入挂起状态,但似乎仍在运行,当我暂停时,它显示为挂起,以太网连接将不再工作。 所以我认为 CM 已进入重置状态。 现在要启动它,我是否需要使用 Device_bootCM()从 CPU1 bu 再次显式初始化 CM 核心?[/quot]

    是的,重置后,CPU1应用程序代码需要根据需要引导 CM。

    [引用 userid="457894" url="~ë/support/icros/c2000-微控制器-组/CC2000 /f/c2000 -微控制器-论坛/1074121/tms320f28388d-重置- cm-core/3981127#3981127"]

    另外,如何使用十六进制实用程序来实现 CM 核心? 用于通过 TCP 实现引导加载程序功能。

    我正在使用“${CG_TOOL_HEX}”“${BuildArtifactFileName}” -a -o“${BuildArtifactFileBaseName}.txt”-这是否足够或需要任何其他参数?

    [/引用]

    我必须将此事提交给我们团队中的其他专家。

    此致,

    维耶克·辛格

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

    普拉奈,

    请参阅以下摘自 https://www.ti.com/lit/sprabv4的内容 

    谢谢,此致,
    瓦姆西

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

    Vivek 您好,

    [引用 userid="19481" url="~/support/icros/c2000-icroms-group/c2f/c2000-icroms-forum/1074121/tms320f28388d-reset-cm-core/39872#398Z1]User 需要更新单独 启动模式下的默认启动模式设置,如果用户希望更改默认启动模式下的引导值,则需要更新该模式。 例如,如果 GPIO72/GPIO84值被驱动1/1,则重置后它将从闪存启动。

    我希望以独立模式运行,并在收到 API 时重置 CPU1,而 GPIO72/GPIO84设置为1/1。
    在主固件应用程序链接器文件中-  我声明开始:原点= 0x084000,长度= 0x000002,和 IN
    自定义引导加载程序 I 声明 为“Begin”(开始):Origin = 0x080000,length = 0x000002,因此当需要现场固件更新并重置时,SSBL 应引导并等待通过 IPC 接收固件 API。

    那么,现在为了满足我的上述要求,只有将 GPIO72/84设置为1/1足够正确了吗? 或者我是否需要明确执行任何操作,即写入任何配置寄存器等等?

    普拉奈。

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

    您好,普拉奈,

    [引用 userid="457894" url="~/support/icros/c2000-icro-group/c2f/c2000-微控制器-forume/1074121/tms320f28388d-重置- cm-core/3992722#3992722"]

    在主固件应用程序链接器文件中-  我声明开始:原点= 0x084000,长度= 0x000002,和 IN
    自定义引导加载程序 I 声明 为“Begin”(开始):Origin = 0x080000,length = 0x000002,因此当需要现场固件更新并重置时,SSBL 应引导并等待通过 IPC 接收固件 API。

    那么,现在为了满足我的上述要求,只有将 GPIO72/84设置为1/1足够正确了吗? 或者我是否需要明确执行任何操作,即写入任何配置寄存器等等?

    [/引用]

    从闪存启动时,我们只有以下入口点选项-

    如果您的想法是在重置后从不同的地址启动,那么它必须是这些地址之一,但请注意,一旦更改了此配置,它将始终从该位置启动,您的 SSBL 将不会再次运行。 在这种情况下,我的建议是在 SSBL 中建立一些情报,以了解它是否需要对 FW 进行编程或直接跳转到 FW。 因此,重置 SSBL 后,将检查是否需要对固件进行编程,如果不需要,则将跳至现有固件的入口点。 希望这一点很清楚。

    此致,

    维耶克·辛格   

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

    你好,Vivek,是的,对的  

    我们在 Ssbl 中的逻辑将轮询闪存中的特定内存,并验证 是否满足关键字(如果满足),它将引导至 FW,否则它将处于程序模式,直到我们使用所需关键字更新该特定位置。  

    从上面的屏幕截图中,您的意思是说我们无法从扇区3启动? 我正在使用 LB assembly 命令来分支到相应的 FW Flash 扇区。 它是否会不起作用?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="457894" url="~/support/icros/c2000-icroms-group/c2f/c2000-微控制器-forume/1074121/tms320f28388d- reset-cm-core/3994925#3994925">从上述屏幕截图中,您表示我们无法从扇区3启动? 我正在使用 LB assembly 命令来分支到相应的 FW Flash 扇区。 它是否起作用?

    您可以从 SSBL 向闪存中的任何位置分支。 表中提到的入口点是 CPU 开始执行从 TI ROM 代码退出的默认入口点。  

    此致,

    维耶克·辛格

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

    对。

    那么,现在为了满足我的上述要求,只有将 GPIO72/84设置为1/1足够正确了吗? 或者我是否需要明确执行任何操作,即写入任何配置寄存器等等?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="457894" url="~/support/icins/c2000-微控制器组/CC2000 /f/c2000 -微控制器-论坛/1074121/tms320f28388d-重置- cm-core/3994934#3994934"],因此现在仅将 GPIO72/84设置为1/1足够了[引用/引用]

    是的,这就够了。 这将确保每次重置设备时,CPU 都会从 TI ROM 代码跳至您的 SSBL。

    此致,

    维耶克·辛格

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

    感谢 Vivek 的确认。

    我在这里面临另一个问题,

    在 CPU1中,当我们收到 API 时,我将使用“sysctl_controlCMReset (sysctl_core_active);”重置 CM Core

    将在 CPU1中启动计时器,到期时,我正在调用以下函数:

    我发现 CM 核心正在按照预期从 main()重新设置和重新启动,但在我们调用时,CM 核心的 main()中

    “IPC_registerInterrupt (ICP_CM_L_CPU1_R,IPC_INT0,IPC_ISR0);”,它将进入 FaultISR()循环。自从过去2天试图找出问题所在以来,我一直在进行此调试。

    请在这里帮助我。

    谢谢,此致,

    普拉奈

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

    普拉奈,

    您是否检查了 CM (CFSR 寄存器 - 0xE000ED28)中的故障状态 以了解导致故障的原因?  

    维耶克·辛格

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

    Vivek 您好,

    我在 CFSR 寄存器中看到以下数据:

    我进一步尝试挖掘根本原因并发现了这一点;

    我看到总线故障地址寄存器:

    接下来尝试在拆分过程中搜索该地址,但未找到任何内容。

    普拉奈

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

    普拉奈,

    不初始化指针时出现问题。 请在您的代码中检查该代码。  

    此致,

    维耶克·辛格  

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

    您好,普拉奈,  

    由于其他问题正在不同的 E2E 帖子中讨论,我们可以关闭这一个吗?  

    此致,

    维耶克·辛格