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.
工具/软件: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
你好
感谢您的分享!
当您通过 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