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:我们是否必须使用 RTOS 任务来运行 IPC MessageQ 示例02?

Guru**** 2539500 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/696509/rtos-do-we-have-to-use-rtos-task-for-running-ipc-messageq-example-02

Thread 中讨论的其他器件:OMAPL138

工具/软件:TI-RTOS

大家好、我有一个在 OMAPL138 LCDK 上工作的基本 IPC 示例。

SDK 版本为 v4.0.0.4、Linux 版本为4.9.28

我正在尝试修改此示例,这样 smain 函数就不使用 TI-RTOS 任务。 这是可行的吗? 因为我无法使其正常工作??  

/*
*==== main ====
*
int main (int argc、Char* argv[])

ERROR_Block EB;
Task_Params taskParams;

log_print0 (Diags_entry、"->main:");

/*必须在使用错误块之前对其进行初始化*/
ERROR_INIT (&EB);

/*创建主线程(BIOS 上的 main 中未启用中断)*/
Task_Params_init (&taskParams);
taskParams.instance->name ="smain";
taskParams.arg0 =(UArg)argc;
taskParams.arg1 =(UArg)argv;
taskParams.STACKSIZE = 0x1000;
Task_create (smain、&taskParams、&EB);

if (Error_check (&EB)){
system_abort ("main: Failed to create application startup thread");

/*启动调度程序,这永远不会返回*/
BIOS_start();

/*永远不应该来这里*/
log_print0 (Diags_exit、"<- main:");
返回(0);

/*
*==== smain ====
*
空 smain (UARg arg0、UARg arg1)

INT STATUS = 0;
ERROR_Block EB;
bool 运行= true;

log_print0 (Diags_entry | Diags_info、"->smain:");

ERROR_INIT (&EB);

/*初始化模块*/
SERVER_INIT();

/*打开 Diags_info trace */
diags_setMask ("Server+F");

/*永久循环*/
while (running){

/*开始服务器阶段*/

/*服务器设置阶段*/
status = Server_create();

如果(状态< 0){
离开;

/*服务器执行阶段*/
status = Server_exec();

如果(状态< 0){
离开;

/*服务器关闭阶段*/
status = Server_delete ();

如果(状态< 0){
离开;

/*终端服务器阶段*/

}/*(运行时)*/

/*完成模块*/
SERVER_EXIT();

休假:
Log_Print1 (Diags_exit、"<- smain:%d"、(IArg)状态);
返回;

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

    我已通知软件团队。 他们将直接在此处发布反馈。

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

    这是不可能的。 不想使用任务的原因是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sahin、

    到目前为止、我们设计 IPC 的方式是 DSP 等待通过 IPC 接收初始化数据、然后它开始运行 DSP 应用。

    但是、如果我使用该任务、那么我需要更加关注其他任务的优先级。 我已经看到 DSP 在运行的某个时间一直处于停滞状态。 因此、为了使其保持简单、就像我们将 IPC 仅用于 init 通信一样、我认为不使用任务很容易。

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sahin、您好、我正在监控 CPU 负载百分比、由于某种原因、5-10分钟后、它的读数为0%。 不知道为什么这么做??
    我使用 HWI 使 LED 闪烁、这似乎起作用了、并使用 EDMA 通过串行端口打印 CPU 负载、EDMA 的起始打印20%、然后在10-15分钟后打印0%。 有什么想法导致这种情况?>
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Mitesh、

    确保在 cfg 文件中启用 IdleTask、并确保空闲任务栈足够大。

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

    您好、Sahin、只需选中、是的、它已启用、堆栈为0x800。 谢谢。