女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

    文章

    4886

    瀏覽量

    70252
  • FreeRTOS
    +關注

    關注

    12

    文章

    489

    瀏覽量

    63738
  • HOOK
    +關注

    關注

    0

    文章

    15

    瀏覽量

    8540
收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

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

    詳解RTOS中的Hook函數

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

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

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

    Web Bluetooth SPP(串行端口配置文件)示例

    電纜替代(Cable Replacement)通常指的是通過無線技術,如低功耗藍牙(Bluetooth LE)替代傳統的有線連接,例如串行端口配置文件(Serial Port Profile,簡稱SPP)。
    的頭像 發表于 02-28 09:40 ?511次閱讀

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

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

    linux網卡配置文件

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

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

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

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

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

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

    電子發燒友網站提供《HID over GATT配置文件(HOGP)低功耗藍牙.pdf》資料免費下載
    發表于 09-26 11:01 ?2次下載
    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 ?1990次閱讀

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

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

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