[英]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.