精密PCB製造、高頻PCB、高速PCB、標準PCB、多層PCB和PCB組裝。
PCB科技

PCB科技 - 嵌入式PCB主機板的多個提示

PCB科技

PCB科技 - 嵌入式PCB主機板的多個提示

嵌入式PCB主機板的多個提示

2021-11-06
View:537
Author:Will

成為正式嵌入 PCB主機板設計 開發工程師是一個困難的過程, 要求開發人員維護和管理系統的每個比特和位元組. 從規範的開發週期到嚴格的實施和系統檢查, 開發高可靠性嵌入式系統有很多科技. 今天, 我將介紹7種易於操作且可長期使用的PCB科技. 它們非常有助於確保系統運行更可靠,並捕捉异常行為.

軟體發展人員通常是一個非常樂觀的群體,只要他們的程式碼長時間忠實地運行,就行了。 微控制器跳出應用程序空間並在意外的程式碼空間中執行似乎非常罕見。 然而,發生這種情況的可能性不亞於緩衝區溢位或錯誤的指針遺失引用。 它會發生的! 發生這種情況後,系統的行為是不確定的,因為默認情况下記憶體空間為0xFF,或者因為記憶體區域通常不被寫入,所以該值可能只有上帝知道。

但是,可以使用相當完整的連結器或IDE技能來幫助識別此類事件並從中恢復系統。 訣竅是使用FILL命令用已知的比特模式填充未使用的ROM。 為了填充未使用的記憶體,可以使用許多不同的可能組合,但如果您想構建更可靠的系統,最明顯的選擇是將ISR故障處理程式放置在這些位置。 如果系統出現問題,處理器開始在程式空間之外執行程式碼,它將觸發ISR,並在决定糾正措施之前提供存儲處理器、寄存器和系統狀態的機會。

電路板

嵌入式工程師的一大優勢是,我們的IDE和工具鏈可以自動生成應用程序或記憶體空間校驗和(checksum),從而基於該校驗和驗證應用程序是否完整。 有趣的是,在許多情况下,校驗和僅在程式碼加載到設備中時使用。

然而,如果CRC或校驗和保存在記憶體中,那麼驗證應用程序在啟動時(甚至對於長時間運行的系統來說是週期性的)仍然完好無損是確保意外事件不會發生的好方法。 如今,程式設計應用程序更改的可能性非常小,但考慮到每年交付的數十億個微控制器和潜在的惡劣工作環境,醫療器械應用程序崩潰的可能性並非為零。 更有可能的是,系統中的缺陷可能會導致某個扇區中的閃存寫入或閃存擦除,從而破壞應用程序的完整性。

啟動時執行RAM檢查

為了建立一個更可靠、更可靠的系統,確保系統硬體正常工作非常重要。 畢竟,硬體會出故障。 (幸運的是,軟件從來不會失敗,軟件只會做程式碼希望它做的事,不管是對是錯)。 驗證啟動時內部或外部RAM沒有問題是確保硬體可以按預期運行的好方法。

有許多不同的方法來執行RAM檢查,但常見的方法是寫入已知模式,然後等待一小段時間後再將其讀回。 結果應該是你讀的就是你寫的。 事實是,在大多數情况下,RAM檢查是通過的,這是我們想要的結果。 然而,檢查不通過的可能性很小,這為系統訓示硬體問題提供了極好的機會。

使用堆棧監視器

對於許多嵌入式開發人員來說,堆棧似乎是一種相當神秘的力量。 當奇怪的事情開始發生時,工程師們終於被難住了,他們開始思考堆棧中可能發生的事情。 結果是盲目地調整堆棧的大小和位置等。 但是錯誤通常與堆棧無關,但它怎麼能如此確定呢? 畢竟,有多少工程師實際執行了最壞情况下的堆棧大小分析?

堆棧大小在編譯時靜態分配,但堆棧是以動態管道使用的。 在執行程式碼時,應用程序所需的變數、返回地址和其他資訊會連續存儲在堆棧上。 這種機制使堆棧在其分配的記憶體中不斷增長。 然而,這種增長有時會超過編譯時確定的容量限制,導致堆棧破壞相鄰記憶體區域中的數據。

絕對確保堆棧正常工作的一種方法是將堆棧監視器作為系統“健康”程式碼的一部分來實現(有多少工程師這樣做?)。 堆棧監視器在堆棧和“其他”記憶體區域之間創建緩衝區,並用已知比特模式填充。 然後,監控器將持續監控模式是否有任何變化。 如果比特模式發生變化,則意味著堆棧增長過多,系統即將被推入地獄! 此時,監視器可以記錄事件的發生、系統狀態和任何其他有用的數據,以便將來進行問題診斷。

大多數即時操作系統(RTO)或實現記憶體保護單元(MPU)的微控制器系統中都提供堆棧監視器。 可怕的是,這些功能在默認情况下是關閉的,或者經常被開發人員故意關閉。 在互聯網上快速搜索發現,許多人建議關閉即時操作系統中的堆棧監視器以節省56位元組的閃存空間等。這是不值得的!

使用MPU

在過去, it was difficult to find a memory protection unit (MPU) in a small and cheap microcontroller, 但這種情況已經開始改變. 現在,從高端到低端的微控制器已經有了微處理器, 這些微處理器提供嵌入式 PCB軟件 開發者有機會大大提高其固件的穩健性.

為了建立一個記憶體空間,MPU逐漸與作業系統耦合,在這個記憶體空間中,處理是分開的,或者任務可以執行其程式碼,而不用擔心被踩踏。 如果發生任何情况,將取消不受控制的處理,並實施其他保護措施。 請注意帶有這種組件的微控制器,如果有,請更多地利用其特性。

建立强大的監督系統

您經常會發現最喜歡的看門狗實現之一是啟用看門狗的位置(這是一個良好的開端),但您也可以使用定期計時器來清除看門狗的位置; 計时器的啟動與程式中發生的任何情况完全隔離。 使用看門狗的目的是幫助確保如果發生錯誤,看門狗將不會被清除,也就是說,當工作暫停時,系統將被迫執行硬體重置以進行恢復。 使用獨立於系統活動的計時器,即使系統發生故障,看門狗也可以保持清除狀態。

如何將應用程序任務集成到看門狗系統中,嵌入式PCB主機板開發人員需要仔細考慮和設計。 例如,有一種科技可以允許在特定時間段內運行的每個任務訓示它們可以成功完成其任務。 在這種情況下,看門狗不會被清除,而是被強制重置。 還有一些更先進的科技,例如使用外部看門狗處理器,可以用來監測主PCB處理器的行為,反之亦然。 對於一個可靠的系統,建立一個强大的看門狗系統是非常重要的。

避免易失性記憶體分配

不習慣在資源有限的環境中工作的工程師可能會嘗試使用其程式設計語言的功能, 這允許他們使用易失性PCB記憶體分配. 畢竟, 這是一個 PCB科技 常用於小算盘系統. 在小算盘系統中, 只有在必要時才分配記憶體. 例如, 在C中開發時, 工程師可能傾向於使用malloc來分配堆上的空間. 將執行一個操作. 一旦完成, 您可以使用free返回分配給堆使用的記憶體.