色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【freeRTOS開發筆記】關注創建任務時傳入優先級數值問題

嵌入式物聯網開發 ? 來源:嵌入式物聯網開發 ? 作者:嵌入式物聯網開發 ? 2022-07-11 09:13 ? 次閱讀

1 前言

最近博主在做一些適配freeRTOS的項目,簡單來說就是從別的RTOS平臺遷移到freeRTOS平臺。 由于之前的代碼都是可用的,憑經驗我們認為只需要將OSAL的接口重新封裝一下,理論上上層的邏輯應該問題不大;但是我們沒想到的卻是在OSAL層適配的時候,遇到了一些之前沒有考慮到的問題。

2 遇到的問題

這個問題主要的體現就是在創建任務的接口調用上,freeRTOS的接口原型為:

BaseType_t xTaskCreate( TaskFunction_t pxTaskCode,
                            const char * const pcName,     /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
                            const configSTACK_DEPTH_TYPE usStackDepth,
                            void * const pvParameters,
                            UBaseType_t uxPriority,
                            TaskHandle_t * const pxCreatedTask ) PRIVILEGED_FUNCTION;

我們關注下第5個參數uxPriority,這個參數就是指定任務的優先級。 我們都知道freeRTOS是基于任務優先級來進行調度的,創建任務時指定的任務優先級直接影響任務響應的實時性。 早前我們是使用AliOS,功能組件代碼也都是使用AliOS的創建任務的API

/**
 * Create a task.
 *
 * @param[in]  task        handle.
 * @param[in]  name        task name.
 * @param[in]  fn          task function.
 * @param[in]  arg         argument of the function..
 * @param[in]  stack_buf   stack-buf: if stack_buf==NULL, provided by kernel.
 * @param[in]  stack_size  stack-size in bytes.
 * @param[in]  prio        priority value, the max is RHINO_CONFIG_USER_PRI_MAX(default 60).
 *
 * @return  0: success, otherwise: fail.
 */
int aos_task_new_ext(aos_task_t *task, const char *name, void (*fn)(void *),
                     void *arg, int stack_size, int prio);

這樣在做OS層接口的轉換的時候,優先級這個數值就出問題了。 比如AliOS的接口傳入prio=60;然后60傳入freeRTOS就會出問題了,導致的結果就是新創建的任務可以被調度起來,但是創建任務的接口沒法返回了。 這里的根本原因就是freeRTOS的優先級定義,數值越小,優先級越低;反之,優先級越高。

3 如何解決

解決的方法,倒是比較簡單,但是會比較繁瑣。 我們需要對所有創建的任務,傳入的優先級數值重新進行評估,明確每個任務是高優先級還是低優先級。 比如上面的prio=60(低優先級)改為prio=0或1就可以解決問題了。

4 經驗總結

針對freeRTOS這種反常的優先級數值定義,我總結了其他常見RTOS的定義,做下對比,加深理解和記憶:

RTOS名稱 優先級數值范圍 優先級數值的定義
freeRTOS 0 - (configMAX_PRIORITIES-1) 數值越小,優先級越低
AliOS 0 - 61 數值越小,優先級越高
uCOS 0 - OSLOWESTPRIO 數值越小,優先級越高
RT-Thread 0 - 255 數值越小,優先級越高
threadx 0 - (TXMAXPRIORITIES-1) 數值越小,優先級越高
huawei lite os 0 - 31 數值越小,優先級越高
Oneos 0 - (OSTASKPRIORITY_MAX-1) 數值越小,優先級越高
tencent tiny os 0 - (TOSCFGTASKPRIOMAX-1) 數值越小,優先級越低

看到這里,大家一定感慨,就只有freeRTOS獨一檔的存在,只有它是數值越小,優先級越低! 這里提醒下大家,如果你從其他RTOS平臺遷移到freeRTOS平臺,尤其注意下優先級數值的問題,否則可能會導致莫名其妙的問題。

5 更多分享

歡迎關注我的github倉庫01workstation,日常分享一些開發筆記和項目實戰,歡迎指正問題。

同時也非常歡迎關注我的專欄:有問題的話,可以跟我討論,知無不答,謝謝大家。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8639

    瀏覽量

    151385
  • RTOS
    +關注

    關注

    22

    文章

    817

    瀏覽量

    119715
  • FreeRTOS
    +關注

    關注

    12

    文章

    484

    瀏覽量

    62226
收藏 人收藏

    評論

    相關推薦

    freeRTOS開發筆記】記一次坑爹的freeTOS升級

    freeRTOS開發筆記】記一次坑爹的freeTOS-v9.0.0升級到freeRTOS-v10.4.4
    的頭像 發表于 07-11 09:15 ?4668次閱讀
    【<b class='flag-5'>freeRTOS</b><b class='flag-5'>開發筆記</b>】記一次坑爹的freeTOS升級

    FreeRTOS中的任務管理

    任務FreeRTOS 中最基本的調度單元,它是一段可執行的代碼,可以獨立運行。FreeRTOS 中的任務是基于優先級的搶占式調度,
    的頭像 發表于 11-27 17:03 ?1041次閱讀

    轉:第13章 FreeRTOS任務優先級修改及其分配方案

    configMAX_PRIORITIES– 1。比如我們配置此宏定義為5,那么用戶可以使用的優先級號是0,1,2,3,4,不包含5,對于這一點,初學者要特別的注意。u 用戶配置任務優先級數值越小,那么此
    發表于 08-29 11:07

    FreeRTOS任務調度優先級,會直接在就緒列表中調用低優先級任務么?

    由于剛開始使用FreeRTOS,所以有很多問題,也正在學習。請問各位,假如優先級高的任務時間片用完后,會直接在就緒列表中調用低優先級任務么?假設:Task_A
    發表于 06-14 09:01

    stm32cube創建任務優先級與xTaskCreate的區別是什么

    請教一下,freertos中,為什么stm32cube創建的工程里,任務優先級只有下面這幾種:而使用xTaskCreate創建
    發表于 06-15 09:00

    FREERTOS任務優先級的設置

    FREERTOS中,各個任務優先級怎么設置比較好呢?或者是說有什么標準?疑惑中。。。。。。
    發表于 07-19 08:03

    創建0優先級任務,程序會一直運行該任務這是為什么呢?

    看資料說,0優先級是空閑任務,但是其他任務是可以與空閑任務,共享0優先級的,那么我創建兩個
    發表于 07-26 08:00

    FreeRTOS中斷優先級任務優先級架構的相關資料推薦

    ,于是便有了這篇筆記,本篇文章以Cortex-M3(STM32F103)為例子。目錄FreeRTOS中斷優先級任務優先級1.Cortex-
    發表于 02-08 06:36

    FreeRTOS任務的使用

    FreeRTOS最基本的任務操作就是任務創建與刪除,其API如下表:1.1動態任務創建xTask
    發表于 02-18 07:14

    freertos怎么在任務中修改任務優先級?

    freertos怎么在任務中修改任務優先級
    發表于 10-11 07:56

    2.FreeRTOS中斷優先級任務優先級

    ,于是便有了這篇筆記,本篇文章以Cortex-M3(STM32F103)為例子。目錄FreeRTOS中斷優先級任務優先級1.Cortex-
    發表于 12-04 20:21 ?9次下載
    2.<b class='flag-5'>FreeRTOS</b>中斷<b class='flag-5'>優先級</b>和<b class='flag-5'>任務</b><b class='flag-5'>優先級</b>

    #FreeRTOS學習筆記(二):任務創建/刪除,掛起/解掛

    FreeRTOS最基本的任務操作就是任務創建與刪除,其API如下表:1.1動態任務創建xTask
    發表于 12-23 19:56 ?2次下載
    #<b class='flag-5'>FreeRTOS</b>學習<b class='flag-5'>筆記</b>(二):<b class='flag-5'>任務</b><b class='flag-5'>創建</b>/刪除,掛起/解掛

    FreeRTOS任務優先級示例

    任務優先級:0~24之間。數字越大,任務優先等級越高。高優先級任務
    的頭像 發表于 09-15 11:13 ?2821次閱讀

    FreeRTOS任務狀態與任務優先級

    處理器的話那么不管在任何時刻永遠都只有一個任務處于運行態。 ● 就緒態 處于就緒態的任務是那些已經準備就緒(這些任務沒有被阻塞或者掛起),可以運行的任務,但是處于就緒態的
    的頭像 發表于 09-28 11:10 ?1150次閱讀
    <b class='flag-5'>FreeRTOS</b>中<b class='flag-5'>任務</b>狀態與<b class='flag-5'>任務</b><b class='flag-5'>優先級</b>

    freertos中斷優先級在哪設置

    FreeRTOS是一個流行的實時操作系統,它廣泛應用于嵌入式系統開發。在FreeRTOS中,中斷優先級是一個重要的概念,因為它決定了中斷處理的順序和響應時間。 1. 理解中斷
    的頭像 發表于 09-02 14:17 ?711次閱讀
    主站蜘蛛池模板: 2019欧洲hd| 麻豆免费高清完整版| 国产免费人成在线视频有码| 韩国电影real在线观看完整版 | 浴室里强摁做开腿呻吟的漫画| 99国产在线视频有精品视频| 国产成人精品永久免费视频| 久久久国产精品免费A片3D| 日本久久久| 亚洲中文字幕永久在线全国| z00兽200俄罗斯| 精品96在线观看影院| 欧洲电影巜肉欲丛林| 亚洲国产日韩欧美高清片a| 99久久久无码国产AAA精品| 国产精品视频一区二区猎奇| 毛片免费观看的视频| 小向美奈子厨房magnet| 99久久精品国产高清一区二区| 国产午夜婷婷精品无码A片| 欧美2019高清hd巨大| 亚洲精品乱码电影在线观看 | 在线少女漫画| 国产伦精品一区二区三区精品 | 九九久久久2| 三级黄色在线| 4388成人| 果冻传媒在线播放 免费观看| 日本wwwxx| 最新果冻传媒在线观看免费版| 国产精品视频国产永久视频| 男人团apk| 一线高清视频在线播放| 国产高清超清在线播放| 欧美国产成人在线| 怡春院国产精品视频| 国产免费看片| 日本午夜福利无码高清| 97se se| 精品久久日日躁夜夜躁AV| 玩弄放荡人妻一区二区三区|