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

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

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

3天內不再提示

詳解RK平臺看門狗程序:用mywatchdog.c實現靈活的超時控制與喂狗管理

jf_44130326 ? 來源:Linux1024 ? 2026-02-02 17:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式系統穩定性保障中,看門狗程序的靈活性和易用性直接影響開發效率。今天我們聚焦一份實用的看門狗程序mywatchdog.c,看看它如何通過簡單指令實現超時時間設置與喂狗開關控制,以及在實際場景中如何發揮作用。

一、程序核心功能:從代碼看mywatchdog.c的設計

先來看mywatchdog.c的核心邏輯,它的設計目標很明確:通過命令行參數快速配置看門狗超時時間,并控制喂狗行為,代碼如下:

配置:

&wdt{status ="okay";};

測試指令:這種方式不靈活# 寫入任意內容(大寫字母‘V’除外),開啟看門狗,每44 秒內需要寫入一次(喂狗)echoA > /dev/watchdog# 開啟看門狗,并且內核會每隔 22 秒自動喂一次狗echoV > /dev/watchdog

#include#include#include#include#include#include#include#include#include// 定義看門狗超時控制相關IOCTL命令#defineWDIOC_SETTIMEOUT    _IOWR(WATCHDOG_IOCTL_BASE, 6, int)#defineWDIOC_GETTIMEOUT    _IOR(WATCHDOG_IOCTL_BASE, 7, int)intmain(intargc,char*argv[]){ inttimeout; intfd; intret =0; // 打開看門狗設備節點,打開即啟動看門狗(硬件特性)  fd =open("/dev/watchdog", O_WRONLY); if(fd ==-1) {   perror("watchdog");   exit(EXIT_FAILURE);  }  // 從命令行參數獲取超時時間(第一個參數)  timeout =atoi(argv[1]); printf("輸入的超時參數:%d,實際設置值:%drn",atoi(argv[1]), timeout); // 設置看門狗超時時間  ret =ioctl(fd, WDIOC_SETTIMEOUT, &timeout); if(ret 0) {   printf("設置超時時間失敗n");   gotofail;  } // 驗證并獲取實際生效的超時時間(部分硬件可能限制最小/最大超時值)  ret =ioctl(fd, WDIOC_GETTIMEOUT, &timeout); if(ret 0) {   printf("獲取超時時間失敗n");   gotofail;  }else{   printf("當前看門狗超時時間:%d秒n", timeout);  } // 循環喂狗(根據第二個參數控制是否實際執行喂狗操作) while(1) {   // 注意:當前代碼中喂狗操作被注釋,實際使用時需根據需求開啟   // 若第二個參數為1則執行喂狗,0則不喂狗(觸發復位)   if(argc >=3&&atoi(argv[2]) ==1) {      ret =write(fd,"?",1);// 喂狗核心操作:向設備寫入1字節數據     if(ret !=1) {        ret =-1;       break;      }    }   printf("喂狗狀態:%sn", (argc>=3&&atoi(argv[2])==1)?"已喂狗":"未喂狗");   sleep(timeout -10);// 間隔小于超時時間,預留緩沖  }fail: close(fd); returnret;}

代碼核心亮點

1.支持通過命令行參數動態設置超時時間(argv[1]);

2.通過第二個參數(argv[2])控制喂狗開關(1 =開啟喂狗,0 =關閉喂狗);

3.包含超時時間驗證步驟,避免硬件不支持的超時值導致配置失效;

4.循環喂狗邏輯中預留10秒緩沖,降低因系統延遲導致的誤復位風險。

二、關鍵指令解析:/etc/init.d/mywatchdog 300 1 &怎么用?

將編譯后的mywatchdog程序放在/etc/init.d/目錄下,即可通過一條指令完成看門狗配置,這條指令的含義是:

#設置超時時間為300秒(5分鐘),開啟喂狗功能,并后臺運行

/etc/init.d/mywatchdog 300 1 &

指令參數拆解:

?300:第一個參數,代表設置看門狗超時時間為300秒(若硬件支持,實際生效時間會通過WDIOC_GETTIMEOUT返回);

?1:第二個參數,控制喂狗開關(1=開啟喂狗,程序會每隔290秒執行一次喂狗;0=關閉喂狗,系統會在300秒后觸發復位);

?&:將程序放入后臺運行,不阻塞當前終端,適合作為系統服務啟動。

三、實際場景用法:從調試到部署

1.調試階段:驗證看門狗復位功能

若要測試看門狗是否正常工作,可關閉喂狗功能:

#設置超時10秒,關閉喂狗,觀察系統是否在10秒后復位

/etc/init.d/mywatchdog 10 0 &

2.部署階段:作為系統服務常駐

將程序加入系統啟動腳本(如rc.local),確保系統啟動時自動開啟看門狗:

#rc.local中添加,系統啟動后自動以300秒超時、開啟喂狗的方式運行

/etc/init.d/mywatchdog 300 1 &

3.注意事項:

?代碼中write(fd, "?", 1)是喂狗核心操作,實際使用時需取消注釋(當前代碼為注釋狀態,僅作演示);

?超時時間設置需結合系統最大響應時間(如系統完成一次復雜任務最長需200秒,則超時時間建議設為250-300秒);

?后臺運行時可通過ps命令查看進程狀態,通過kill命令終止:

#查看mywatchdog進程

ps -ef | grep mywatchdog

#終止進程(需先關閉看門狗,否則進程退出后可能觸發復位)

kill [進程ID]

四、為什么這樣設計?看門狗程序的靈活性很重要

相較于固定配置的看門狗程序,mywatchdog.c的優勢在于:

?參數化控制:無需修改代碼即可調整超時時間和喂狗狀態,適合不同場景(如調試、生產環境);

?兼容性強:基于Linux標準/dev/watchdog接口,不僅適用于RK平臺,也可移植到其他支持標準看門狗驅動的嵌入式系統;

?易于集成:放入/etc/init.d/目錄后,可通過系統服務管理工具(如systemctl)統一管理,符合嵌入式系統服務規范。

總結:讓看門狗管理更簡單

mywatchdog.c通過簡潔的代碼實現了看門狗的核心功能,而/etc/init.d/mywatchdog 300 1 &這條指令則將配置門檻降到了最低。在實際開發中,只需根據系統需求調整超時時間和喂狗開關,就能讓看門狗成為系統穩定運行的可靠后衛。記?。汉玫目撮T狗程序,不僅要能守得住,更要用得活


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

    關注

    10

    文章

    610

    瀏覽量

    72932
  • 嵌入式系統
    +關注

    關注

    41

    文章

    3747

    瀏覽量

    133619
  • 程序
    +關注

    關注

    117

    文章

    3846

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    看門狗多任務系統及喂狗方法詳解

    看門狗分硬件看門狗和 軟件看門狗。硬件看門狗是利用一個定時器電路,其定時輸出連接到電路的復位端,程序在一定時間范圍內對定時器清零(俗稱“
    的頭像 發表于 07-05 09:21 ?2w次閱讀
    <b class='flag-5'>看門狗</b>多任務系統及<b class='flag-5'>喂狗</b>方法<b class='flag-5'>詳解</b>

    窗口看門狗喂狗時間

    0-x內,x由相關寄存器決定(X由預分頻器和重裝載值決定,最大值為0xFFF)。喂狗的時間不能過晚為什么需要看門狗獨立看門狗:在0-重載值之間任意時間都可以喂狗如果
    發表于 07-30 06:31

    窗口看門狗的定義及窗口看門狗和獨立看門狗區別是什么

    窗口看門狗一、窗口看門狗的定義及窗口看門狗和獨立看門狗區別是什么? 總結一下就是獨立看門狗只有下限,在下限前
    發表于 08-02 06:56

    看門狗喂狗時間及程序

    什么是看門狗定時器 看門狗定時器(WDT,Watch Dog Timer)是單片機的一個組成部分,它實際上是一個計數器,一般給看門狗一個數字,程序開始運行后
    發表于 10-16 09:19 ?1.8w次閱讀

    什么是stm32看門狗?獨立看門狗和窗口看門狗工作原理解析

    stm32有兩個看門狗,獨立看門狗和窗口看門狗,其實兩者的功能是類似的,只是喂狗的限制時間不同。 獨立看門狗
    的頭像 發表于 11-06 11:48 ?2.8w次閱讀
    什么是stm32<b class='flag-5'>看門狗</b>?獨立<b class='flag-5'>看門狗</b>和窗口<b class='flag-5'>看門狗</b>工作原理解析

    STM32看門狗配置(獨立看門狗IWDG和窗口看門狗WWDG)

    stm32自帶兩個看門狗模塊,獨立看門狗IWDG和窗口看門狗WWDG。看門狗主要作用是可用來檢測和解決由軟件錯誤引起的故障;當計數器達到給定的超時
    發表于 11-09 17:17 ?8839次閱讀
    STM32<b class='flag-5'>看門狗</b>配置(獨立<b class='flag-5'>看門狗</b>IWDG和窗口<b class='flag-5'>看門狗</b>WWDG)

    軟件看門狗和硬件看門狗的作用和區別

    。  軟件看門狗技術的原理和這差不多,只不過是軟件的方法實現,我們還是以51系列來講,我們知道在51單片機中有兩個定時器,我們就可以這兩個定時器來對主
    的頭像 發表于 10-15 17:29 ?4.1w次閱讀

    對于MCU看門狗IIWDG WWDG喂狗時間的配置參考

    對于MCU看門狗IIWDG WWDG喂狗時間的配置參考可以參考MCU的datasheet;在每個MCU的datasheet中都有這樣的表格:6.3.25 Timer
    發表于 10-28 12:06 ?13次下載
    對于MCU<b class='flag-5'>看門狗</b>IIWDG WWDG<b class='flag-5'>喂狗</b>時間的配置參考

    窗口看門狗是什么?與獨立看門狗有啥區別?

    STM32有兩個看門狗,獨立看門狗和窗口看門狗。其實兩者的功能是類似的,只是喂狗的限制時間不同。
    發表于 02-09 10:28 ?9次下載
    窗口<b class='flag-5'>看門狗</b>是什么?與獨立<b class='flag-5'>看門狗</b>有啥區別?

    STM32中的獨立看門狗和窗口看門狗

    和窗口看門狗。 獨立看門狗:使用的是外部時鐘,即使主頻不工作了,看門狗也能正常工作。只要在到達喂狗時間的上限前喂狗即表示
    的頭像 發表于 12-22 16:58 ?3185次閱讀

    詳解獨立看門狗實現原理

    這里以大家熟悉的STM32為例給大家講解一下獨立看門狗的配置以及工作過程。STM32F10xxx內置兩個看門狗:獨立看門狗和窗口看門狗,提供了更高的安全性、時間的精確性和使用的
    發表于 12-22 17:01 ?4190次閱讀

    STM32獨立看門狗詳解

    本文將介紹STM32的看門狗中的獨立看門狗,并通過實例來喂狗、體驗喂狗與不喂狗的區別。
    的頭像 發表于 05-01 09:06 ?5662次閱讀
    STM32獨立<b class='flag-5'>看門狗</b><b class='flag-5'>詳解</b>

    MCU如何集成看門狗的功能

    和窗口看門狗。 獨立看門狗 :使用的是外部時鐘,即使主頻不工作了,看門狗也能正常工作。只要在到達喂狗時間的上限前喂狗即表示
    的頭像 發表于 06-22 09:09 ?3023次閱讀
    MCU如何集成<b class='flag-5'>看門狗</b>的功能

    STM32的看門狗原理和示例代碼

    ):IWDG是一個定時器,其計數器在啟用后開始遞增。在程序中,你需要定期喂狗(通過向IWDG的寄存器寫入特定的值),以防止看門狗超時。否則,如果超過了預定的時間,系統
    的頭像 發表于 12-01 08:00 ?3689次閱讀
    STM32的<b class='flag-5'>看門狗</b>原理和示例代碼

    喂狗”的藝術:看門狗不叫,才是系統好

    程序的?,F實里的會追飛盤,PLC里的看門狗追的是跑飛的程序。 本質上是一個計時器,用于監控程序的運行狀態。主
    的頭像 發表于 11-25 10:50 ?301次閱讀
    “<b class='flag-5'>喂狗</b>”的藝術:<b class='flag-5'>看門狗</b>不叫,才是系統好