欧美日韩亚州综合,国产一区二区三区影视,欧美三级三级三级爽爽爽,久久中文字幕av一区二区不卡

你的位置:首頁 > 測試測量 > 正文

探秘嵌入式工程師的百寶箱!高可靠性嵌入式系統的7大技巧

發布時間:2015-03-25 責任編輯:echolady

【導讀】高可靠性代碼并非一蹴而就的,這是每個嵌入式開發工程師都需要經歷的艱難過程。設計過程中,開發人員需要維護并管理系統的每個比特和字節。本文就探秘嵌入式工程師的百寶箱,揭秘嵌入式系統設計的7大技巧。

從規范完善的開發周期到嚴格執行和系統檢查,開發高可靠性嵌入式系統的技術有許多種。本文介紹了7個易操作且可以長久使用的技巧,它們對于確保系統更加可靠地運行并捕獲異常行為大有幫助。

技巧#1——用已知值填充ROM

軟件開發人員往往都是非常樂觀的一群人,只要讓他們的代碼忠實地長時間地運行就可以了,僅此而已。微控制器跳出應用程序空間并在非預想的代碼空間中執行這種情況似乎是相當少有的。然而,這種情況發生的機會并不比緩存溢出或錯誤指針失去引用少。它確實會發生!發生這種情況后的系統行為將是不確定的,因為默認情況下內存空間都是0xFF,或者由于內存區通常沒有寫過,其中的值可能只有上帝才知道。

不過有相當完備的linker或IDE技巧可以用來幫助識別這樣的事件并從中恢復系統。技巧就是使用FILL命令對未用ROM填充已知的位模式。要填充未使用的內存,有很多不同的可能組合可以使用,但如果是想建立更加可靠的系統,最明顯的選擇是在這些位置放置ISR fault handler。如果系統出了某些差錯,處理器開始執行程序空間以外的代碼,就會觸發ISR,并在決定校正行動之前提供儲存處理器、寄存器和系統狀態的機會。

技巧#2——檢查應用程序的CRC

對嵌入式工程師來說一個很大的好處是,我們的IDE和工具鏈可以自動產生應用程序或內存空間校驗和(Checksum),從而根據這個校驗和驗證應用程序是否完好。有趣的是,在許多這些案例中,只有在將程序代碼加載到設備時,才會用到校驗和。

然而,如果CRC或校驗和保持在內存中,那么驗證應用程序在啟動時(或甚至對長時間運行的系統定期驗證)是否仍然完好是確保意外之事不會發生的極好途徑。現在一個編程過的應用程序發生改變的概率是很小的,但考慮每年交付的數十億個微控制器以及可能惡劣的工作環境,應用程序崩潰的機會并不是零。更有可能的是,系統中的一個缺陷可能導致某一扇區發生閃存寫入或閃存擦除,從而破壞應用程序的完整性。

技巧#3——在啟動時執行RAM檢查


為了建立一個更加可靠和扎實的系統,確保系統硬件正常工作非常重要。畢竟硬件會發生故障。(幸運的是軟件永遠不會發生故障,軟件只會做代碼要它做的事,不管是正確的還是錯誤的)。在啟動時驗證RAM的內部或外部沒有問題,是確保硬件可以如預期般運作的一個好方法。

有許多不同的方法可用于執行RAM檢查,但常用的方法是寫入一個已知的模式,然后等上一小段時間再回讀。結果應該是所讀就是所寫。真相是,在大多數情況下RAM檢查是通過的,這也是我們想要的結果。但也有極小的可能性檢查不通過,這時就為系統標示出硬件問題提供了極好的機會。

技巧#4——使用堆棧監視器


對許多的嵌入式開發者而言,堆棧似乎是一股相當神秘的力量。當奇怪的事情開始發生,工程師終于被難倒了,他們開始思考,也許堆棧中發生了什么事。結果是盲目地調整堆棧的大小和位置等等。但該錯誤往往是與堆棧無關的,但怎能如此確定?畢竟,有多少工程師真的實際執行過最壞情況下的堆棧大小分析?

堆棧大小是在編譯時就靜態分配好的,但堆棧是以動態的方式使用的。隨著代碼的執行,應用程序需要的變量、返回的地址和其它信息被不斷存儲在堆棧中。這種機制導致堆棧在其分配的內存中不斷增長。然而,這種增長有時會超出編譯時確定的容量極限,導致堆棧破壞相鄰內存區域的數據。

絕對確保堆棧正常工作的一種方法是實現堆棧監視器,將它作為系統“保健”代碼的一部分(有多少工程師會這樣做?)。堆棧監視器會在堆棧和“其它”內存區域之間創建一個緩沖區域,并填充已知的位模式。然后監視器會不斷的監視圖案是否有任何變化。如果該位模式發生了改變,那就意味著堆棧增長得太大了,即將要把系統推向黑暗地獄!此時監視器可以記錄事件的發生、系統狀態以及任何其它有用的數據,供日后用于問題的診斷。

大多數實時操作系統(RTOS)或實現了內存保護單元(MPU)的微控制器系統中都提供有堆棧監視器。可怕的是,這些功能默認都是關閉狀態,或者經常被開發人員有意關閉。在網絡上快速搜尋一下可以發現,很多人建議關閉實時操作系統中的堆棧監視器以節省56字節的閃存空間。等等,這可是得不償失的做法!

技巧#5 - 使用MPU

在過去,是很難在一個小而廉價的微控制器中找到內存保護單元(MPU)的,但這種情況已經開始改變。現在從高端到低端的微控制器都已經有MPU,而這些MPU為嵌入式軟件開發人員提供了一個可以大幅提高其固件(firmware)魯棒性(robustness)的機會。

MPU 已逐漸與操作系統耦合,以便建立內存空間,其中的處理都分開,或任務可執行其代碼,而不用擔心被stomped on。倘若真有事情發生,不受控制的處理會被取消,也會執行其他的保護措施。請留意帶有這種組件的微控制器,如果有,請多加利用它的這種特性。

技巧#6 - 建立一個強大的看門狗系統


你經常會發現的一種總是最受喜愛的看門狗(watchdog)實現是,在看門狗被啟用之處(這是一個很好的開始),但也是可以用周期性定時器將該看門狗清零之處;定時器的啟用是完全與程序中出現的任何情況隔離的。使用看門狗的目的是協助確保如果出現錯誤,看門狗不會被清零,即當工作暫停,系統會被迫去執行硬件重設定(hardware reset),以便恢復。使用與系統活動獨立的定時器可以讓看門狗保持清零,即使系統已失效。

對應用任務如何整合到看門狗系統中,嵌入式開發人員需要仔細考慮和設計。例如,有種技術可能可以讓每個在一定時期內運行的任務標示它們可以成功地完成其任 務。在此事件中,看門狗不被清零,強制被復位。還有一些比較先進的技術,像是使用外部看門狗處理器,它可用來監視主處理器如何表現,反之亦然。

對一個可靠的系統而言,建立一個強大的看門狗系統是很重要的。由于有太多的技術,難以在這幾個段落中完全涵蓋,但針對此一議題,筆者未來還會發表相關的文章。

技巧#7 - 避免易失存儲器分配

不習慣在資源有限環境下工作的工程師,可能會試圖使用其編程語言的特性,這種語言讓他們可以使用易失存儲器分配。畢竟,這是一種常在計算器系統中使用的技術,在計算器系統中,只有在有必要時,內存才會被分配。例如,以C開發時,工程師可能傾向于使用malloc來分配在堆(heap)上的空間。有一個操 作會執行,一旦完成,可以使用free將被分配的內存返回,以便堆的使用。

在資源受限的系統,這可能是一場災難!使用易失存儲器分配的其中一個問題是,錯誤或不當的技術可能會導致內存泄漏或內存碎片。如果出現這些問題時,大多數的嵌入式系統并沒有 資源或知識來監視堆或妥善地處理它。而當它們發生時,如果應用程序提出對空間的要求,但卻沒有所請求的空間可以使用,會發生什么事呢?

使用易失存儲器分配所產生的問題是很復雜的,要妥善處理這些問題,可以說是一個噩夢!一種替代的方法是,直接以靜態的方式,簡化內存的分配。例如,只要在 程序中簡單地建立一個大小為256字節長的緩沖區,而不是經由malloc請求這樣大小的內存緩沖區。此一分配的內存可在整個應用程序的生命周期期 間保持,且不會有堆或內存碎片問題方面的顧慮。

結語

這些都只是一些可以讓開發人員開始建立更可靠嵌入式系統的方法。另外還有很多其他技術,例如利用良好的編碼標準、位翻轉的監測、執行數組和指針邊界檢查,及使用斷言等。所有這些技術都是讓設計者可以開發出可靠性更高嵌入式系統的秘訣。

相關閱讀:

QNX無線架構為嵌入式系統帶來智能手機的連接性
選型必備:嵌入式應用中存儲器的選型秘籍
電路天天讀:CAN總線與以太網的嵌入式網關電路的設計與實現

要采購微控制器么,點這里了解一下價格!
特別推薦
技術文章更多>>
技術白皮書下載更多>>
熱門搜索
?

關閉

?

關閉

欧美日韩亚州综合,国产一区二区三区影视,欧美三级三级三级爽爽爽,久久中文字幕av一区二区不卡
欧美日韩美少妇| 精品国产自在久精品国产| 欧美不卡123| 亚洲精品日产精品乱码不卡| 成人性视频免费网站| 国产欧美精品日韩区二区麻豆天美| 国产美女精品在线| 成人av电影在线播放| 亚洲色欲色欲www| 91久久精品一区二区二区| 五月综合激情婷婷六月色窝| 日韩一区二区精品在线观看| 精一区二区三区| 国产精品久久免费看| 91免费看片在线观看| 午夜视频一区二区三区| 欧美一二三区精品| 成人精品免费网站| 亚洲韩国一区二区三区| 欧美一区二区福利在线| 国产一区二区三区黄视频| 国产女同互慰高潮91漫画| 色狠狠一区二区三区香蕉| 日韩精品亚洲专区| 国产精品无人区| 777午夜精品免费视频| 国产毛片精品国产一区二区三区| 国产精品久久一卡二卡| 国产精品一级黄| 一区二区三区国产精品| 久久婷婷色综合| 欧美午夜精品久久久久久超碰| 亚洲sss视频在线视频| 国产农村妇女毛片精品久久麻豆 | 国产suv精品一区二区6| 亚洲精品高清在线观看| 久久久无码精品亚洲日韩按摩| 99re8在线精品视频免费播放| 午夜av电影一区| 国产精品国产三级国产专播品爱网| 欧美日韩国产天堂| av电影一区二区| 狠狠v欧美v日韩v亚洲ⅴ| 一区二区三区在线免费| 国产色91在线| 精品国免费一区二区三区| 色综合视频一区二区三区高清| 国产精品一区久久久久| 婷婷一区二区三区| 中文字幕亚洲综合久久菠萝蜜| 日韩精品一区国产麻豆| 欧美天堂亚洲电影院在线播放| 国产精品一区在线观看乱码| 另类成人小视频在线| 亚洲精品国产a| 中文字幕一区二区三区在线不卡| 欧美一级日韩免费不卡| 欧美日韩你懂得| 欧美性xxxxx极品少妇| 色综合久久中文综合久久牛| 成人av动漫在线| 国产精品 欧美精品| 国产精品 欧美精品| 麻豆免费看一区二区三区| 日韩激情一区二区| 亚洲一区二区在线播放相泽| 一区二区三区四区在线播放| 亚洲国产精品精华液2区45| 久久精品人人爽人人爽| 久久久精品黄色| 国产欧美日韩不卡免费| 国产婷婷精品av在线| 中文字幕av一区二区三区| 国产三级久久久| 国产精品视频在线看| 国产精品日韩成人| 中文字幕亚洲区| 亚洲人精品一区| 午夜婷婷国产麻豆精品| 日韩高清不卡一区| 日本不卡在线视频| 久99久精品视频免费观看| 久久99精品久久只有精品| 国产在线国偷精品产拍免费yy| 韩国三级在线一区| 国产精品123区| 91啪在线观看| 欧美手机在线视频| 日韩丝袜情趣美女图片| 国产亚洲精品aa午夜观看| 国产精品九色蝌蚪自拍| 亚洲三级电影网站| 亚洲夂夂婷婷色拍ww47| 亚洲成人一区二区| 裸体歌舞表演一区二区| 国产91丝袜在线播放0| 91日韩精品一区| 欧美电影影音先锋| 久久久另类综合| 国产精品福利电影一区二区三区四区 | 亚洲mv在线观看| 国模无码大尺度一区二区三区| 豆国产96在线|亚洲| 91免费版在线| 日韩三级精品电影久久久 | 91久久香蕉国产日韩欧美9色| 色呦呦日韩精品| 91麻豆精品国产自产在线| 国产精品色婷婷| 蜜臀va亚洲va欧美va天堂| 精品写真视频在线观看| 99国产精品99久久久久久| 欧美日韩卡一卡二| 久久精品一区二区三区四区| 亚洲欧美日韩一区二区| 久久精品国产色蜜蜜麻豆| 91在线视频免费91| 精品久久久久久久久久久久久久久久久| 久久一日本道色综合| 亚洲国产va精品久久久不卡综合| 免费观看久久久4p| 国产精品久久久久久久久免费丝袜| 日韩视频免费观看高清在线视频| 中文字幕亚洲区| 精品一区二区三区影院在线午夜| 一本久道中文字幕精品亚洲嫩| 精品国产1区2区3区| 亚洲成人先锋电影| 99vv1com这只有精品| 日韩欧美在线网站| 亚洲综合色成人| 成人国产精品免费观看视频| 日韩精品一区二区三区swag| 亚洲一区在线观看网站| 色一区在线观看| 国产精品久久久久天堂| 成人高清伦理免费影院在线观看| 欧美成人bangbros| 日韩国产精品久久久| 欧美中文字幕一区| 一区二区三区自拍| 欧美在线观看视频一区二区 | 午夜精品一区在线观看| 在线亚洲一区二区| 夜夜精品视频一区二区| 色综合天天综合在线视频| 国产精品不卡在线观看| 94-欧美-setu| 亚洲欧美日韩在线| 在线观看视频欧美| 亚洲大片精品永久免费| 欧美日韩一区二区在线观看视频| 亚洲卡通动漫在线| 欧美日韩一区二区在线观看| 日韩精品免费视频人成| 欧美成人性福生活免费看| 精品一区二区三区在线观看国产| 欧美成人一区二区三区片免费| 九九久久精品视频| 中文一区在线播放| 欧美日韩在线综合| 日本一道高清亚洲日美韩| 精品国产髙清在线看国产毛片 | 成人动漫在线一区| 自拍偷拍欧美精品| 欧美视频一区在线| 久久国产乱子精品免费女| 国产精品久久久久aaaa樱花| 色婷婷久久一区二区三区麻豆| 亚洲午夜久久久久| 日韩精品综合一本久道在线视频| 国产一区欧美一区| 亚洲无线码一区二区三区| 欧美mv和日韩mv的网站| 不卡电影一区二区三区| 亚洲成人1区2区| 538在线一区二区精品国产| 精品一区二区综合| 亚洲乱码国产乱码精品精小说 | 蜜臀av一级做a爰片久久| 国产日韩成人精品| 欧美精品乱码久久久久久按摩| 国产一区二区导航在线播放| 亚洲免费大片在线观看| 精品久久久久一区| 欧美午夜宅男影院| 国产在线麻豆精品观看| 亚洲第一成人在线| 国产精品视频免费看| 欧美精品乱人伦久久久久久| 波多野结衣亚洲| 国内成人精品2018免费看| 日韩电影在线观看一区| 一区二区三区在线视频播放 | 亚洲第一久久影院| 国产精品网站导航| 欧美成人一区二区| 欧美精品三级日韩久久| 欧美在线免费播放| 91在线porny国产在线看|