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.

[参考译文] TMS570LC4357:Halcogen FreeRTOS

Guru**** 2463330 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1091648/tms570lc4357-halcogen-freertos

部件号:TMS570LC4357

我创建了一个包含以下任务的项目,并按预期测试了每个任务的周期,但当我更改了任务的堆栈大小(如第二部分所示)时,我观察到的任务未按固定的周期执行。

您能否告诉我该行为的确切根源及其解决方案。

#if 0
 /* all task executes with configured period*/
         xTaskCreate(vEv_20ms1,"Test_20ms1", 1000, NULL, 23, NULL);
         xTaskCreate(vEv_50ms1,"Test_50ms1", 100, NULL, 28, NULL);
         xTaskCreate(vEv_50ms2,"Test_50ms2", 100, NULL, 25, NULL);
         xTaskCreate(vEv_100ms1,"Test_100ms1", 100, NULL, 1, NULL);
         xTaskCreate(vEv_100ms2,"Test_100ms2", 100, NULL, 1, NULL);
         xTaskCreate(vEv_100ms3,"Test_100ms3", 100, NULL, 1, NULL);
         xTaskCreate(vEv_100ms4,"Test_100ms4", 100, NULL, 1, NULL);
         xTaskCreate(vEv_100ms5,"Test_100ms5", 100, NULL, 1, NULL);
         xTaskCreate(vEv_100ms6,"Test_100ms6", 100, NULL, 1, NULL);
         xTaskCreate(vEv_500ms1,"Test_500ms1", 100, NULL, 1, NULL);
         xTaskCreate(vEv_500ms2,"Test_500ms2", 100, NULL, 1, NULL);
         xTaskCreate(vEv_500ms3,"Test_500ms3", 100, NULL, 1, NULL);
         xTaskCreate(vEv_500ms4,"Test_500ms4", 100, NULL, 1, NULL);
         xTaskCreate(vEv_1000ms1,"Test_1000ms1", 100, NULL, 1, NULL);
         xTaskCreate(vEv_1000ms2,"Test_1000ms2", 100, NULL, 1, NULL);
 #else
 /* Task lost its periodicity*/
         xTaskCreate(vEv_20ms1,"Test_20ms1", 4000, NULL, 23, NULL);
         xTaskCreate(vEv_50ms1,"Test_50ms1", 200, NULL, 27, NULL);
         xTaskCreate(vEv_50ms2,"Test_50ms2", 500, NULL, 25, NULL);
         xTaskCreate(vEv_100ms1,"Test_100ms1", 1000, NULL, 21, NULL);
         xTaskCreate(vEv_100ms2,"Test_100ms2", 1000, NULL, 18, NULL);
         xTaskCreate(vEv_100ms3,"Test_100ms3", 200, NULL, 17, NULL);
         xTaskCreate(vEv_100ms4,"Test_100ms4", 4000, NULL, 16, NULL);
         xTaskCreate(vEv_100ms5,"Test_100ms5", 500, NULL, 15, NULL);
         xTaskCreate(vEv_100ms6,"Test_100ms6", 1000, NULL, 14, NULL);
         xTaskCreate(vEv_500ms1,"Test_500ms1", 500, NULL, 12, NULL);
         xTaskCreate(vEv_500ms2,"Test_500ms2", 400, NULL, 10, NULL);
         xTaskCreate(vEv_500ms3,"Test_500ms3", 400, NULL, 8, NULL);
         xTaskCreate(vEv_500ms4,"Test_500ms4", 1000, NULL, 6, NULL);
         xTaskCreate(vEv_1000ms1,"Test_1000ms1", 1000, NULL, 4, NULL);
         xTaskCreate(vEv_1000ms2,"Test_1000ms2", 500,  NULL, 2, NULL);
#endif

仅供参考
FreeRTOSConfig.h如下所示

#define configUSE_PREEMPTION		  1
#define configUSE_PORT_OPTIMISED_TASK_SELECTION	1
#define configUSE_FPU							1
#define configUSE_IDLE_HOOK			  0
#define configUSE_TICK_HOOK			  0
#define configUSE_TRACE_FACILITY	  1
#define configUSE_16_BIT_TICKS		  0
#define configCPU_CLOCK_HZ			  ( ( unsigned portLONG ) 80000000 ) /* Timer clock. */
#define configTICK_RATE_HZ			  ( ( TickType_t ) 1000 )
#define configMAX_PRIORITIES		  ( 30 )
#define configMINIMAL_STACK_SIZE	  ( ( unsigned portSHORT ) 128 )
#define configTOTAL_HEAP_SIZE		  ( ( size_t ) 250000 )
#define configMAX_TASK_NAME_LEN		  ( 16 )
#define configIDLE_SHOULD_YIELD		  1
#define configGENERATE_RUN_TIME_STATS 1
#define configUSE_MALLOC_FAILED_HOOK  0

案例1:工作版本的最大任务几乎具有相同的堆栈和优先级
结果:工作正常
案例2:更改了堆栈和优先级
结果:工作周期异常

案例3:仅更改了与工作版本相关的堆栈大小
结果:滞留在b DataEntry

案例4:仅更改了与工作版本相关的优先级
结果:以预期的周期,正常行为执行

如果是由于数据异常,您能否指导我如何修复? 其调试过程。

配置的堆栈大于所有任务配置的总堆栈,并且任何任务中都没有功能,因此堆栈使用率可能约为20 30字节。

谢谢,此致,

Kishor

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

    您好 ,Kishor:

    案例4357案例2:更改堆栈和优先级
    结果:使用异常周期
    案例4357案例3:仅更改了与工作版本相关的堆栈大小
    结果:滞留在b DataEntry

    案例3是否使用与案例2相同的堆栈大小?  

    请查看映射文件,该文件将告诉您堆和数据的可用RAM。 当数据中止时,请检查数据中止状态和地址(CP15寄存器)以及abt_R14。

    https://software-dl.ti.com/hercules/hercules_docs/latest/hercules/FAQ/FAQ.html#troubleshooting-abort-exceptions

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

    感谢您的回复,

    到目前为止,没有一个问题得到解决,我已经分享了该项目,它在1.5 几个月后一直处于待处理状态。 请逐一解决。  

    案例3是否使用与案例2相同的堆栈大小? =>是的

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

    请在附件中找到地图文件,

    如果您在地图文件中解释内存利用率,这将很有帮助。  

    此致,

    Kishor

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

    我希望你所说的是这些登记册。

    此致,

    Kishor

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

    您好,您能指导我解决问题吗?

    此致,

    Kishor

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

    您好 ,Kishor:

    我可以下载您的代码的链接吗?  

    状态值(0x80D)表示代码正在尝试将数据写入受保护的位置。 您是否将任务切换到用户模式? SRAM的MPU设置在用户模式下为只读。

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

    我已附上该项目,请在您成功下载后确认。

    此致,

    Kishor

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

    您好,Kishor:

    我没有得到链接。

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

    我已将项目附加在消息中。 如果附件不起作用,请告诉我共享项目的方法。

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

    D:\Project_OS\FOS\02

    我尝试了所有方法,但无法共享zip文件,请告诉我可能的方法。

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

    您好,Kishor:

    您可以将文件附加到e2e帖子:

    https://e2e.ti.com/support/site-support-group/site-support/f/site-support-forum/76.1619万/faq-how-do-i-attach-a-file-or-link-to-my-post/3756691?tisearch=e2e-sitesearch&keymatch=attached%2525252520file#3756691</s>375.6691万 2525252520375.6691万

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

    我尝试了所有这些文件,但没有一个文件可以附加完整项目的zip文件夹。

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

    我不确定e2e螺纹的附件是否有大小限制。 您可以将小文件附加到e2e线程吗?

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

    您好,王先生,
    我是Kishor,请检查您是否收到附件。

    此致,
    Kishore2e.ti.com/.../test-file.txt

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

    我认为我可以附加文件,但不能附加项目,请告诉我如何共享项目。 我所面对的问题很多,我想这是相关的。

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

    您好,Kishor:

    我没有收到带附件的电子邮件。  

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

    无法在论坛中附加项目,请提供备用方法或您的电子邮件ID。

    此致,

    Kishor

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

    您好,Kishor:

    我像您一样运行了15项任务的测试,但我没有数据中止。 附件是我的工作主文件。  

    在我的测试代码中

    当abc=0时,为原始设置

    当abc=1时,堆栈和优先级发生更改

    当abc=2时,任务已更改,但优先级保持不变

    案例4357案例2:更改堆栈和优先级
    结果:使用异常时段

    您如何衡量周期?

    case3:4357:仅更改了与工作版本相关的堆栈大小
    结果:滞留在b DataEntry

    我没有数据中止。  

    e2e.ti.com/.../3718.HL_5F00_sys_5F00_main.c