fee(flash eeprom emulation),即flash模擬eeprom。為什麼要用flash模擬eeprom?下面我們來看下兩者之間的區別。
non-volatile memory,非易失性儲存器,就是斷電後可以儲存資料的儲存器。我們知道flash和eeprom都屬於這類儲存器,可是它們兩者之間還是有很多不同,主要有以下幾個方面:
1.擦寫方式不同
flash:分為若干個page,擦除的時候會整片擦除,寫的時候必須該位為1才可以寫進去,所以說,每次在flash裡修改資料的時候,要先擦除再寫入。
eeprom:寫之前可以不需要擦除直接修改,可以修改單位元組,讀寫速度較慢一點。
2.擦寫次數
flash較eeprom較少。
3.從經濟角度來看
很多晶元取消了eeprom,用flash模擬eeprom來代替eeprom以降低成本。
4.面向的需求不同
flash:一般儲存一些不容易改變的資料,如車輛的一些出廠資料(vin碼)等,因為這些資料不需要時常改變,所以存在flash裡就可以。
eeprom:一般儲存一些容易改變的資料,如故障診斷中的dtc,如果將其存在flash裡面就會不停地去擦寫flash,並且擦除面積較大,不利於操作。
在autosar架構中,fee處於記憶體硬體抽象層(memory hardware abstraction),如下圖所示:
flash模擬eeprom機制:
我們知道flash是按頁操作的,這種方式比較適合扇區比較大的flash來用,假設我們的mcu的data flash有兩個扇區,將兩個扇區分別標記為邏輯扇區1(logical sector 1)和邏輯扇區2(logical sector 2)。假設我們要用flash模擬eeprom來儲存dtc,我們都知道dtc是個很小的資料,但是更新可能會比較頻繁,如下圖:
假設flash一次性可以寫8個位元組,我們可以這樣劃分:前4個位元組來儲存dtc標識,後4個位元組來儲存具體dtc(這是一種假設,程式設計師可以自行設計儲存長度等),每次dtc有更新我們就接著往沒有被寫到的空間更新資料,直到邏輯扇區1(logical sector 1)被寫滿,我們將最新的dtc資料複製進邏輯扇區2(logical sector 2)裡面,然後擦除整片邏輯扇區1(logical sector 1),這時,邏輯扇區1(logical sector 1)狀態變成(not actived)待工作片區,邏輯扇區2(logical sector 2)變成(actived)工作片區,等邏輯扇區2(logical sector 2)寫滿再將最新資料複製到邏輯扇區1(logical sector 1),然後擦除邏輯扇區2(logical sector 2),這樣來回反覆。
大致工作流程是這樣的,當然如果flash片區比較多不限於將邏輯扇區分成2個。現在一些晶元廠商如st在他們的一款車規級mcu spc560系列上已經提供了flash模擬eeprom的介面,程式設計師只需知道這種機制,在spc5studio裡配置好邏輯扇區,生成**後直接使用就可以。
AUTOSAR實驗之DIO配置
利用eb tresos軟體為工程新增相應dio用作診斷io,本例則基於s32v234平台,增加pgood,fsob故障診斷管腳功能。對於pmic晶元,除了電壓電流等波動引發故障暫存器置位意外,存在通用的故障診斷管腳,即pgood和fsob,兩者區別可以通俗理解為故障程度的不同。對於ov,uv,ili...
AutoSAR 之作業系統
作業系統引入原因 1.任務多樣化 2.週期複雜化 3.分層呼叫巢狀 4.多核系統引入 這個和linux 裡面多執行緒程式設計很類似,比如 我們有三個執行緒要跑,其中thread1 負責應用功能asw,thread2負責基礎功能bsw,thread3負責系統監控 功能安全和診斷等,這個如果還是用裸機上...
AUTOSAR基礎篇之DTC
dtc基本介紹 dtc顧名思義即為診斷故障碼,一種用來記錄當某ecu發生或檢測到某種故障時所呈現在大家目前的標識碼,通過該標識碼便可以查表的方式獲得該故障資訊,如故障觸發條件 故障解除條件 系統功能表現等。這是當前 商與主機廠普遍用來監測並識別故障的基礎手段,所以也同樣存在標準,普遍使用的標準是is...