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/TM4C1294NCPDT:TM4C1294NCPDT

Guru**** 2455360 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/634744/ccs-tm4c1294ncpdt-tm4c1294ncpdt

器件型号:TM4C1294NCPDT

工具/软件:Code Composer Studio

在 RTOS 分析器执行图中、我将检查示例软件的时序详细信息。 我观察到的是、当 HWI 和任务在应用程序上运行时、图形显示了时序不当的结果。 但是、如果应用程序没有从 HWI 调用的任务或任务(基于信标)、它会显示正确的时序。 图中显示 了两种场景的250us。

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

    时序不当意味着什么? 您能详细说明吗? 您显示了两个不同的执行图? 哪一个对应于应用程序上运行的 HWI 和任务? 哪一个对应于从信标调用的任务?

    为了清晰起见、您还可以更新您的主题吗?

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

    在应用程序上同时运行的 Hwi 和任务:第一个映像

    对应于从信号量:第二个图像调用的任务

    时序错误:两个应用具有相同的250us 定时器中断。 但是、在第一幅图中、图上是正确的、但如果仔细查看第二幅图(时序)、您可以看到随机时间(例如115uS /间歇/非周期性等)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、我将请我们的 TI-RTOS 专家来看看。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    "hello"任务在做什么? 您能否将项目与问题一起包括在内?

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

     为两个项目添加了 zip 文件'test'是仅具有 Hwi 的项目、而'test_with _task'项目具有 task+HWie2e.ti.com/.../ccs_5F00_project.zip

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

    问题是"hello"任务中的 printf。 ASCII 字符被写入 CIO 缓冲器。 当缓冲区已满或写入了'\n'字符时、会命中断点。 CCS 读取内容、恢复目标并将字符写入 CCS 控制台。 这会消除实时性。 删除 printf、它按预期工作。

    这就是我们推荐 System_printf (在.cfg 文件中将 SysMin 设置为支持代理)的原因。 字符位于内部缓冲区中,可通过 Tools->ROV 查看。 或者、如果您希望在 CCS 控制台上运行、请调用 System_flush (不过、请记住这将影响实时)。

    我注意到的另一件事是您手动设置计时器。 我删除了.cfg 中的 Hwi.create、而是添加了这个
    var timer0Params =新 Timer.Params();
    timer0Params.instance.name ="timer2";
    timer0Params.period = 250;
    program.global.timer2 = Timer.create (2、"&timer"、timer0Params);

    然后、在源文件中、我将其用于计时器函数。 我删除了所有 driverlib 调用以同时设置计时器(例如、我注释掉了对 hardware_init 的调用)。

    空定时器(UARg arg0)

    Semaphore_post (Semaphore0);


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

    您好 Todd、

    感谢您提供相关信息。 我将在检查上述要点后随时向您发布。

    Jay

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

    您好 Todd、

    感谢您的建议、问题与您提到的打印内容有关、已得到解决。 但是、您能否提到  .cfg 中的 Hwi.create 与您提到的替代方法有何区别? 是相同还是有很大差异

    此致、

    Jay