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.

[参考译文] TMS320F28375S:跳跃问题

Guru**** 2515655 points
Other Parts Discussed in Thread: TMS320F28375S, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1549437/tms320f28375s-jumping-issue

器件型号:TMS320F28375S
Thread 中讨论的其他器件: UNIFLASH

工具/软件:

您好、

我目前正在使用 CAN 协议处理 TMS320F28375S 的引导加载工作

当我尝试引导加载应用程序代码时、有时不会跳转到应用程序、就像转到其他地址一样、我已经给出了组 1 中 2 个扇区的地址、即 FLASHE_F

几次操作后、它应该跳转到 FlashG_H。但它会停止跳转。

首先将代码从闪存复制到 RAM 并运行

第一次(在使用 dumper 转储时)、代码转储到闪存 E_F 中、我在引导加载后尝试跳转到闪存 G_H  

该问题在跳转到闪存 G_H 后发生、但它不运行。

在引导加载程序中、最后会启用看门狗、这样它应该在看门狗复位后返回到引导加载程序主代码、并跳转到应用程序代码、然后运行应用程序代码。

链接器文件如下所示:

RESET - 0x3FFFC0、长度 0x2

开始 — 0x80000、长度 0x4

闪存 A- 0x80004、长度 0x1EE8

闪存 E_F - 0x88000,长度 — 17FFF

闪存 G_H - 0xA0000,长度 — 17FFF

code_start:开始

watchdog_dis:闪存 A

COPY_SECTIONS: 刷写 A

Flash Func: Flash a

将应用复制到 RAM: 0x88000  

提前感谢、

Geetha

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

    您好:

    几次操作后、它应该跳转到 FlashG_H、但会停止跳转。

     FLASHE_F 中的这些操作是什么?

    跳转到 FLASH G_H 后出现问题、但它无法运行。

    这是什么意思? 设备的状态是什么、即设备是否达到 ITRAP? 它是否成功分支到以  0xA0000 开头的代码?  

    此致、
    马特

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

    你(们)好

    这些操作指的是按照我们专有协议引导加载过程中的函数

    是的、 它成功跳转到以  0xA0000 开头的代码。 但它没有运行。

    以前、我们只复制了链接器文件中的几个段、但当我复制整个代码时、在跳转到应用程序代码之前就可以正常工作。

    现在、引导加载时没有任何问题。

    我想知道、这可能是什么原因、为什么只有在复制整个应用程序代码后才会出现?

    Geetha

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

    您好 Geetha、

    您能否 验证引导加载程序和应用程序之间是否没有任何潜在的存储器冲突(如 RAM 中的分配)?  

    闪存 G_H 中的应用程序的代码是否始于这些扇区?  

    第一次(使用 dumper 转储时)、代码转储到闪存 E_F 中、我尝试在引导加载后跳转到闪存 G_H 

    我对您 对 引导加载流程的描述仍然有点困惑。 引导加载程序是否会将最新代码加载到其中的闪存 E_F? 然后、引导加载程序将闪存 E_F 中的代码复制到闪存 G_H、并在那里执行应用程序?

    如果不是、闪存 E_F 和闪存 G_H 中的内容之间有什么区别?  

    此致、

    马特

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

    您好、

    您能否 验证引导加载程序和应用程序之间是否存在任何潜在的内存冲突(例如 RAM 中的分配)?  [/报价]

    是的、引导加载程序和应用程序之间不会发生存储器冲突。 会为这两个引脚分配单独的存储器。

    假设有 2 个不同的工作代码(应用程序)、例如 A1、A2。 使用调试器、我会将 A1 代码转储到 闪存 E_F 中、而在引导加载时、我会将 A2 代码编程到 闪存 G_H 中 完成此引导加载后、我将触发复位、这意味着它将跳转到 闪存 G_H 并运行 A2 代码。 这是标称流程。

    但除了运行 A2 代码外、所有过程都正常运行。

    [报价 userid=“649502" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1549437/tms320f28375s-jumping-issue/5963804

    以前、我们只复制了链接器文件中的几个段、但当我复制整个代码时、在跳转到应用程序代码之前就可以正常工作。

    现在、引导加载时没有任何问题。

    我想知道、这可能是什么原因、为什么只有在复制整个应用程序代码后才会出现?

    [/报价]

    谢谢。此致

    Geetha

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

    您好:

    您能否验证 A2 是否在闪存 G_H 中正确编程? 您可以在 CCS 或 UniFlash 的验证映像操作中使用片上闪存工具。 如果使用调试器进行编程、A2 是否会运行?

    此致、

    马特

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

    尊敬的 Matt:

    A1 和 A2 通过调试器正确编程并运行。 当我引导多次加载 A1 时、它会正确编程。 同样、当 I bootload A2 多次时、A2 也会正确编程。

    映像引导加载过程如下所示

    a1-->a1-->a1-->a1-->a1...    以此类推

    a2-->a2-->a2-->a2-->a2... 以此类推

    在上述情况下、代码正常运行

    但是、当我按照以下过程操作时、代码不会运行、我会在这里被击打

    A1-->A2... A2 没有在此处运行

    谢谢。此致

    Geetha

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

    您好:

    感谢您对此进行了澄清、您的启动流程现在对我来说很有意义。

    还有几个问题:

    1. 能否共享 A1 和 A2 构建中的*。map 文件? 您可以在 E2E 中直接上传文件。
    2. 您是否与闪存内容一起编程 ECC?
    3. 当器件分支到 A2 时、您看到什么类型的错误(即器件处于什么状态)?  

    此致、

    马特

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

    您好:

    由于我在一个多月的时间里还没有听说过,我会假设线程已解决,并关闭线程。

    此致、

    马特