嵌入式軟體自舉

2021-10-07 15:44:06 字數 2053 閱讀 5475

/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 如何減少記憶體不夠的問題 這些都是經常碰到但難以解決的問題。隨著專案 越來越大,開發人員數量和 數量都變多,完全懂得目標硬體和軟體工作原理的可能僅...

嵌入式軟體測試策略

在嵌入式領域目標系統的應用系統日趨複雜,而由於競爭要求產品快速上市,開發技術日新月異,同時硬體發展的日益穩定,而軟體故障卻日益突出,軟體的重要性逐漸引起人們的重視,越來越多的人認識到嵌入式系統的測試勢在必行。提到嵌入式軟體測試,首先要簡單介紹一些軟體工程的一些觀點,現在,被普遍接受的軟體的定義是 軟...