簡體   English   中英

FreeRTOS 優先級 1 是特殊的嗎?

[英]FreeRTOS priority 1 is special?

FreeRTOS 優先級 1 是特殊的嗎?

在我的系統中,我有 6 個優先級 0-5。 我知道 0 的空閑專業人士。

我在 1 點分配任務,在 2-5 點分配其他任務。從 cpu 時間和 IDEL pro 信息,我可以知道 cpu 有足夠的時間來完成所有任務。

我發現了一個問題,1處的任務不能在正確的時間工作,頻率是10Hz,但我發現有時它不起作用。 可能是 8 或低於 10,甚至低於 1Hz。

當我將任務設置為 2 時,可以在 10Hz 下工作。

代碼結構如下:

void SYS_MONITOR::run(){
    int ret = 0;

    while(1){
        vTaskDelayUntil(&last_wake_time, SYS_MONITOR_RUN_INTERVAL_MS/portTICK_RATE_MS);
dosomething....
}
ID  State   Prio    Mark    CPU(%)      Name

1   S   1   261 0.0000000   God
2   R   0   109 69.6136779  IDLE
3   S   5   470 3.9053585   Tmr Svc
...
...
44  B   2   179 0.0242588   SYS_MONITOR_run
Heap   : Total 491520   , Used 193696   , Remain 297824
DmaHeap: Total 16384    , Used 2048 , Remain 14336

沒有足夠的信息來回答這個問題。 通過查看您擁有的任務數量,您的設置非常大。

一件事 :

1   S   1   261 0.0000000   God
 .....
4   B   2   179 0.0242588   SYS_MONITOR_run
5   R   1   303 0.0142761   SYS_CLI_SERV_run

您至少有 2 個優先級為 1 的任務。 如果您的 SYS_MONITOR_run 也是 1 並且在您碰撞后開始“更好地”工作,那么它的優先級為 2(更高)也就不足為奇了。

這取決於您的調度程序配置如何讓同等優先級的任務有機會運行,例如:您是否對同等優先級的任務進行時間切片循環或 FIFO? 那是一個。 ...

第二,您的設置很復雜(44 個任務!)而且信息太少,無法真正回答您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM