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/TMS570LS1224:有关集成到 TMS570LS1224的 RTOS 的问题

Guru**** 2462870 points
Other Parts Discussed in Thread: HALCOGEN, TMS570LS1224

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/655470/rtos-tms570ls1224-the-question-about-the-rtos-integrated-to-the-tms570ls1224

器件型号:TMS570LS1224
主题中讨论的其他器件:HALCOGEN

工具/软件:TI-RTOS

大家好、

  我想将 RTOS 集成到 tms570ls1224芯片中,我使用了 HalCogen 进行配置。但当我构建测试任务时,结果是成功的。

1#我的配置步骤为 HalCoGen 帮助、如下所示:

2#

 我的项目如下所示:

/*用户代码开始(2)*/

#define START_TASK_PRIO 1 //任务优先
#define START_STK_SIZE 128
TaskHandle_t StartTask_Handler;
void start_task (void *pvParameters);

#define Task1_task_PRIO 3.
#define Task1_STK_SIZE 128
TaskHandle_t Task1Task_Handler;
void Task1_task (void *pvParameters);

#define task2_task_PRIO 3.
#define task2_STK_SIZE 128
TaskHandle_t Task2Task_Handler;
void task2_task (void *pvParameters);


/*用户代码结束*/

int main (空)

/*用户代码开始(3)*/
//rtiInit();
//vimInit();

_enable_interrupt_();

//----------------------------------------------
xTaskCreate ((TaskFuncion_t) start_task、
(const char*)"start_task"、
(uint16_t) start_stK_size、
(void*) NULL、
(UBaseType_t) start_task_PRIO、
(TaskHandle_t*)&StartTask_Handler);

vTaskStartScheduler();
//vTaskStartScheduler();

/*用户代码结束*/

返回0;


/*用户代码开始(4)*/

void start_task (void *pv 参数)

taskENTER_critical ();

xTaskCreate ((TaskFuncion_t) Task1_task、
(const char*)"Task1_task"、
(uint16_t) Task1_STK_SIZE、
(void*) NULL、
(UBaseType_t) Task1_task_PRIO、
(TaskHandle_t*)&Task1Task_Handler);

xTaskCreate ((TaskFuncion_t) task2_task、
(const char*)"task2_task"、
(uint16_t) task2_stK_size、
(void*) NULL、
(UBaseType_t) task2_task_PRIO、
(TaskHandle_t*)&Task2Task_Handler);
vTaskDelete (StartTask_Handler);
taskEXIT_critical ();

void Task1_task (void *pvParameters)

char Task1_num=0;


while (1)

Task1_num++;
if (task1_num=5)

if (Task2Task_Handler!=空)

//vTaskDelete (Task2Task_Handler);



vTaskDelay (10);


void task2_task (void *pv 参数)

char task2_num=0;

while (1)

task2_num++;


vTaskDelay (100);

/*用户代码结束*/

3#错误结果如下所示:

它有什么问题? 谁能帮助我!

                                                                                   诚挚的问候!  

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

    我看到您在任务中创建任务。 xTaskCreate 函数是一个特权函数、要执行此函数、您需要特权访问。 默认情况下、在 FreeRTOS 中创建的任务仅具有用户访问权限。 要启用特权访问、您可以将宏 portPRIVILEGE_BIT 设置为任务优先级。
    有关更多详细信息、请参阅 xTaskCreate 函数的 API 文档。
    因此、我建议您在创建任务 start_task 时将 PRIVILEGE_bit 设置为任务优先级或将其导出为任务优先级

    希望这对您有所帮助!

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

    您好 、Veena Kamath、

    感谢 您的回复!

    正如您所说的,我更改了创建任务的方式,但结果仍然不成功。

    1#我的 HALCoGen 配置如下所示:

    2#结果与之前相同。

    3#附件是我的项目和附件中的 HALCoGen 项目,我不知道如何解决它。

    e2e.ti.com/.../8875.freertos_5F00_tms570_5F00_1.rar

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

    我将尝试在我的末尾运行项目、看看问题是什么。
    同时、当您运行代码时、它是否输入了任务1和2?

    谢谢、此致、
    Veena
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Veena Kamath、
    非常感谢!
    在我运行代码时,它是否输入了任务2,然后输入了该错误。


    最好的爬梯!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这只是一个猜测。 您是否使用了正确的运行时支持库? 它需要与您的目标硬件和构建环境相匹配。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Veena Kamath、

     我的朋友! 您还有 其他方法来解决它吗?

     

    诚挚的问候!

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

    我认为我发现了这个问题。 vTaskDelay 是一个特权函数。 为了启用执行这个函数、FreeRTOS 提供了一些 MPU 包装程序函数来提升特权。 出于某种原因、它在您的情况下未使用此包装函数。 它尝试直接执行延迟函数、这会导致中止。
    您能否删除在主文件中包含的 MPU_wrappers 头文件。 我认为这应该可以解决您的问题。

    谢谢、此致、
    Veena
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Veenna Kamath、
    非常感谢! 我解决了! 但我不确定为什么 MPU 包装程序函数会提高特权?


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

    您创建的任务没有特权访问权限、它以用户模式运行。 FreeRTOS 中提供的所有内核函数(包括 delay 函数)都位于特权代码部分。 您需要特权访问才能执行它们。 为了使能该功能、FreeRTOS 具有一些包装程序函数、这些函数可提高权限、执行函数并返回用户模式。

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

    此致!
    李伊登