當(dāng)前位置: 首頁(yè) > 傳感測(cè)量產(chǎn)品 > 工業(yè)傳感器 > 電位器 > 碳膜電位器
發(fā)布日期:2022-04-26 點(diǎn)擊率:31
關(guān)鍵詞: ARM Linux Watchdog
摘要:在嵌入式領(lǐng)域中 Watchdog 看門狗通常被作為用于應(yīng)對(duì)系統(tǒng)或者應(yīng)用意外崩潰的有效手段。其可以在程序執(zhí)行出錯(cuò)并無(wú)法恢復(fù)的情況下,自動(dòng)重啟應(yīng)用甚至復(fù)位整個(gè)系統(tǒng),從而使系統(tǒng)脫離宕機(jī)狀態(tài),恢復(fù)正常業(yè)務(wù)執(zhí)行。這對(duì)于涉及到人身、財(cái)產(chǎn)安全的應(yīng)用,顯得極為重要。本文將基于NXP iMX6 嵌入式平臺(tái)如何使用看門狗進(jìn)行介紹,應(yīng)對(duì) Linux 系統(tǒng)或者應(yīng)用程序意外崩潰。
1). 簡(jiǎn)介
在嵌入式領(lǐng)域中 Watchdog 看門狗通常被作為用于應(yīng)對(duì)系統(tǒng)或者應(yīng)用意外崩潰的有效手段。其可以在程序執(zhí)行出錯(cuò)并無(wú)法恢復(fù)的情況下,自動(dòng)重啟應(yīng)用甚至復(fù)位整個(gè)系統(tǒng),從而使系統(tǒng)脫離宕機(jī)狀態(tài),恢復(fù)正常業(yè)務(wù)執(zhí)行。這對(duì)于涉及到人身、財(cái)產(chǎn)安全的應(yīng)用,顯得極為重要。本文將基于NXP iMX6 嵌入式平臺(tái)如何使用看門狗進(jìn)行介紹,應(yīng)對(duì) Linux 系統(tǒng)或者應(yīng)用程序意外崩潰。
本文所演示的iMX6平臺(tái)來(lái)自于Toradex Colibri iMX6
計(jì)算機(jī)模塊,iMX6芯片自帶看門狗功能,其硬件和早期的 iMX2 一致,所以看門狗驅(qū)動(dòng)仍然沿用 imx2-wdt。看門狗只支持單用戶操作,即只能有一個(gè)實(shí)例來(lái)使用看門狗。因此在 Linux 系統(tǒng)中,用戶可以選擇由自己的應(yīng)用直接使用看門狗,但只限于一個(gè)進(jìn)程。看門狗只監(jiān)控該應(yīng)用,對(duì)于Linux 本身或者其他應(yīng)用則無(wú)法在意外崩潰的情況下觸發(fā)看門狗復(fù)位。或者使用 systemd (183以后的版本)來(lái)操作硬件看門狗,同時(shí)為用 systemd 所管理的單元提供軟件邏輯看門狗。硬件看門狗主要應(yīng)對(duì) Linux 內(nèi)核以及 systemd 自身的崩潰,軟件邏輯看門狗則可以用于用戶自己的應(yīng)用,且不受數(shù)量限制。
2). 用戶應(yīng)用操作
./ 首先在 U-Boot 中設(shè)置看門狗超時(shí)時(shí)間,這里設(shè)置為 60 秒。
------------------------
setenv defargs $defargs imx2-wdt.timeout=60
saveenv
------------------------
./ 編譯完成后運(yùn)行測(cè)試程序。
------------------------
root@colibri-imx6:~# ./wdt-sample-app&
[1] 627
------------------------
./ 終結(jié)該測(cè)試程序進(jìn)程。當(dāng)進(jìn)程被終結(jié)后,看門狗仍舊保持運(yùn)行,但是無(wú)法定時(shí)喂狗。因此,在60s 超時(shí)后,看門狗會(huì)復(fù)位系統(tǒng)。
------------------------
root@colibri-imx6:~#kill 627
root@colibri-imx6:~#[ 45.964155] watchdog: watchdog0: watchdog did notstop!
[1]+ Terminated ./wdt-sample-app
------------------------
./ 當(dāng)模塊由于看門狗復(fù)位時(shí),可以從U-Boot 啟動(dòng)的串口日志發(fā)現(xiàn)復(fù)位的原因。
------------------------
U-Boot2016.11-2.8.5+g02735f4004 (Dec 28 2018 - 01:54:12 +0000)
CPU:Freescale i.MX6DL rev1.1 at 792 MHz
Reset cause:WDOG
I2C: ready
DRAM: 512 MiB
------------------------
3). Systemd 操作
a). 對(duì)于需要使用看門狗監(jiān)控多個(gè)應(yīng)用,可以使用 systemd 來(lái)操作。Systemd 提供硬件看門狗和軟件看門狗支持。硬件看門狗用于監(jiān)控 Linux 內(nèi)核以及 systemd自身的運(yùn)行,一旦出現(xiàn)內(nèi)核崩潰的情況,看門狗超時(shí)將觸發(fā)系統(tǒng)復(fù)位。在 systemd 中使用硬件看門狗非常簡(jiǎn)單,只需要配置 /etc/systemd/system.conf中的RuntimeWatchdogSec= 參數(shù),將其設(shè)置超時(shí)時(shí)間即可。在規(guī)定時(shí)間如果沒有喂狗,將觸發(fā)復(fù)位。systemd 通常會(huì)在所設(shè)置時(shí)間的一半為間隔進(jìn)行喂狗。ShutdownWatchdogSec= 則可以設(shè)置關(guān)機(jī)超時(shí)時(shí)間,如果系統(tǒng)在該時(shí)間內(nèi)沒有完成關(guān)機(jī),也將系統(tǒng)復(fù)位。
./ 為了觸發(fā)內(nèi)核崩潰的情況,我們需要開啟內(nèi)核調(diào)試的 MAGIC_SYSRQ 功能,該選項(xiàng)在 Toradex 默認(rèn)的 Linux BSP 中是關(guān)閉的。打開后重新編譯內(nèi)核。
------------------------
CONFIG_MAGIC_SYSRQ=y
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
CONFIG_DEBUG_KERNEL=y
------------------------
./ 設(shè)置超時(shí)時(shí)間為60秒,RuntimeWatchdogSec=60。 啟動(dòng)查看系統(tǒng)日志,顯示硬件看門狗超時(shí)時(shí)間被設(shè)置為1分鐘。
------------------------
下一篇: PLC、DCS、FCS三大控
上一篇: MATLAB和Simulink在航