在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    4827

    瀏覽量

    69054
  • FreeRTOS
    +關注

    關注

    12

    文章

    484

    瀏覽量

    62398
  • HOOK
    +關注

    關注

    0

    文章

    15

    瀏覽量

    8417
收藏 人收藏

    評論

    相關推薦

    如何導出交換機的配置文件

    在網絡管理中,導出交換機的配置文件是一項關鍵任務,它有助于備份、審計、遷移或恢復網絡配置。本文將詳細介紹如何導出交換機配置文件,涵蓋多種方法,適用于不同場景和需求。文章內容將圍繞幾種常見的導出方法展開,包括通過命令行接口(CLI
    的頭像 發表于 02-02 17:20 ?149次閱讀

    stdio.h實現了printf函數?

    我們平時包含的 stdio.h文件,里面是不是實現了 printf 函數? 為什么會有這個疑問?因為每次使用 printf,就得包含 stdio.h ,這就導致很多同學誤以為,st
    的頭像 發表于 12-18 10:28 ?262次閱讀

    linux網卡配置文件

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

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

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

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

    作者:京東科技 李意文 1、首先先把配置文件從jar中抽離 示例代碼: ? org.apache.maven.plugins maven-jar-plugin 3.2.0
    的頭像 發表于 10-19 16:48 ?584次閱讀
    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 ?1184次閱讀

    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 ?411次閱讀
    鴻蒙開發Ability Kit程序框架服務:FA模型應用<b class='flag-5'>配置文件</b>

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

    應用配置文件中包含應用配置信息、應用組件信息、權限信息、開發者自定義信息等,這些信息在編譯構建、分發和運行解決分別提供給編譯工具、應用市場和操作系統使用。
    的頭像 發表于 06-15 09:15 ?1779次閱讀
    鴻蒙開發:【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 ?1052次閱讀
    <b class='flag-5'>子函數</b>多層調用的主要注意事項分析

    Linux系統中的配置文件

    系統文件,用于配置主機名與 IP 地址的映射關系。當系統需要解析主機名時,會首先查找 /etc/hosts 文件,如果在該文件中找到了相應的映射關系,則直接使用對應的 IP 地址進行通
    發表于 02-19 17:36 ?1392次閱讀
    主站蜘蛛池模板: 国产成人精品免费视频大全可播放的 | 在线免费成人网 | 欧美一区二区三区激情啪啪 | 色婷婷久久免费网站 | 日韩a级毛片免费观看 | 噜噜噜色 | 久久精品福利 | 国产午夜三区视频在线 | 全色网站 | 国产精品久久久久免费 | 国产二区三区 | 在线观看高清免费播放 | 特黄级 | 国产一区二区在线视频播放 | 狠狠干天天操 | 国产在线理论片免费播放 | 视频在线观看高清免费看 | 久久久久久久国产精品影院 | 免费h网站在线观看 | 好色亚洲 | 国产肥女bbwbbw | 四虎国产精品永久在线网址 | 亚洲免费视频观看 | 免费看h的网站 | 久青草国产在线视频_久青草免 | 天堂在线最新资源 | 国产三级中文字幕 | 国产一区二区三区 韩国女主播 | dvd碟片色爱 | 欧美黄色片网站 | 五月婷婷俺也去开心 | 激情丁香婷婷 | 97国产精品人人爽人人做 | 日韩黄a级成人毛片 | 182tv免费视视频线路一二三 | 人人澡人人射 | h视频免费看 | 91国内在线 | 色色色色色色色色色色色色 | 成人淫片 | 色在线网|