時間:2018-11-30 17:57:04來æºï¼šæŽ§åˆ¶å·¥ç¨‹ç¶²è«–壇 作者:aaing
æˆç‚ºä¸€å€‹æ£å¼çš„開發工程師。它是一個艱辛的éŽç¨‹ï¼Œéœ€è¦é–‹ç™¼äººå“¡ç¶è·å’Œç®¡ç†ç³»çµ±çš„æ¯å€‹æ¯”ç‰¹å’Œå—節。從è¦èŒƒå®Œå–„çš„é–‹ç™¼å‘¨æœŸåˆ°åš´æ ¼åŸ·è¡Œå’Œç³»çµ±æª¢æŸ¥ï¼Œé–‹ç™¼é«˜å¯é 性系統的技術有許多種。今天給大家介紹7個易æ“作且å¯ä»¥é•·ä¹…使用的技巧,它們å°äºŽç¢ºä¿ç³»çµ±æ›´åŠ å¯é 地é‹è¡Œå¹¶æ•ç²ç•°å¸¸è¡Œç‚ºå¤§æœ‰å¹«åŠ©ã€‚
技巧1——用已知值填充ROM
軟件開發人員往往都是éžå¸¸æ¨‚觀的一群人,åªè¦è®“ä»–å€‘çš„ä»£ç¢¼å¿ å¯¦åœ°é•·æ™‚é–“åœ°é‹è¡Œå°±å¯ä»¥äº†ï¼Œåƒ…æ¤è€Œå·²ã€‚微控制器跳出應用程åºç©ºé–“并在éžé 想的代碼空間ä¸åŸ·è¡Œé€™ç¨®æƒ…æ³ä¼¼ä¹Žæ˜¯ç›¸ç•¶å°‘有的。然而,這種情æ³ç™¼ç”Ÿçš„æ©Ÿæœƒå¹¶ä¸æ¯”ç·©å˜æº¢å‡ºæˆ–錯誤指é‡å¤±åŽ»å¼•ç”¨å°‘ã€‚å®ƒç¢ºå¯¦æœƒç™¼ç”Ÿ!發生這種情æ³åŽçš„系統行為將是ä¸ç¢ºå®šçš„ï¼Œå› ç‚ºé»˜èªæƒ…æ³ä¸‹å…§å˜ç©ºé–“都是0xFF,或者由于內å˜å€é€šå¸¸æ²’有寫éŽï¼Œå…¶ä¸çš„值å¯èƒ½åªæœ‰ä¸Šå¸æ‰çŸ¥é“。
ä¸éŽæœ‰ç›¸ç•¶å®Œå‚™çš„linker或IDE技巧å¯ä»¥ç”¨ä¾†å¹«åŠ©è˜åˆ¥é€™æ¨£çš„äº‹ä»¶å¹¶å¾žä¸æ¢å¾©ç³»çµ±ã€‚技巧就是使用FILL命令尿œªç”¨ROMå¡«å……å·²çŸ¥çš„ä½æ¨¡å¼ã€‚è¦å¡«å……未使用的內å˜ï¼Œæœ‰å¾ˆå¤šä¸åŒçš„å¯èƒ½çµ„åˆå¯ä»¥ä½¿ç”¨ï¼Œä½†å¦‚æžœæ˜¯æƒ³å»ºç«‹æ›´åŠ å¯é çš„ç³»çµ±ï¼Œæœ€æ˜Žé¡¯çš„é¸æ“‡æ˜¯åœ¨é€™äº›ä½ç½®æ”¾ç½®ISRfaulthandler。如果系統出了æŸäº›å·®éŒ¯ï¼Œè™•ç†å™¨é–‹å§‹åŸ·è¡Œç¨‹åºç©ºé–“以外的代碼,就會觸發ISRï¼Œå¹¶åœ¨æ±ºå®šæ ¡æ£è¡Œå‹•之剿供儲å˜è™•ç†å™¨ã€å¯„å˜å™¨å’Œç³»çµ±ç‹€æ…‹çš„æ©Ÿæœƒã€‚
技巧2——檢查應用程åºçš„CRC
å°å·¥ç¨‹å¸«ä¾†èªªä¸€å€‹å¾ˆå¤§çš„好處是,我們的IDE和工具éˆå¯ä»¥è‡ªå‹•ç”¢ç”Ÿæ‡‰ç”¨ç¨‹åºæˆ–å…§å˜ç©ºé–“æ ¡é©—å’Œ(Checksum)ï¼Œå¾žè€Œæ ¹æ“šé€™å€‹æ ¡é©—å’Œé©—è‰æ‡‰ç”¨ç¨‹åºæ˜¯å¦å®Œå¥½ã€‚有趣的是,在許多這些案例ä¸ï¼Œåªæœ‰åœ¨å°‡ç¨‹åºä»£ç¢¼åŠ è¼‰åˆ°è¨å‚™æ™‚ï¼Œæ‰æœƒç”¨åˆ°æ ¡é©—和。
然而,如果CRCæˆ–æ ¡é©—å’Œä¿æŒåœ¨å…§å˜ä¸ï¼Œé‚£ä¹ˆé©—è‰æ‡‰ç”¨ç¨‹åºåœ¨å•Ÿå‹•時(或甚至å°é•·æ™‚é–“é‹è¡Œçš„系統定期驗è‰)是å¦ä»ç„¶å®Œå¥½æ˜¯ç¢ºä¿æ„å¤–ä¹‹äº‹ä¸æœƒç™¼ç”Ÿçš„æ¥µå¥½é€”徑?,F在一個編程éŽçš„æ‡‰ç”¨ç¨‹åºç™¼ç”Ÿæ”¹è®Šçš„æ¦‚率是很å°çš„,但考慮æ¯å¹´äº¤ä»˜çš„æ•¸å億個微控制器以åŠå¯èƒ½æƒ¡åŠ£çš„å·¥ä½œç’°å¢ƒï¼Œæ‡‰ç”¨ç¨‹åºå´©æ½°çš„æ©Ÿæœƒå¹¶ä¸æ˜¯é›¶ã€‚更有å¯èƒ½çš„æ˜¯ï¼Œç³»çµ±ä¸çš„一個缺陷å¯èƒ½å°Žè‡´æŸä¸€æ‰‡å€ç™¼ç”Ÿé–ƒå˜å¯«å…¥æˆ–é–ƒå˜æ“¦é™¤ï¼Œå¾žè€Œç ´å£žæ‡‰ç”¨ç¨‹åºçš„完整性。
技巧3——在啟動時執行RAM檢查
ç‚ºäº†å»ºç«‹ä¸€å€‹æ›´åŠ å¯é 和扎實的系統,確ä¿ç³»çµ±ç¡¬ä»¶æ£å¸¸å·¥ä½œéžå¸¸é‡è¦ã€‚畢竟硬件會發生故障。(幸é‹çš„æ˜¯è»Ÿä»¶æ°¸é 䏿œƒç™¼ç”Ÿæ•…éšœï¼Œè»Ÿä»¶åªæœƒåšä»£ç¢¼è¦å®ƒåšçš„事,ä¸ç®¡æ˜¯æ£ç¢ºçš„還是錯誤的)。在啟動時驗è‰RAM的內部或外部沒有å•題,是確ä¿ç¡¬ä»¶å¯ä»¥å¦‚é æœŸèˆ¬é‹ä½œçš„一個好方法。
有許多ä¸åŒçš„æ–¹æ³•å¯ç”¨äºŽåŸ·è¡ŒRAM檢查,但常用的方法是寫入一個已知的模å¼ï¼Œç„¶åŽç‰ä¸Šä¸€å°æ®µæ™‚é–“å†å›žè®€ã€‚çµæžœæ‡‰è©²æ˜¯æ‰€è®€å°±æ˜¯æ‰€å¯«ã€‚真相是,在大多數情æ³ä¸‹RAM檢查是通éŽçš„,這也是我們想è¦çš„çµæžœã€‚但也有極å°çš„å¯èƒ½æ€§æª¢æŸ¥ä¸é€šéŽï¼Œé€™æ™‚就為系統標示出硬件å•題æä¾›äº†æ¥µå¥½çš„æ©Ÿæœƒã€‚
技巧4â€”â€”ä½¿ç”¨å †æ£§ç›£è¦–å™¨
å°è¨±å¤šçš„嵌入å¼é–‹ç™¼è€…è€Œè¨€ï¼Œå †æ£§ä¼¼ä¹Žæ˜¯ä¸€è‚¡ç›¸ç•¶ç¥žç§˜çš„åŠ›é‡ã€‚當奇怪的事情開始發生,工程師終于被難倒了,他們開始æ€è€ƒï¼Œä¹Ÿè¨±å †æ£§ä¸ç™¼ç”Ÿäº†ä»€ä¹ˆäº‹ã€‚çµæžœæ˜¯ç›²ç›®åœ°èª¿æ•´å †æ£§çš„大å°å’Œä½ç½®ç‰ç‰ã€‚ä½†è©²éŒ¯èª¤å¾€å¾€æ˜¯èˆ‡å †æ£§ç„¡é—œçš„ï¼Œä½†æ€Žèƒ½å¦‚æ¤ç¢ºå®š?ç•¢ç«Ÿï¼Œæœ‰å¤šå°‘å·¥ç¨‹å¸«çœŸçš„å¯¦éš›åŸ·è¡ŒéŽæœ€å£žæƒ…æ³ä¸‹çš„å †æ£§å¤§å°åˆ†æž?
å †æ£§å¤§å°æ˜¯åœ¨ç·¨è¯æ™‚å°±éœæ…‹åˆ†é…å¥½çš„ï¼Œä½†å †æ£§æ˜¯ä»¥å‹•æ…‹çš„æ–¹å¼ä½¿ç”¨çš„。隨著代碼的執行,應用程åºéœ€è¦çš„變é‡ã€è¿”回的地å€å’Œå…¶å®ƒä¿¡æ¯è¢«ä¸æ–·å˜å„²åœ¨å †æ£§ä¸ã€‚é€™ç¨®æ©Ÿåˆ¶å°Žè‡´å †æ£§åœ¨å…¶åˆ†é…的內å˜ä¸ä¸æ–·å¢žé•·ã€‚ç„¶è€Œï¼Œé€™ç¨®å¢žé•·æœ‰æ™‚æœƒè¶…å‡ºç·¨è¯æ™‚ç¢ºå®šçš„å®¹é‡æ¥µé™ï¼Œå°Žè‡´å †æ£§ç ´å£žç›¸é„°å…§å˜å€åŸŸçš„æ•¸æ“šã€‚
絕å°ç¢ºä¿å †æ£§æ£å¸¸å·¥ä½œçš„一種方法是實ç¾å †æ£§ç›£è¦–器,將它作為系統“ä¿å¥â€ä»£ç¢¼çš„一部分(有多少工程師會這樣åš?)ã€‚å †æ£§ç›£è¦–å™¨æœƒåœ¨å †æ£§å’Œâ€œå…¶å®ƒâ€å…§å˜å€åŸŸä¹‹é–“創建一個緩沖å€åŸŸï¼Œå¹¶å¡«å……å·²çŸ¥çš„ä½æ¨¡å¼ã€‚ç„¶åŽç›£è¦–å™¨æœƒä¸æ–·çš„ç›£è¦–åœ–æ¡ˆæ˜¯å¦æœ‰ä»»ä½•è®ŠåŒ–ã€‚å¦‚æžœè©²ä½æ¨¡å¼ç™¼ç”Ÿäº†æ”¹è®Šï¼Œé‚£å°±æ„å‘³è‘—å †æ£§å¢žé•·å¾—å¤ªå¤§äº†ï¼Œå³å°‡è¦æŠŠç³»çµ±æŽ¨å‘黑暗地ç„!æ¤æ™‚監視器å¯ä»¥è¨˜éŒ„事件的發生ã€ç³»çµ±ç‹€æ…‹ä»¥åŠä»»ä½•其它有用的數據,供日åŽç”¨äºŽå•題的診斷。
大多數實時æ“作系統()或實ç¾äº†å…§å˜ä¿è·å–®å…ƒ(MPU)的微控制器系統ä¸éƒ½æä¾›æœ‰å †æ£§ç›£è¦–器??膳碌氖?,這些功能默èªéƒ½æ˜¯é—œé–‰ç‹€æ…‹ï¼Œæˆ–者經常被開發人員有æ„關閉。在網絡上快速æœå°‹ä¸€ä¸‹å¯ä»¥ç™¼ç¾ï¼Œå¾ˆå¤šäººå»ºè°é—œé–‰å¯¦æ™‚æ“作系統ä¸çš„å †æ£§ç›£è¦–å™¨ä»¥ç¯€çœ56å—節的閃å˜ç©ºé–“ç‰ç‰ï¼Œé€™å¯æ˜¯å¾—ä¸å„Ÿå¤±çš„åšæ³•!
技巧5-使用MPU
在éŽåŽ»ï¼Œæ˜¯å¾ˆé›£åœ¨ä¸€å€‹å°è€Œå»‰åƒ¹çš„å¾®æŽ§åˆ¶å™¨ä¸æ‰¾åˆ°å…§å˜ä¿è·å–®å…ƒ(MPU)的,但這種情æ³å·²ç¶“開始改變?,F在從高端到低端的微控制器都已經有MPU,而這些MPU為嵌入å¼è»Ÿä»¶é–‹ç™¼äººå“¡æä¾›äº†ä¸€å€‹å¯ä»¥å¤§å¹…æé«˜å…¶å›ºä»¶(firmware)靿£’性(robustness)的機會。
MPU已逿¼¸èˆ‡æ“作系統耦åˆï¼Œä»¥ä¾¿å»ºç«‹å…§å˜ç©ºé–“,其ä¸çš„處ç†éƒ½åˆ†é–‹ï¼Œæˆ–任務å¯åŸ·è¡Œå…¶ä»£ç¢¼ï¼Œè€Œä¸ç”¨æ“”心被stompedon。倘若真有事情發生,ä¸å—æŽ§åˆ¶çš„è™•ç†æœƒè¢«å–消,也會執行其他的ä¿è·æŽªæ–½ã€‚è«‹ç•™æ„å¸¶æœ‰é€™ç¨®çµ„ä»¶çš„å¾®æŽ§åˆ¶å™¨ï¼Œå¦‚æžœæœ‰ï¼Œè«‹å¤šåŠ åˆ©ç”¨å®ƒçš„é€™ç¨®ç‰¹æ€§ã€‚
技巧6-建立一個強大的看門狗系統
ä½ ç¶“å¸¸æœƒç™¼ç¾çš„一種總是最å—喜愛的看門狗(watchdog)å¯¦ç¾æ˜¯ï¼Œåœ¨çœ‹é–€ç‹—被啟用之處(這是一個很好的開始),但也是å¯ä»¥ç”¨å‘¨æœŸæ€§å®šæ™‚器將該看門狗清零之處;定時器的啟用是完全與程åºä¸å‡ºç¾çš„任何情æ³éš”離的。使用看門狗的目的是å”助確ä¿å¦‚果出ç¾éŒ¯èª¤ï¼Œçœ‹é–€ç‹—䏿œƒè¢«æ¸…零,å³ç•¶å·¥ä½œæš«åœï¼Œç³»çµ±æœƒè¢«è¿«åŽ»åŸ·è¡Œç¡¬ä»¶é‡è¨å®š(hardwarereset),以便æ¢å¾©ã€‚使用與系統活動ç¨ç«‹çš„定時器å¯ä»¥è®“çœ‹é–€ç‹—ä¿æŒæ¸…零,å³ä½¿ç³»çµ±å·²å¤±æ•ˆã€‚
å°æ‡‰ç”¨ä»»å‹™å¦‚何整åˆåˆ°çœ‹é–€ç‹—系統ä¸ï¼ŒåµŒå…¥å¼é–‹ç™¼äººå“¡éœ€è¦ä»”細考慮和è¨è¨ˆã€‚例如,有種技術å¯èƒ½å¯ä»¥è®“æ¯å€‹åœ¨ä¸€å®šæ™‚期內é‹è¡Œçš„任務標示它們å¯ä»¥æˆåŠŸåœ°å®Œæˆå…¶ä»»å‹™ã€‚在æ¤äº‹ä»¶ä¸ï¼Œçœ‹é–€ç‹—ä¸è¢«æ¸…零,強制被復ä½ã€‚é‚„æœ‰ä¸€äº›æ¯”è¼ƒå…ˆé€²çš„æŠ€è¡“ï¼Œåƒæ˜¯ä½¿ç”¨å¤–部看門狗處ç†å™¨ï¼Œå®ƒå¯ç”¨ä¾†ç›£è¦–主處ç†å™¨å¦‚何表ç¾ï¼Œå之亦然。å°ä¸€å€‹å¯é 的系統而言,建立一個強大的看門狗系統是很é‡è¦çš„。
技巧7-é¿å…易失å˜å„²å™¨åˆ†é…
ä¸ç¿’æ…£åœ¨è³‡æºæœ‰é™ç’°å¢ƒä¸‹å·¥ä½œçš„工程師,å¯èƒ½æœƒè©¦åœ–使用其編程語言的特性,這種語言讓他們å¯ä»¥ä½¿ç”¨æ˜“失å˜å„²å™¨åˆ†é…。畢竟,這是一種常在計算器系統ä¸ä½¿ç”¨çš„æŠ€è¡“,在計算器系統ä¸ï¼Œåªæœ‰åœ¨æœ‰å¿…è¦æ™‚ï¼Œå…§å˜æ‰æœƒè¢«åˆ†é…。例如,以C開發時,工程師å¯èƒ½å‚¾å‘于使用malloc來分é…åœ¨å †(heap)上的空間。有一個æ“作會執行,一旦完æˆï¼Œå¯ä»¥ä½¿ç”¨free將被分é…的內å˜è¿”å›žï¼Œä»¥ä¾¿å †çš„ä½¿ç”¨ã€‚
在資æºå—é™çš„系統,這å¯èƒ½æ˜¯ä¸€å ´ç½é›£!使用易失å˜å„²å™¨åˆ†é…的其ä¸ä¸€å€‹å•題是,錯誤或ä¸ç•¶çš„æŠ€è¡“å¯èƒ½æœƒå°Žè‡´å…§å˜æ³„æ¼æˆ–å…§å˜ç¢Žç‰‡ã€‚如果出ç¾é€™äº›å•題時,大多數的嵌入å¼ç³»çµ±å¹¶æ²’æœ‰è³‡æºæˆ–知è˜ä¾†ç›£è¦–å †æˆ–å¦¥å–„åœ°è™•ç†å®ƒã€‚è€Œç•¶å®ƒå€‘ç™¼ç”Ÿæ™‚ï¼Œå¦‚æžœæ‡‰ç”¨ç¨‹åºæå‡ºå°ç©ºé–“çš„è¦æ±‚ï¼Œä½†å»æ²’有所請求的空間å¯ä»¥ä½¿ç”¨ï¼Œæœƒç™¼ç”Ÿä»€ä¹ˆäº‹å‘¢?
使用易失å˜å„²å™¨åˆ†é…所產生的å•題是很復雜的,è¦å¦¥å–„處ç†é€™äº›å•題,å¯ä»¥èªªæ˜¯ä¸€å€‹å™©å¤¢!ä¸€ç¨®æ›¿ä»£çš„æ–¹æ³•æ˜¯ï¼Œç›´æŽ¥ä»¥éœæ…‹çš„æ–¹å¼ï¼Œç°¡åŒ–å…§å˜çš„分é…。例如,åªè¦åœ¨ç¨‹åºä¸ç°¡å–®åœ°å»ºç«‹ä¸€å€‹å¤§å°ç‚º256å—節長的緩沖å€ï¼Œè€Œä¸æ˜¯ç¶“ç”±malloc請求這樣大å°çš„å…§å˜ç·©æ²–å€ã€‚æ¤ä¸€åˆ†é…的內å˜å¯åœ¨æ•´å€‹æ‡‰ç”¨ç¨‹åºçš„ç”Ÿå‘½å‘¨æœŸæœŸé–“ä¿æŒï¼Œä¸”䏿œƒæœ‰å †æˆ–å…§å˜ç¢Žç‰‡å•題方é¢çš„顧慮。
以上嵌入å¼é–‹ç™¼çš„æ•™ç¨‹å¯ä»¥è®“開發技術的人員ç²å–更好嵌入å¼ç³»çµ±çš„辦法。所有這些技術都是讓è¨è¨ˆè€…å¯ä»¥é–‹ç™¼å‡ºå¯é 性更高嵌入å¼ç³»çµ±çš„秘訣。
標簽:
上一篇: C型微斷是å¦å¯ä»¥ç”¨äºŽé›»æ©Ÿä¾›...
下一篇:DCSé»žæª¢ï¼Œå¿…é ˆçŸ¥é“的基礎知è˜
ä¸åœ‹å‚³å‹•網版權與å…è²¬è²æ˜Žï¼šå‡¡æœ¬ç¶²æ³¨æ˜Ž[來æºï¼šä¸åœ‹å‚³å‹•ç¶²]的所有文å—ã€åœ–片ã€éŸ³è¦–å’Œè¦–é »æ–‡ä»¶ï¼Œç‰ˆæ¬Šå‡ç‚ºä¸åœ‹å‚³å‹•ç¶²(www.hysjfh.com)ç¨å®¶æ‰€æœ‰ã€‚如需轉載請與0755-82949061è¯ç³»ã€‚任何媒體ã€ç¶²ç«™æˆ–å€‹äººè½‰è¼‰ä½¿ç”¨æ™‚é ˆæ³¨æ˜Žä¾†æºâ€œä¸åœ‹å‚³å‹•ç¶²â€ï¼Œé•å者本網將追究其法律責任。
本網轉載并注明其他來æºçš„稿件,å‡ä¾†è‡ªäº’è¯ç¶²æˆ–æ¥å…§æŠ•稿人士,版權屬于原版權人。轉載請ä¿ç•™ç¨¿ä»¶ä¾†æºåŠä½œè€…ï¼Œç¦æ¢æ“…自篡改,é•è€…è‡ªè² ç‰ˆæ¬Šæ³•å¾‹è²¬ä»»ã€‚
相關資訊