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.

[参考译文] CCS/TMS320C28345:8.2

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/861306/ccs-tms320c28345-8-2

器件型号:TMS320C28345

工具/软件:Code Composer Studio

我从 JTAG 下载我的输出文件、它运行得很好。 但是、我通过引导 ROM 从 SCI 下载它、它会进入非法 ISR 并重复复位。

相同的输出文件会产生不同的结果。 这两种操作之间是否有任何差异?

谁能告诉我原因?

急切地等待回复!

谢谢!

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

    由于美国假期、您可以在12月3日之前收到回复

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

    你好

    确保项目中的应用程序入口点(和项目属性)设置正确。

    您可以在 CCS 中设置断点、希望引导加载程序跳转至该断点、以验证它从正确的地址开始。

    此致

    Chris

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

    [引用用户="Christopher Chiarella "]

    你好

    确保项目中的应用程序入口点(和项目属性)设置正确。

    您可以在 CCS 中设置断点、希望引导加载程序跳转至该断点、以验证它从正确的地址开始。

    此致

    Chris

    [/报价]

    你好

    感谢您的回复! 我已经测试了项目、它可以在 正确的地址跳转并在开始时正常运行、但它在中间的某个位置复位。 我需要在某些代码始终由越来越多的非法 ISR 重置时进行修复。   不过  、这些线路通过 JTAG 下载方式是正确的、我想知道 JTAG 和 SCI 引导室方式之间的区别。 也许关键是差异。

    请举手!

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

    你好

    在这种情况下、请确保正确初始化变量、并且不希望某些值为零或类似值。 还要确保入口点位于 c_init()所在的位置,而不是 main()。 如果您使用的是"code_start"文件、则应该已经是这种情况。

    如果通过 JTAG 加载并运行,CCS 通常会使您直接进入 main(),而绕过 c_init()函数,该函数会初始化某些静态值、数组等

    此致

    Chris

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

    [引用用户="Christopher Chiarella "]

    你好

    在这种情况下、请确保正确初始化变量、并且不希望某些值为零或类似值。 还要确保入口点位于 c_init()所在的位置,而不是 main()。 如果您使用的是"code_start"文件、则应该已经是这种情况。

    如果通过 JTAG 加载并运行,CCS 通常会使您直接进入 main(),而绕过 c_init()函数,该函数会初始化某些静态值、数组等

    此致

    Chris

    [/报价]

    你好

    感谢您的回复! 我的意思是  、每次移除 JTAG 插头后、它都可以在电源复位时正常运行。  它始终运行、没有任何错误。 但是、我通过使用 SCI 的 C2Prog 工具下载"Debug"文件夹中的输出文件、它始终处于复位状态。  然后 我 将 PC 设置为 InitBoot、它可以跳转到_cint00和 main()、 但 它始终会复位、我假设它进入非法 ISR、看门狗会复位电路板。 我想知道为什么、 这是如此奇怪!

    期待解决我的问题! 谢谢!

    Yukie

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

    你好

    如果您在通过 JTAG 加载应用程序时对其执行存储器转储、而在通过 C2Prog+SCI 加载应用程序时、它们是否匹配?

    您能看到在连接调试器的情况下单步执行时触发非法 ISR 吗?

    此致

    Chris

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

    [引用用户="Christopher Chiarella "]

    你好

    如果您在通过 JTAG 加载应用程序时对其执行存储器转储、而在通过 C2Prog+SCI 加载应用程序时、它们是否匹配?

    您能看到在连接调试器的情况下单步执行时触发非法 ISR 吗?

    此致

    Chris

    [/报价]

    你好

    再次感谢您的回复!

    如果没有 JTAG 连接、它可能会跳转到 main()、因为我 可以在 生成过程中的初始化过程中通过 UART 接收一些字符。 我确定它已成功跳过、但我收到在初始化中重复发送的字符。 他们应该在乞丐中被接待一次,所以我以为它会因为 某件事而复位。 当我 更改 某些代码( 例如,与 寄存 器本身交换指针 等)时 ,它可以 向前运行,但它始终在中间的某个位置复位。  似乎有很多错误使它成为非法 ISR。 由于没有 JTAG、因此获取复位位置非常不方便。 我 几乎疯狂地获取无限的复位位置并 以另一种方式更改代码。  但是 、它可以在 JTAG 下载方式中正常运行。 可能由于其他原因出现了问题。

    C2Prog 之所以很好    、是因为我下载了另一个用于测试的小输出文件到同一芯片、它可以正常运行。

    祝你一切顺利!

    Yukie

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

    你好

    您可以在 main()的开头放置一个无限循环,发送应用程序并启动(无 JTAG)。 然后使用目标配置文件连接到器件(但是、在目标配置的高级设置下、选择 CPU 并删除初始化 GEL 脚本的路径、然后保存)。 这样、您就可以连接到器件、而无需 GEL 将其复位。 连接后、您可以使用应用程序输出文件加载符号、然后单步执行(从该无限循环位置开始)。 这可能有助于您弄清哪里出现了问题。

    此致

    Chris

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

    [引用用户="Christopher Chiarella "]

    你好

    您可以在 main()的开头放置一个无限循环,发送应用程序并启动(无 JTAG)。 然后使用目标配置文件连接到器件(但是、在目标配置的高级设置下、选择 CPU 并删除初始化 GEL 脚本的路径、然后保存)。 这样、您就可以连接到器件、而无需 GEL 将其复位。 连接后、您可以使用应用程序输出文件加载符号、然后单步执行(从该无限循环位置开始)。 这可能有助于您弄清哪里出现了问题。

    此致

    Chris

    [/报价]

    你好

    非常感谢您对仿真的指导! 我发现一个问题、即 F8无法到达某个函数中的断点(RESUME)、它将复位。 但是 、可以通过 F5来实现、并且不进行复位。 我不知道如何解决这个 问题。

    我想知道 COFF 文件项目的配置是否与 SCI 加载相匹配。 GEL 文件将在 JTAG 连接开始时配置 CPU。 但上拉  JTAG 并复位电源、我的代码正常运行。  我认为代码没有问题。  我想知道  JTAG 和 SCI 引导 ROM 下载之间的配置是否存在差异。

    祝你一切顺利!

    Yukie   

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

    你好

    如果您在使用"resume"时看到复位与单步执行代码时的复位、通常意味着看门狗超时。 是否启用了看门狗? 如果是、请尝试禁用它、然后查看这是否可以消除您的问题。

    如果 JTAG 和 SCI 映像之间存在差异、则可以执行存储器转储以进行比较。

    此致

    Chris

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

    [引用用户="Christopher Chiarella "]

    你好

    如果您在使用"resume"时看到复位与单步执行代码时的复位、通常意味着看门狗超时。 是否启用了看门狗? 如果是、请尝试禁用它、然后查看这是否可以消除您的问题。

    如果 JTAG 和 SCI 映像之间存在差异、则可以执行存储器转储以进行比较。

    此致

    Chris

    [/报价]

    你好

    感谢您的建议! 似乎看到了希望!

    我发现  .econst 段的代码没有被正确写入。  它们 都位于映射文件中。 但该部件为 0xFF。 但是、从 JTAG 可以得到这些地址中的代码。 我在我的 cmd 文件中添加.const 段。 但它是无用的。 我感到困惑。

    此外、您能否告诉我如何执行内存转储。 谢谢!

    最好的酒店!

    Yukie

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

    你好

    如果可以、请附加常量的屏幕截图并附加链接器命令文件。 此外、您使用的编译器版本是什么?

    对于内存转储、请在 CCS 中转到 View->Memory Browser、然后在该窗口的右上角找到保存按钮。 您可以在此处指定起始地址和长度。 长度是字数、请确保使用十进制而不是十六进制值。

    此致

    Chris

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

    [引用用户="Christopher Chiarella "]

    你好

    如果可以、请附加常量的屏幕截图并附加链接器命令文件。 此外、您使用的编译器版本是什么?

    对于内存转储、请在 CCS 中转到 View->Memory Browser、然后在该窗口的右上角找到保存按钮。 您可以在此处指定起始地址和长度。 长度是字数、请确保使用十进制而不是十六进制值。

    此致

    Chris

    [/报价]

    你好

    感谢你的帮助! 我可以执行内存转储!

    昨天、我在函数"setState"中设置了断点、并发现未正确初始化 struct truenewcommunicationstate。 然后、我在"Disassembly"窗口中选中了它。 初始化值似乎设置为0x3334cc、如 pic1所示。然后我检查了这个地址、 并填充了0xFFFF 、 它应该 是01 00 00 00 00 00 00 00  00 、然后我发现 从存储器中的地址0x3334BF  开始、所有地址都填充了0xFF。 此部分是 codestartbrach 文件的开头。 我将 cmd、map、out 文件和其他图片附加到 file.rar 的末尾

    祝你一切顺利!

    Yukie

    e2e.ti.com/.../5773.file.rar

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

    你好

    感谢您的分享!

    当您通过 ROM SCI 引导加载程序加载应用程序时、是否首先传输闪存内核应用程序? ROM 引导加载程序不对闪存进行编程、只将应用程序写入 RAM。 如果您要传输共享的应用程序、希望 ROM 引导加载程序将其编程到闪存中、则不会发生这种情况。

    此致

    Chris

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

    [引用用户="Christopher Chiarella "]

    你好

    感谢您的分享!

    当您通过 ROM SCI 引导加载程序加载应用程序时、是否首先传输闪存内核应用程序? ROM 引导加载程序不对闪存进行编程、只将应用程序写入 RAM。 如果您要传输共享的应用程序、希望 ROM 引导加载程序将其编程到闪存中、则不会发生这种情况。

    此致

    Chris

    [/报价]

    你好

    感谢您的建议! 我将检查该代码、但我仍然感到困惑、因为并非我的所有代码都丢失了、但其中只有一部分代码是0x3334BF 之后的0xFF。 如果 ROM SCI 引导加载程序仅将应用程序写入 RAM、则所有代码都不会编程到闪存。我对吗?

    祝你一切顺利!

    Yukie

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

    你好

    在尝试 SCI 加载程序之前、闪存可能包含您之前通过 JTAG 刷写的代码。

    此致

    Chris

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

    [引用用户="Christopher Chiarella "]

    你好

    在尝试 SCI 加载程序之前、闪存可能包含您之前通过 JTAG 刷写的代码。

    此致

    Chris

    [/报价]

    你好

    感谢您的回复!

    这不是我第一次将应用程序写入闪存。 我已将一个小型应用程序下载到 FLASHA 并成功。  虽然我肯定不太 熟悉 引导 Rom 程序。 如果 C2prog 只将应用程序写入 RAM、那么闪存的部分为什么被擦除。 您能告诉我如何使用 sci 引导 ROM 将应用程序编程到闪存吗? 谢谢!

    祝你一切顺利!

    Yukie

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

    [引用用户="Christopher Chiarella "]

    你好

    在尝试 SCI 加载程序之前、闪存可能包含您之前通过 JTAG 刷写的代码。

    此致

    Chris

    [/报价]

    你好

    我自己解决了我的问题! 谢谢大家! 我的 cmd 文件有问题。

    此致!

    Yukie