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.

[参考译文] RTOS/TMS320F2.8335万:调试问题

Guru**** 2564565 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/640751/rtos-tms320f28335-debugging-issue

部件号:TMS320F2.8335万

工具/软件:TI-RTOS

在应用程序中使用调试器时出现问题。  以下是有关我们的应用程序的一些相关详细信息:

  1. 该处理器是TMS320F2.8335万。
  2. 我们尝试使用XDS100v2和XDS510LC调试器,结果相似。
  3. 我们使用的是CCS IDE 6.1 .0,BIOS版本6.35 .4.50 和XDC版本3.25 .4.88

我们可以先让调试器连接,然后在main的开头显示它。

调试器可以在main开始时逐步执行代码,这一点非常好。

一旦它到达BIOS_START()函数,代码就会出现异常,我们无法再正确调试。  如果我们暂停代码,它就会停止,并且没有可用的内存地址源,它就会停止,而程序集步进就会停留在该地址上。

当我们在任务或HWI中放置断点时,我们知道应该会定期出现断点,但断点从未到达,因此BIOS无法正常启动,或者至少它从未执行任务,HWI也未出现。

原始开发人员确实有一个十六进制文件,该文件是根据相同的源代码创建的,并且该文件可以在开发板上正确运行。  当我们构建十六进制文件时,只在主板中编程它也不能正确运行,因此它可能是某个东西没有正确构建。  十六进制文件的大小不相同,文件比较显示它们不是同一个文件。

我们的理论是某种例外或任务中可能发生的叠加流动,尽管我们对此不确定。

下面有一些屏幕快照,显示代码最初连接到调试器,从main开始,逐步浏览初始主C代码,然后到达BIOS_START(),代码由于某种原因在工作区中脱落。

希望有人能提出一些建议来尝试,这可能会帮助我们正确地实现这一目标。 谢谢你。

 

 

 

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

    e2e.ti.com/.../PDDebugScreenshots.docx

     

     

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

    任务或Hwis中没有断点会受到影响吗? 代码跳到的位置(地址0x3ff9fa)是引导ROM中的非法指令处理程序。 您是否能够进入BIOS_START()来了解它发生在哪里?

    processors.wiki.ti.com/.../Interrupt_FAQ_for_C2000

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

    您好,Whitney,

    不会,断点永远不会命中。 在调试过程中,在ROV中,在Task下,模式为'invalid mode',我不确定是什么原因造成的。 请参阅屏幕截图。 谢谢你。

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

    Anjali

    几个问题:

    1.当您暂停并拍摄上面显示的"无效模式"的ROV快照时,PC在哪里? 我假设这是在BIOS退出的异常之后。

    2.您是否已尝试将50 % 堆栈大小添加到每个任务堆栈(一次一个)并重新构建/运行以查看是否有区别?

    3.您有多少个闲置功能? Idle有自己的堆栈,因此请将其包含在上面的"更多堆栈"练习中。

    4.如果您在最高PRI任务(sys_monitor_...)的开头(在while循环之前)设置了断点 (哪个应该在BIOS_START()之后立即运行),您说的是永远不会到达那个断点?

    5.当您单步进入BIOS_START()(而不是步过)时,是否有任何迹象表明在抛出异常时正在执行哪个指令? 地址0x3F_FFC0是引导ROM矢量表的开头。 如果VMAP=1,则启用此功能;如果ENPIE =0,则禁用此功能。 不确定是否有任何轴承。 但错误中指示的地址是“0xFFFFFF_FFF_FFFFFFF_FFC0”,这是此内存映射的另一面。

    很奇怪。 在运行任何任务之前,我想在BIOS_START()开始时找出可能导致异常的原因。 它几乎闻起来像linker.cmd文件问题。 任务和堆栈位于L4和L6 SARAM中,因此没有问题的迹象。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    main()中的任何呼叫是否直接更改引导程序表? 如果是,他们是使用TI-RTOS中的Hwi模块还是通过driverlib调用(或其他方法)直接调整矢量表?

    托德