微控制器(MCU)是汽車電子控制系統中的核心元件,其中的記憶體是最重要的組成部分之一,主要用于儲存程式碼、資料、配置參數等資訊。根據記憶體類型的不同,車規MCU記憶體可以分為多種類型,包括ROM、EEPROM、Flash,以及SRAM等。
由于記憶體用于儲存MCU運行的資料程式碼,其故障可能會導致汽車電子控制系統出現嚴重的事故。因此,不同類型記憶體的功能安全非常重要。在車規MCU中進行合理的記憶體和控制器的功能安全設計,可以有效地提高汽車電子控制系統的可靠性和安全性。
車規MCU中儲存功能的功能安全,主要包括防止記憶體及控制器本身的故障,和防止外部攻擊對記憶體進行破壞和資訊竊取兩個方面。為防止記憶體及控制器本身的故障,車規MCU需要采用多種技術手段來保證其功能安全,例如,使用業界成熟的ECC技術或使用CRC校驗碼,可以檢測修復錯誤資料和檢測資料完整性,使用備份儲存可備用資料等。而為防止外部攻擊對記憶體進行破壞或資料竊取,車規MCU需要采用加密技術來保護記憶體中的資料,例如使用不同種復雜的演算法對資料進行加密,控制程式碼存取及運作許可權,條件限制性資料交互等,可以有效地防止外部攻擊和資訊泄露。
本文討論車規MCU的設計開發時,將側重功能安全的設計實現。只有在記憶體的功能安全得到保障的情況下,才能讓汽車電子控制系統更加可靠和安全。因此,記憶體及控制器功能安全設計是車規MCU中非常重要的一環,直接關系到汽車電子控制系統的可靠性和安全性。
記憶體類型組成
以汽車域控制多核心MCU晶片為例,基于不同的記憶體類型,記憶體可以分為ROM、EEPROM、Flash以及SRAM等。ROM中文稱為唯讀記憶體,用于一次程式設計BOOT啟動程式后不能再被修改,負責儲存MCU晶片上電啟動程式碼、初始診斷測試程式碼和基本控制演算法程式碼等。EEPROM中文名稱是電子抹除式可復寫唯讀記憶體,它可以透過電訊號進行擦寫和程式設計,在汽車域控制多核心MCU中,EEPROM通常用于儲存車輛識別碼、使用者設置、故障碼、參數等資訊。Flash與EEPROM類似,但其擦除和程式設計速度更快,汽車域控制多核心MCU中,通常被用于儲存應用程式、作業系統和驅動程式等資訊。基于技術發展演進和市場化驗證,目前EEPROM功能逐漸被小容量的Flash替代。SRAM中文名稱是靜態隨機存取記憶體,具有快速的讀寫速度和低功耗的特點,在汽車域控制多核心MCU中,SRAM記憶體通常被用于儲存快取、堆疊等資料。
在MCU中的系統架構,ROM記憶體通常分為兩類:一是內部ROM,即直接整合在MCU晶片中;二是外部ROM,即透過串列或平行介面與MCU晶片相連的外部ROM。SRAM、EEPROM和Flash通常都是內部整合,可以透過串列或平行介面進行讀寫操作。在復雜處理系統中,由于記憶體容量需求巨大,整合至晶片內部已無成本優勢,因此通常以獨立的晶片形式存在,需要透過外部位址匯流排和資料匯流排與MCU晶片相連。
上述每種記憶體類型,均需要符合自身讀寫控制時序的記憶體控制器,支援記憶體資料的正常存取操作。根據記憶體的功能可知,無論是記憶體本身還是控制器,任意一個發生故障,均會導致MCU晶片控制和處理功能失效,進而會導致系統故障。因此,有效實施記憶體及控制器的功能安全設計方案,可以使汽車電子控制系統更加可靠和高效。
功能安全技術
主要功能安全技術包括:
包含位址資訊的ECC
常規MCU晶片中記憶體ECC方案,主要對其儲存空間中的資料進行處理,查二糾一的演算法基本可保證99%以上的故障診斷覆蓋率。為盡可能保證安全性,對于復雜MCU、尤其是汽車電子控制中使用的核心控制MCU,甚至設計為查三糾二的ECC演算法。常規MCU,其內部記憶體容量有限,位址解碼電路所進行的解碼處理位元寬較少。
相較常規晶片不同,車規級核心控制MCU的全晶片中,使用了大量的Flash和SRAM等記憶體,其記憶體控制器位址解碼電路涵蓋位址區間較大,因此控制器解碼電路失效率隨之增加。因此對于高安全需求的MCU,其記憶體ECC方案有所不同。在生成校驗處時, 將「寫位址」與「資料」一起拼位生成ECC校驗碼,「資料+校驗碼」一起存于記憶體中,寫位址本身不儲存。資料讀出校驗時,「讀位址+資料+校驗碼」一起校驗。此設計方案在不明顯增加設計成本的情況下,可檢測位址解碼邏輯單位元失效。
控制器對記憶體的控制效果,體現在正確位址和正確資料的存取。當控制器中位址解碼電路故障時,可導致使用錯誤的位址讀取該位址中的資料,而該筆資料本身的ECC校驗碼正確,無法通過常規ECC檢查,最終MCU獲得錯誤資料,造成系統故障。包含位址資訊的ECC方案,基于記憶體和控制器最終的存取效果,針對資料和位址兩個關鍵點,對整體進行安全控制。
ECC碼的獨立儲存
另一種有效的安全方案,是將本身的資料和ECC碼使用獨立的記憶體進行儲存。MCU晶片中SRAM作為資料快取,在系統整合過程中會比例化多個儲存空間的SRAM模組,而不是統一放在一個巨大位址空間的SRAM介面中,這樣有效保證多主機進行資料存取處理的高效性。因此ECC碼的獨立儲存方案,尤其適用于SRAM的功能安全設計實現。
以SRAM而設計實現為例,每一筆資料生成對應ECC后,依相同的位址,分別儲存資料的SRAM和儲存ECC碼的SRAM。MCU晶片發出讀位址讀取某一筆資料時,同時將該位址對應至儲存ECC碼的SRAM中,對應該資料的ECC碼讀出,并透過ECC校驗模組進行校驗。當位址解碼模組解碼故障時,實際上用同一位址讀取的資料和ECC碼會發生不匹配的情況,最終導致ECC校驗時發現ECC碼錯誤。因此此時的位址解碼模組的故障將以ECC資料校驗錯誤的形式回饋,并不區分是記憶體的故障還是位址解碼電路的故障。
在實際系統層級功能安全應用時,將記憶體及控制器看作整體,安全回應最終是以資料錯誤的形式表現,有助于提升高層級處理的效率。另外,ECC碼被分成兩個物理SRAM儲存區域,這種方案提供了物理上SRAM儲存區域和控制模組,也有助于降低物理多位元故障導致邏輯多位元故障的概率、共因失效概率和位址解碼模組瞬態干擾導致的安全機制失效的概率。
ECC校驗功能的診斷
記憶體ECC技術方案作為防止記憶體及控制模組發生單點故障的安全機制,需要采取相應技術措施來探測、辨識或診斷其本身的問題,盡量減小潛在故障的概率。雖然ROM、SRAM、EEPROM和Flash記憶體資料在MCU晶片正常工作過程中均可受到ECC校驗的保護,但不同類型的記憶體其實際工作情況不同,因此對于ECC編碼和校驗模組的診斷措施也有區別。
在BOOT啟動階段和功能模式運行階段,SRAM和EEPROM都可進行資料存取,且MCU晶片應用過程中,資料可即時修改。對于SRAM和EEPROM的功能特性,其ECC校驗模組可透過即時故障注入的方式進行診斷。故障注入開啟后,MCU可透過程式讀取SRAM和EEPROM的資料和ECC校驗碼,并將資料段利用注入修改,連同ECC碼送入ECC校驗模組,可診斷ECC校驗模組是否可正確檢測到ECC單位元錯誤、多位元錯誤和單位元糾錯功能。
故障注入方案需要ROM或Flash中軟體程式正確執行,因此難以用于診斷用于儲存軟體程式碼的ROM或Flash的ECC校驗模組。對于ROM或Flash的ECC校驗功能的診斷,可以透過在ROM或Flash記憶體中建立ECC測試區域,并事先將用于ECC校驗功能診斷的測試資料程式設計到ROM或Flash中。該區域根據實際的ROM或Flash的資料位元寬,遍歷(Traversal)單位元錯誤,全0資料、全1資料,雙位元錯誤、多位元錯誤的情況。當進行ECC診斷時,程式主動讀取該測試區域的資料,ECC校驗正確的情況下將觸發ECC錯誤正常回應。
其他關聯協作技術
MCU晶片中實現記憶體功能安全可結合其他技術方案相互協作,提高系統的可靠性和安全性。線上MBIST透過測試引擎生成特定的測試模式來激勵記憶體,然后讀取和比較記憶體的輸出資料,以驗證記憶體的功能和可靠性。測試模式可以包括不同的資料模式、記憶體存取模式和寫入/讀取序列等,可快速檢測記憶體中的故障,并提供準確的測試結果。
另外,MCU晶片可采用MPU來保護記憶體,用于限制非法存取。MPU可以設置記憶體的存取權限和位址范圍,確保只有經過授權的程式才能讀取和寫入記憶體中的資料。利用MPU,晶片能夠有效防止惡意攻擊和非法存取導致的資訊泄露或篡改。此外,MCU晶片對記憶體中資料還可使用資料E2E校驗來驗證資料的完整性,透過在資料傳輸的起點和終點分別添加校驗碼,檢測資料在傳輸過程中是否被篡改。
實現記憶體單元的功能安全,從合適的技術層級和功能層級進行分析,考慮安全機制的技術結合和措施的共同作用,評估安全方案在實現功能安全等級目標的適應性;并用相對低的成本以達到合適的診斷覆蓋率和安全效果,提高晶片的可靠性和安全性,確保系統能夠有效防范單點故障和潛在故障的風險。
浮思特科技專注功率器件領域,為客戶提供IGBT、IPM模塊等功率器件以及MCU和觸控芯片,是一家擁有核心技術的電子元器件供應商和解決方案商。