日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-14 14:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

HOOK介紹

很多初學(xué)者(包括我在內(nèi))初學(xué)的時(shí)候?qū)OOK函數(shù)完全就是懵的,不知道是什么東西。如果需要理解本文說的HOOK函數(shù)相關(guān)配置,就需要理解什么是HOOK函數(shù)。

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

HOOK函數(shù)實(shí)際上是操作系統(tǒng)消息處理機(jī)制的程序段,通過系統(tǒng)調(diào)用,把它掛入系統(tǒng)。

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

HOOK函數(shù)是提供給開發(fā)者的函數(shù),實(shí)現(xiàn)自己想要實(shí)現(xiàn)的東西。比如:RTOS中IDLE空閑任務(wù)就提供了一個(gè)HOOK函數(shù),我想要對其計(jì)數(shù),計(jì)數(shù)到1W,我就打印出來(就是實(shí)現(xiàn)了自己想要實(shí)現(xiàn)的東西)。

總之,初學(xué)者初學(xué)的時(shí)候不一定要完全掌握和精通操作系統(tǒng)里面的每一項(xiàng)東西,但一定要了解。

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

HOOK配置

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

1.configUSE_IDLE_HOOK

是否定義IDLE空閑任務(wù)HOOK函數(shù)

配置為0:不定義

配置為1:定義

configUSE_IDLE_HOOK是系統(tǒng)設(shè)計(jì)之初就有的,必須在“FreeRTOSConfig.h”中宏定義。不像有些宏定義可以不在“FreeRTOSConfig.h”中定義,因?yàn)樗鼈冊凇癋reeRTOS.h”有判斷是否定義了,如果沒有定義,會(huì)有一個(gè)默認(rèn)的定義。

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

#ifndef configUSE_MUTEXES

#define configUSE_MUTEXES 0

#endif

也就是說,如果沒有定義,它會(huì)默認(rèn)給你定義。

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

#if (configUSE_IDLE_HOOK == 1)

{

extern void vApplicationIdleHook(void);

vApplicationIdleHook();

}

#endif

意思是說:如果你配置configUSE_IDLE_HOOK為1,那么你就必須要實(shí)現(xiàn)“vApplicationIdleHook()”這個(gè)函數(shù),否則編譯會(huì)出錯(cuò)。初學(xué)者默認(rèn)不定義該函數(shù)。

2.configUSE_TICK_HOOK

是否定義TICK滴答HOOK函數(shù)

配置為0:不定義

配置為1:定義

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

#if (configUSE_TICK_HOOK == 1)

{

if(uxPendedTicks == (UBaseType_t) 0U)

{

vApplicationTickHook();

}

else

{

mtCOVERAGE_TEST_MARKER();

}

}

#endif

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

3.configCHECK_FOR_STACK_OVERFLOW

是否定義棧溢出HOOK函數(shù)

配置為0:不定義

配置為1:定義

這個(gè)配置比較關(guān)鍵和重要,特別對于復(fù)雜的系統(tǒng)設(shè)計(jì),代碼量比較大那種工程,使用該功能,可以幫你分析是否有內(nèi)存越界的情況。

4.configUSE_MALLOC_FAILED_HOOK

是否定義內(nèi)存分配失敗HOOK函數(shù)

配置為0:不定義

配置為1:定義

我們創(chuàng)建任務(wù)、信號(hào)量、隊(duì)列等都需要耗費(fèi)系統(tǒng)堆棧,如果我們對系統(tǒng)總共分配堆棧不夠多,在創(chuàng)建多個(gè)任務(wù)或隊(duì)列時(shí)容易分配失敗,這個(gè)時(shí)候就起到一個(gè)提示作用。

5.configUSE_DAEMON_TASK_STARTUP_HOOK

是否定義守護(hù)進(jìn)程HOOK函數(shù)

配置為0:不定義

配置為1:定義

通過分析軟件源代碼可以發(fā)現(xiàn),這個(gè)HOOK函數(shù)是在TIMER任務(wù)下面實(shí)現(xiàn)的,所以需要配置configUSE_TIMERS為1。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4977

    瀏覽量

    74417
  • FreeRTOS
    +關(guān)注

    關(guān)注

    14

    文章

    499

    瀏覽量

    67286
  • HOOK
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何為時(shí)間同步網(wǎng)絡(luò)選擇合適的 PTP 配置文件

    構(gòu)建高精度時(shí)間同步網(wǎng)絡(luò)時(shí),如何正確配置 PTP 配置文件(PTP Profile)?本文深入解析通用、電信及媒體配置文件的差異,助您實(shí)現(xiàn)納秒級同步。立即閱讀指南!
    的頭像 發(fā)表于 04-30 17:45 ?3443次閱讀
    如何為時(shí)間同步網(wǎng)絡(luò)選擇合適的 PTP <b class='flag-5'>配置文件</b>

    LIN堆棧配置文件如何生成?

    你好! 我正在嘗試在MCUXpresso IDE中為沒有專用演示的電路板創(chuàng)建一個(gè)LIN堆棧應(yīng)用程序。我看到對于其他板子,“源”目錄中已經(jīng)包含了一些 lin_cfg.c/.h 文件,但我不知道如何生成
    發(fā)表于 04-27 07:42

    [VirtualLab] 配置文件編輯工具:速度與精度

    配置文件編輯工具,用于定制光場數(shù)據(jù)采樣的設(shè)置,在光通過光學(xué)系統(tǒng)傳播過程中使用 配置文件編輯和運(yùn)行功能區(qū) **速度與精度 - 工具 ** **奈奎斯特周期評估精度等級 ** 場尺寸估計(jì)的功率部分 為了估算一
    發(fā)表于 04-14 08:29

    以“網(wǎng)關(guān)中間件”實(shí)現(xiàn)充電樁OCPP 1.6安全配置文件無縫升級

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

    配置文件損壞可能會(huì)帶來哪些安全風(fēng)險(xiǎn)?

    配置文件損壞不僅會(huì)導(dǎo)致電能質(zhì)量在線監(jiān)測裝置功能異常,還可能引發(fā) 數(shù)據(jù)安全、運(yùn)維安全、設(shè)備安全、合規(guī)安全 四大類安全風(fēng)險(xiǎn),尤其在電力系統(tǒng)、工業(yè)配電等關(guān)鍵場景中,風(fēng)險(xiǎn)可能傳導(dǎo)至電網(wǎng)或生產(chǎn)系統(tǒng),造成
    的頭像 發(fā)表于 12-10 16:37 ?597次閱讀
    <b class='flag-5'>配置文件</b>損壞可能會(huì)帶來哪些安全風(fēng)險(xiǎn)?

    rtthread線程出現(xiàn)異常了,有沒有什么鉤子函數(shù)能夠定義用戶操作?

    線程出現(xiàn)異常了,有沒有什么鉤子函數(shù)能夠定義用戶操作????
    發(fā)表于 09-18 06:36

    在RT-Thread中編譯鉤子函數(shù)出現(xiàn)亂碼問題和為什么打開終端會(huì)彈出外部終端?

    當(dāng)然在Xshell8中顯示鉤子函數(shù)打印的內(nèi)容是不會(huì)出現(xiàn)亂碼的,就是在RT-Thread中內(nèi)部打開終端顯示內(nèi)容會(huì)出現(xiàn)問題,不知道什么原因,求大佬help #include #define
    發(fā)表于 09-15 07:09

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

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

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

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

    哪些芯片支持藍(lán)牙經(jīng)典 A2DP 配置文件和 LE 音頻?

    哪些芯片支持藍(lán)牙經(jīng)典 A2DP 配置文件和 LE 音頻?
    發(fā)表于 07-01 06:41

    CYW920820M2EVB-01開發(fā)套件可以與藍(lán)牙的免提配置文件一起使用嗎?

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

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

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

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

    方式為動(dòng)態(tài)分配。 在配置中設(shè)置自定義的FreeRTOSConfig.h文件路徑,可以在工程中使用自定義的FreeRTOSConfig.h文件
    發(fā)表于 06-26 22:30

    配置文件的差異介紹

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

    為什么在SDK 1.3.5中創(chuàng)建的配置文件是在SDK 1.3.4中創(chuàng)建的 打不開?

    為什么在 SDK 1.3.5 中創(chuàng)建的配置文件是在 SDK 1.3.4 中創(chuàng)建的 打不開?
    發(fā)表于 05-13 07:22
    双鸭山市| 临桂县| 安仁县| 甘肃省| 佛山市| 吴忠市| 宣汉县| 白山市| 都安| 昌邑市| 天祝| 克什克腾旗| 浦东新区| 蒙阴县| 博罗县| 龙岩市| 鲁甸县| 汉阴县| 泰州市| 西平县| 康平县| 历史| 洛宁县| 镇原县| 聂拉木县| 容城县| 利津县| 华容县| 米易县| 广州市| 剑河县| 乐昌市| 景德镇市| 崇州市| 兖州市| 涿鹿县| 竹山县| 庆城县| 定襄县| 汉源县| 库车县|