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

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

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

3天內不再提示

FreeRTOS_005_FreeRTOSConfig.h配置文件(二) HOOK鉤子函數

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 2020-03-14 14:04 ? 次閱讀

HOOK介紹

很多初學者(包括我在內)初學的時候對HOOK函數完全就是懵的,不知道是什么東西。如果需要理解本文說的HOOK函數相關配置,就需要理解什么是HOOK函數。

HOOK函數:HOOK翻譯出來的意思是鉤子、鉤住,所以也叫“鉤子函數”,可以理解為鉤住你想要的東西。

HOOK函數實際上是操作系統消息處理機制的程序段,通過系統調用,把它掛入系統。

HOOK函數可以說是操作系統必有的一類函數,像Windows、Linux以及我前面講述過的UCOS嵌入式實時操作系統都有這類鉤子函數。

HOOK函數是提供給開發者的函數,實現自己想要實現的東西。比如:RTOS中IDLE空閑任務就提供了一個HOOK函數,我想要對其計數,計數到1W,我就打印出來(就是實現了自己想要實現的東西)。

總之,初學者初學的時候不一定要完全掌握和精通操作系統里面的每一項東西,但一定要了解。

好比我在微信公眾號里分享的文章,你不必認真去分析或深入理解。但有必要了解,不要等遇到了問題,再反過來問我之前分享過的問題!

HOOK配置

上面對HOOK描述了那么多,相信大家對HOOK有一定的了解,下面來講述在“FreeRTOSConfig.h”中與HOOK相關的配置。

1.configUSE_IDLE_HOOK

是否定義IDLE空閑任務HOOK函數

配置為0:不定義

配置為1:定義

configUSE_IDLE_HOOK是系統設計之初就有的,必須在“FreeRTOSConfig.h”中宏定義。不像有些宏定義可以不在“FreeRTOSConfig.h”中定義,因為它們在“FreeRTOS.h”有判斷是否定義了,如果沒有定義,會有一個默認的定義。

比如:上一篇文章說的“configUSE_MUTEXES”,可以不在“FreeRTOSConfig.h”中定義,而在“FreeRTOS.h”中可以看到如下一段代碼:

#ifndef configUSE_MUTEXES

#define configUSE_MUTEXES 0

#endif

也就是說,如果沒有定義,它會默認給你定義。

回來說configUSE_IDLE_HOOK,在task.c文件中,有如下一段代碼:

#if (configUSE_IDLE_HOOK == 1)

{

extern void vApplicationIdleHook(void);

vApplicationIdleHook();

}

#endif

意思是說:如果你配置configUSE_IDLE_HOOK為1,那么你就必須要實現“vApplicationIdleHook()”這個函數,否則編譯會出錯。初學者默認不定義該函數。

2.configUSE_TICK_HOOK

是否定義TICK滴答HOOK函數

配置為0:不定義

配置為1:定義

在task.c文件中的xTaskIncrementTick函數下可以看見如下代碼:

#if (configUSE_TICK_HOOK == 1)

{

if(uxPendedTicks == (UBaseType_t) 0U)

{

vApplicationTickHook();

}

else

{

mtCOVERAGE_TEST_MARKER();

}

}

#endif

提示:xTaskIncrementTick函數是在PendSV_Handler中斷函數中被調用的。因此,vApplicationTickHook()函數執行的時間必須很短才行。

3.configCHECK_FOR_STACK_OVERFLOW

是否定義棧溢出HOOK函數

配置為0:不定義

配置為1:定義

這個配置比較關鍵和重要,特別對于復雜的系統設計,代碼量比較大那種工程,使用該功能,可以幫你分析是否有內存越界的情況。

4.configUSE_MALLOC_FAILED_HOOK

是否定義內存分配失敗HOOK函數

配置為0:不定義

配置為1:定義

我們創建任務、信號量、隊列等都需要耗費系統堆棧,如果我們對系統總共分配堆棧不夠多,在創建多個任務或隊列時容易分配失敗,這個時候就起到一個提示作用。

5.configUSE_DAEMON_TASK_STARTUP_HOOK

是否定義守護進程HOOK函數

配置為0:不定義

配置為1:定義

通過分析軟件源代碼可以發現,這個HOOK函數是在TIMER任務下面實現的,所以需要配置configUSE_TIMERS為1。

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

    關注

    30

    文章

    4779

    瀏覽量

    68524
  • FreeRTOS
    +關注

    關注

    12

    文章

    484

    瀏覽量

    62140
  • HOOK
    +關注

    關注

    0

    文章

    15

    瀏覽量

    8382
收藏 人收藏

    評論

    相關推薦

    linux網卡配置文件

    網卡配置文件 ? ? 網卡目錄[root@localhost opt]# ls /etc/sysconfig/network-scripts/網卡文件名字,和我們ifconfig看到的一樣
    的頭像 發表于 12-10 10:09 ?200次閱讀

    RTOS中鉤子函數的用途及用法

    在很多操作系統中,都存在這樣一類API函數接口:HOOK函數(也叫鉤子函數)。
    的頭像 發表于 10-23 16:25 ?234次閱讀
    RTOS中<b class='flag-5'>鉤子函數</b>的用途及用法

    springboot的項目如何既要用jar包啟動,同時還可以為不同的機房設置不同的配置文件

    作者:京東科技 李意文 1、首先先把配置文件從jar中抽離 示例代碼: ? org.apache.maven.plugins maven-jar-plugin 3.2.0
    的頭像 發表于 10-19 16:48 ?502次閱讀
    springboot的項目如何既要用jar包啟動,同時還可以為不同的機房設置不同的<b class='flag-5'>配置文件</b>

    HID over GATT配置文件(HOGP)低功耗藍牙

    電子發燒友網站提供《HID over GATT配置文件(HOGP)低功耗藍牙.pdf》資料免費下載
    發表于 09-26 11:01 ?1次下載
    HID over GATT<b class='flag-5'>配置文件</b>(HOGP)低功耗藍牙

    確定LDO的任務配置文件兼容性

    電子發燒友網站提供《確定LDO的任務配置文件兼容性.pdf》資料免費下載
    發表于 09-24 10:44 ?0次下載
    確定LDO的任務<b class='flag-5'>配置文件</b>兼容性

    freertos最多支持多少個任務

    以下幾個因素: 系統資源 :FreeRTOS能夠支持的任務數量受到系統硬件資源的限制,特別是處理器的RAM大小和性能。RAM用于存儲任務的控制塊(TCB)和任務堆棧,因此RAM越大,理論上可以支持的任務數量就越多。 配置選項 :Free
    的頭像 發表于 09-02 14:21 ?846次閱讀

    InModbus2配置文件的注意事項

    大家好,由于最近經常有人問我InModbus2的配置文件如何編輯來達到想要的結果,所以發布一些關于InModbus2的配置文件注意事項,后期我還會發布一些示例來供大家參考讓大家都掌握一些簡單
    發表于 07-26 07:21

    在Nucleo-H743ZI2板上運行wifi_scan示例,啟用FreeRTOS時堆部分被禁用,為什么?

    設備或上下文兼容性問題" 。 此外,當我嘗試生成代碼時,一些重要文件丟失了,包括 lwipopts.hFreeRTOSConfig.h. 您能否告訴我解決這些問題的必要步驟?
    發表于 07-03 08:17

    鴻蒙開發Ability Kit程序框架服務:FA模型應用配置文件

    應用配置文件中包含應用配置信息、應用組件信息、權限信息、開發者自定義信息等,這些信息在編譯構建、分發和運行解決分別提供給編譯工具、應用市場和操作系統使用。
    的頭像 發表于 06-24 14:49 ?355次閱讀
    鴻蒙開發Ability Kit程序框架服務:FA模型應用<b class='flag-5'>配置文件</b>

    鴻蒙開發:【Stage模型應用配置文件

    應用配置文件中包含應用配置信息、應用組件信息、權限信息、開發者自定義信息等,這些信息在編譯構建、分發和運行解決分別提供給編譯工具、應用市場和操作系統使用。
    的頭像 發表于 06-15 09:15 ?1656次閱讀
    鴻蒙開發:【Stage模型應用<b class='flag-5'>配置文件</b>】

    AG32 下使用 freeRTOS 的參考

    freeRTOS 的靜態方法。 如果使用靜態方法,即打開了宏:configSUPPORT_STATIC_ALLOCATION,需要新增兩個 hook 函數,可參考:https://blog.csdn.net
    發表于 05-28 13:34

    子函數多層調用的主要注意事項分析

    應用方案設計中,開發者經常會碰到某個子函數需要多次多級調用的情況。
    的頭像 發表于 03-27 15:36 ?840次閱讀
    <b class='flag-5'>子函數</b>多層調用的主要注意事項分析

    前端大倉monorepo權限設計思路和實現方案

    在 GitLab 未支持文件目錄權限設置之前,對于文件目錄權限的控制主要依賴 Git 的鉤子函數,在代碼提交的時候,對暫存區的變更文件進行識別并做
    的頭像 發表于 01-12 09:52 ?705次閱讀
    前端大倉monorepo權限設計思路和實現方案

    labview生成exe文件如何配置文件

    可執行文件之前,您需要確保正確配置文件,以便應用程序能夠在不同計算機上正確運行。 下面是一個詳盡、詳實、細致的步驟指南,告訴您如何配置LabVIEW生成的可執行文件: 確保您的應用程序
    的頭像 發表于 12-27 16:28 ?2182次閱讀

    labview的opc生成配置文件

    的數據交互和通信。在 LabVIEW 中生成 OPC 配置文件有助于實現與其他設備的數據傳輸和共享,本文將詳細介紹如何生成 OPC 配置文件。 首先,在 LabVIEW 中生成 OPC 配置文件,我們
    的頭像 發表于 12-26 17:57 ?1863次閱讀
    主站蜘蛛池模板: 在线亚洲黄色| 日日噜噜大屁股熟妇| 九九99热久久999精品| 国产传媒18精品免费1区| 插我一区二区在线观看| 99手机在线视频| 99热视频这里只有久久精品| 2017欧美狠狠色| 中文中幕无码亚洲视频| 伊人网伊人网| 在线综合 亚洲 欧美| 伊人大香线蕉影院在线播放| 杨幂视频在线观看1分30秒| 亚洲色图激情文学| 亚洲高清无码在线 视频| 亚洲电影不卡| 亚洲精品AV无码喷奶水糖心| 亚洲成人三级| 亚洲精品影院久久久久久| 亚洲欧美日韩另类精品一区二区三区| 亚洲 欧美 国产 综合不卡| 亚洲精品视频免费在线观看| 亚洲国产成人精品无码区APP| 成人动漫bt种子| yellow高清免费观看日本| 超碰97 总站 中文字幕| 俄罗斯aaaa一级毛片| 国产成人免费| 狠狠啪在线香蕉| 久久天天婷婷五月俺也去| 欧美高清18| 视频一区二区三区蜜桃麻豆| 亚洲an天堂an在线观看| 亚洲欧美日韩高清中文在线| 中文乱码35页在线观看| 99热久久这里只有精品| 成激人情在线影院920| 国产精品96久久久久久AV不卡| 国产一区二区在线免费观看| 久久精品国产亚洲AV久五月天| 麻豆精品一卡2卡三卡4卡免费观看 |