国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    4967

    瀏覽量

    73958
  • FreeRTOS
    +關注

    關注

    14

    文章

    499

    瀏覽量

    66926
  • HOOK
    +關注

    關注

    0

    文章

    15

    瀏覽量

    8821
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    以“網關中間件”實現充電樁OCPP 1.6安全配置文件無縫升級

    深圳惠志科技有限公司推出的OCPP安全代理網關采用"網關中間件"架構,在充電樁與云端CSMS之間透明地部署,實現充電樁OCPP 1.6協議安全配置文件從Profile 0/1到Profile 2/3的無縫升級,而無需觸及樁端硬件與固件。
    的頭像 發表于 02-04 11:56 ?788次閱讀
    以“網關中間件”實現充電樁OCPP 1.6安全<b class='flag-5'>配置文件</b>無縫升級

    配置文件損壞可能會帶來哪些安全風險?

    配置文件損壞不僅會導致電能質量在線監測裝置功能異常,還可能引發 數據安全、運維安全、設備安全、合規安全 四大類安全風險,尤其在電力系統、工業配電等關鍵場景中,風險可能傳導至電網或生產系統,造成
    的頭像 發表于 12-10 16:37 ?420次閱讀
    <b class='flag-5'>配置文件</b>損壞可能會帶來哪些安全風險?

    rtthread線程出現異常了,有沒有什么鉤子函數能夠定義用戶操作?

    線程出現異常了,有沒有什么鉤子函數能夠定義用戶操作????
    發表于 09-18 06:36

    在RT-Thread中編譯鉤子函數出現亂碼問題和為什么打開終端會彈出外部終端?

    當然在Xshell8中顯示鉤子函數打印的內容是不會出現亂碼的,就是在RT-Thread中內部打開終端顯示內容會出現問題,不知道什么原因,求大佬help #include #define
    發表于 09-15 07:09

    求助各位大佬,關于如何讀寫編碼格式為UTF-16LE的配置文件?

    如題,小白求助各位大佬,要怎么實現對編碼為UTF-16LE的配置文件的讀寫。 使用讀配置文件的vi讀不出內容。 使用讀文本的方式寫入異常,文件的編碼變成UTF-8且內容也不對。
    發表于 09-14 12:54

    【RA-Eco-RA6M4開發板評測】2、移植FreeRTOS_CLI和添加自定義指令

    。 在配置中設置自定義的FreeRTOSConfig.h文件路徑,可以在工程中使用自定義的FreeRTOSConfig.h文件
    發表于 07-23 11:34

    哪些芯片支持藍牙經典 A2DP 配置文件和 LE 音頻?

    哪些芯片支持藍牙經典 A2DP 配置文件和 LE 音頻?
    發表于 07-01 06:41

    CYW920820M2EVB-01開發套件可以與藍牙的免提配置文件一起使用嗎?

    我有英飛凌 CYW920820M2EVB-01 開發套件,我想將它與藍牙的免提配置文件一起使用。 是否可以。 該套件是否支持該配置文件? 我無法在任何地方找到該套件支持的配置文件。 如果是,那么我可以得到一些關于如何執行此操作的
    發表于 06-30 06:15

    如何才能知道英飛凌Bluetooth?產品支持哪種Bluetooth?配置文件和版本?

    如何才能知道英飛凌Bluetooth?產品支持哪種Bluetooth?配置文件和版本? A2DP、AVRCP、HSP、HFP 等 是否有一個網頁或文檔解釋每個設備支持哪些配置文件和版本? 目前我想了解以下設備特別支持的配置文件
    發表于 06-27 06:04

    【RA4L1-SENSOR】4、移植FreeRTOS-CLI

    方式為動態分配。 在配置中設置自定義的FreeRTOSConfig.h文件路徑,可以在工程中使用自定義的FreeRTOSConfig.h文件
    發表于 06-26 22:30

    配置文件的差異介紹

    配置文件的差異 FA模型應用在config.json文件中描述應用的基本信息,一個應用工程中可以創建多個Module,每個Module中都有一份config.json文件。config.json由
    發表于 06-05 06:50

    Profibus DP主站轉Modbus TCP網關配置文件制作

    Profibus DP主站轉Modbus TCP網關配置文件制作
    的頭像 發表于 04-02 13:06 ?751次閱讀
    Profibus DP主站轉Modbus TCP網關<b class='flag-5'>配置文件</b>制作

    詳解RTOS中的Hook函數

    Hook函數是RTOS中的一個關鍵特性,通過該函數,用戶可以增強對任務管理的控制,定義系統行為。
    的頭像 發表于 03-24 16:14 ?1077次閱讀

    嵌入式開發避坑指南|FreeRTOS的5個\"反直覺\"小技巧

    512B,但因接收NMEA語句時緩沖區溢出,最終導致系統崩潰。修復后堆棧擴容至1KB 技巧5:配置文件藏著\"隱藏技能\" 冷知識: 修改configTICK_RATE_HZ
    發表于 03-20 13:57

    是否有用于OpenVINO?工具套件的配置文件工具呢?

    是否有用于OpenVINO?工具套件的配置文件工具?
    發表于 03-06 07:29