freertos多任务调度

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

freertos多任务调度

194,026 Views
jarman_zhou
Contributor I

Hi,@kerryzhou

请教一个问题,我现在有两个任务,一个是SAI的任务,一个是HTTP的任务,SAI任务的优先级我设置的是6,,因为SAI任务里是一个while循环,没有任何delay,导致cpu无法调度到http的任务。但是如果我在SAI任务里加上vtaskdelay,就会导致音频处理异常。

我该如何做,既不影响SAI音频的正常处理,也能运行其他任务?

0 Kudos
16 Replies

193,884 Views
kerryzhou
NXP TechSupport
NXP TechSupport

如果可以的话,还请你把你的项目信息私信message发我,这样我复现之后,也好带着你的项目信息去找我们专家帮忙一起分析。谢谢。

0 Kudos

193,884 Views
kerryzhou
NXP TechSupport
NXP TechSupport

你看我,怎么添加路径,总是有问题:

kerryzhou_0-1689329217977.png

kerryzhou_1-1689329276977.png

 

修改后的路径,你看看和你有什么不同。

最好clean之后,你自己解压看看有没有问题,没问题你再给我。

 

0 Kudos

193,884 Views
kerryzhou
NXP TechSupport
NXP TechSupport

最好能给我个我这边能直接跑的工程,这样我有想法能直接修改了去验证,并且我可以找我们内部专家一起帮忙看你的问题。

最近忙的有空搞你的工程了,所以还是希望能拿到你的EVK上直接能跑的工程包。

你可以告诉我你使用的MCUXPresso 版本,SDK版本,这样我们保证能一致。

0 Kudos

194,009 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi @jarman_zhou ,

   你这个问题,能在EVK上复现吗?

  如果能复现,你一并发给我,这两天我带着你另外一个帖子一起测试,这个应该和freertos的调度有关,原则上,SAI的调度不需要完全占用CPU。可能lwip那边task占用的太长导致播放卡顿,这个是可以通过调节去解决的,具体我要看下你的代码情况。

 

Best Regards,

Kerry

0 Kudos

193,995 Views
jarman_zhou
Contributor I

Hi,@kerryzhou

因为我不是在EVK板上进行开发,CODEC用的不一样。

附件中我还是将我的工程切换到了EVK板的CODEC运行,大致就是采集-输出的任务,再加一个http的任务,附件中SAI的任务是在全速运行,并且我加了一些基本算法,声音是正常的,但是此时lwip相关的任务是无法调度的。

拿着时候是不是SAI的任务就要让出CPU?但是我试过在任务中加Vtaskdelay,或者使用信号量的方式,只要web页面进行访问,都会影响到SAI音频的正常运行。

 

0 Kudos

193,972 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi @jarman_zhou ,

  感谢你的问题更新。

  我想问下,你现在的声音失真,和这个加了lwip的问题是不是一个问题?

https://community.nxp.com/t5/i-MX-Processors/RT1021-SAI-TDM-audio-abnormal/td-p/1667825

  就是你两个问题是不是一个问题,还是两个问题,如果是一个问题,我就直接debug你这个帖子的代码了。

Best Regards,

kerry

0 Kudos

193,969 Views
jarman_zhou
Contributor I

Hi,@kerryzhou

1.另外一个帖子的失真问题我在自己的项目中已经不存在了,单独的sai任务已经能够正常处理音频,具体的解决方案我也不是太清楚,主要是调整了堆栈的大小。那个问题可以先不用管了。

2.现在主要的问题是我这个帖子的代码,加了lwip的http服务之后,cpu的调度问题。

代码中我加了一些算法

0 Kudos

193,950 Views
kerryzhou
NXP TechSupport
NXP TechSupport

有些编译问题,你看看你这个arm_math.h放哪里了,给我我跑下。

kerryzhou_0-1688725984646.png

 

Best Regards,

Kerry

 

0 Kudos

193,932 Views
jarman_zhou
Contributor I

Hi,@kerryzhou

路径:evkmimxrt1020_power amplifier\CMSIS\DSP\Include

0 Kudos

193,898 Views
kerryzhou
NXP TechSupport
NXP TechSupport

楼主你好,你这个工程你那边编译有问题吗?

我这边编译很多问题,然后添加了缺失的文件路径,但是还是有问题。

可能这个工程本来是在你自己的平台跑,然后你移植到EVK的原因。

所以我现在都没跑起来,然后我直接看你的代码了。你的代码确实还是融合蛮多内容的。我看了你的sai优先级是比以太网的优先级要高的。如果你配置以太网优先级高些,是不是http就能跑了。

sai任务里面加delay确实是会影响到音频处理,这个应该是你不加其他task也有影响吧

我觉得你可以试试http的任务优先级比sai高试试,看看是否有影响。

目前我这边可能没法直接测试,因为工程报错太多了,所以直接看代码给你思路,你自己那边调试为主。

 

Best Regards,

Kerry

 

 

0 Kudos

193,894 Views
jarman_zhou
Contributor I

Hi,@kerryzhou

我编译是没有问题的,并且已经在EVK板子上运行并测试过了。

我修改过sai的优先级,是不行的,因为sai的任务中是没有delay的,它会一直占用cpu,不管其他任务的优先级有多高都是无法获得cpu的。

所以现在就是要解决如何让sai任务能够让出cpu给到其他任务运行,不管有没有其他任务,sai里面加delay肯定是不行的

0 Kudos

193,890 Views
kerryzhou
NXP TechSupport
NXP TechSupport

你IDE是什么版本?看上去我这边拿到你的工程,已经缺失了很多路径定义。

你要么把你的工程clean下再打包发我,我再试试看。

你那边如果加vtaskdelay,时间小一点,不加http的任务,是否音频就已经影响了?

 

 

0 Kudos

193,884 Views
jarman_zhou
Contributor I

Hi,@kerryzhou

我的IDE MCUXpresso IDE v11.5.1 [Build 7266] [2022-04-13]

我这边把我发给你的工程重现导入到IDE中也发现好多配置都变了,属性里可以看到头文件的路径也丢失了一部分,链接的库文件也清空了,不知道什么原因,可能需要根据编译错误提示手动把路径添加进去了。

sai任务我试过加vtaskdelay(1),就已经会影响音频了,没有其他任务并行。

0 Kudos

193,881 Views
kerryzhou
NXP TechSupport
NXP TechSupport

果然,IDE太老了,有bug,你下个新的V11.7的,你再打开你的工程试试,如果没问题,你再打包给我。

 

0 Kudos

193,677 Views
jarman_zhou
Contributor I

Hi,@kerryzhou

抱歉,最近一直在忙项目,你打开工程切换到Release编译试试,可能你那边默认是Debug所以编译有各种问题

0 Kudos

193,672 Views
kerryzhou
NXP TechSupport
NXP TechSupport

欢迎归来!

你上次说你自己那边也有问题。

你自己那边解压一个测试看看,是否报错?

还请给我一个能够编译完全没错误的,这样我好安排时间给你测试,并查找问题。

另外,因为这个帖子又过很久没有更新,如果可以,你那边能够编译没有问题的代码,帮忙建一个新帖子,然后放上附件,因为我们的问题case解答有时效,不能开贴时间太长,还请谅解。

 

0 Kudos