/etc/inittab,在該檔案中又載入了rc.sysinit和rc.d等檔案。
systemd init中建立乙個自啟動service。
裝置操作無反應,使用者以為裝置壞掉了,並不知道需要斷電重啟,對產品質量懷疑。
程式崩潰後所有功能中斷,有些重要並且需要長時間穩定執行的功能無法延續,例如:定時鬧鐘等。
程式測試不充分,有bug導致程式崩潰,可以降低概率,但是無法徹底避免。
小記憶體裝置中程式長時間執行,記憶體碎片積累以及其它問題導致程式崩潰。
寫個監控程式,判斷程式是否執行正常,當程式執行不正常則重啟程式或者裝置。
使用看門狗,有軟體看門狗,也有硬體看門狗。
處理載體為應用程式,**實現可靠性和穩定性相對於核心和硬體實現差些。
在資源不足時,主程式和監控程式可能先後被系統殺死,導致監控程式沒起作用。
異常情況下,系統看起來像宕機,應用層無法做任何處理,這種情況下核心本身可能並沒有停止工作,只是不提供服務了,導致監控程式沒起作用。
硬體看門狗
軟體看門狗
wdt_open:開啟裝置,應用程式呼叫open時進入該函式。
wdt_close :關閉裝置,應用程式呼叫close時進入該函式
wdt_write :寫裝置,若傳入資料大小不為0則餵狗;應用程式呼叫write時進入該函式.
wdt_ioctl :這個函式是最主要的,原型如下(driver\watchdog):
static long wdt_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
; switch (cmd)
if (options & wdios_enablecard)
return retval;
}case wdioc_keepalive:
wdt_ping();
break;
case wdioc_settimeout:
if (get_user(new_timeout, p))
return -efault;
if (wdt_set_heartbeat(new_timeout))
return -einval;
wdt_ping();
/* fall */
case wdioc_gettimeout:
return put_user(timeout, p);
default:
return -enotty;
}return 0;
}其主要的幾個引數如下:
wdioc_keepalive :餵狗,同write函式功能類似
wdioc_settimeout :設定超時值
wdioc_gettimeout :獲取超時值
wdioc_setoptions:設定看門狗狀態,開啟(wdios_enablecard)或關閉(wdios_disablecard)
open裝置(/dev/watchdog)
fd = open("/dev/watchdog", o_rdwr);
開啟/停止 watchdog
ioctl(fd, wdioc_setoptions, wdios_enablecard); //開啟
ioctl(fd, wdioc_setoptions, wdios_disablecard) //停止
設定餵食超時時長
int timeout = 60;
ioctl(fd, wdioc_settimeout, &timeout);
餵狗
* 迴圈執行
方式1:write
write(fd, &arg, sizeof(arg));//arg必須是非0數,否則餵狗失敗
方式2:ioctl
ioctl(fd, wdioc_keepalive, null);
關閉裝置節點
close(fd);
頻繁重啟 嵌入式軟體測試
嵌入式軟體測試 嵌入式軟體測試 嵌入式測試或叫交叉測試 cross test 的日的與非嵌入式軟體是相同的。但是,在嵌入式系統設計中,軟體正越來越多地取代硬體,以降低系統的成本,獲得更大的靈活性,這就需要使用更好的測試方法和工具進行嵌入式和實時軟體的測試。通常嵌入式系統對可靠性的要求比較高。嵌入式系...
嵌入式軟體測試
如何在目標板上實時測試應用程式 為什麼嵌入式系統測試困難?在目標板上測試面臨的系列問題 2 如何累積可重複自動執行的測試 3 如何盡可能減少人工工作 4 如何減少記憶體不夠的問題 這些都是經常碰到但難以解決的問題。隨著專案 越來越大,開發人員數量和 數量都變多,完全懂得目標硬體和軟體工作原理的可能僅...
嵌入式軟體測試策略
在嵌入式領域目標系統的應用系統日趨複雜,而由於競爭要求產品快速上市,開發技術日新月異,同時硬體發展的日益穩定,而軟體故障卻日益突出,軟體的重要性逐漸引起人們的重視,越來越多的人認識到嵌入式系統的測試勢在必行。提到嵌入式軟體測試,首先要簡單介紹一些軟體工程的一些觀點,現在,被普遍接受的軟體的定義是 軟...