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.

[参考译文] TMS320F28377D:自定义引导加载程序、跳转到应用时无中断

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/626053/tms320f28377d-custom-bootloader-no-interrupts-when-jump-to-app

器件型号:TMS320F28377D

您好!  

我目前正在实施 CAN 引导加载程序、数据接收和写入阶段工作正常、最后数据的校验和应答一切正常、因此系统在新应用中跳转。 当我加载此应用程序的符号时、一切看起来都很好、我可以单步执行、初始化函数被正确调用、所有数据似乎都初始化良好。 但是、当我查看 PWM 和 ADC 的中断时、没有发生任何变化、我永远不会进入中断函数。 在初始化阶段、我尝试比较从闪存写入到 RAM 的代码、一切看起来都很好。

然后我尝试使用 CCS 重新启动应用程序、一切都运行良好... 我具有正确的 PWM 和 ADC。  

我注意到,即使我没有为 PWM 和 ADC 使用它,计时器和 CAN 的工作正常(注意:我一开始在声明时初始化 CAN 邮箱时遇到了一些问题, 数据位于 Cinit 中、跳转后未初始化、因此我将邮箱设置为 const 并在 init 函数中初始化它们)、并且它们已在引导加载程序代码中初始化、因此我尝试 在引导加载程序初始化中初始化 PWM 和 ADC。 在应用中,一切都正常工作(但我并不是这个解决方案的大粉丝!)

  我在2011年6月9日下午2:35看到另一位似乎在这个帖子上有相同问题的人:  

https://e2e.ti.com/support/microcontrollers/c2000/f/171/p/113899/683514?tisearch=e2e-sitesearch&keymatch=bootloader%20c2000%20jump#683514

但我没有说他是否能解决这个问题。  

问题似乎是在跳转后的初始化阶段、但我看不到我做了什么错误。 在跳转 I 使用 INTM 位关闭中断之前、禁用 PIECTRL 寄存器中的 PIE:

提示
IER = 0x0000;
IFR = 0x0000; 
asm (" ZAPA"); asm (" MOV @SP、#0"); asm (" PUSH AL"); asm (" POP DBGIER "); asm (" lb 0x88004");

在0x88004的跳转地址处,我定义了 一个 BEGINAPP   :origin = 0x088004,length = 0x000004 在 bootloader 的 cmd 文件中  

在  应用程序 cmd 的.sect "AppStart"内、我的 BEGINAPP 在应用程序中具有相同的地址

当我执行跳转时、系统会在主代码的开头执行、因此看起来不错。  

但我猜在缺少主代码之前还有另一个初始化阶段、此初始化阶段是在我重新启动 C2000时完成的、这就是应用程序在重新启动后应该正常工作的原因。  

您是否知道如何解决这个问题,或者解释如何执行这个初始化阶段,以便可以初始化中断?

 谢谢、  

Clement

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗯、一周多以来、我一直在努力解决这个问题、我想我在撰写此帖子20分钟后找到了解决方案...
    我没有跳到应用程序中的好位置我看到入口点符号:"_c_int00"地址:.map 中的0008b5eb、我跳到那里、似乎正常工作
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很高兴在这里你发现了你的问题! 是的、您需要转到_c_int00、它将处理某些设置项目、然后跳转到 main、而不是直接转到 main。

    此致
    Chris