數(shù)據(jù)存儲很重要,這塊把錢省不掉?
引言:多日后,當李工在領導面前拍著桌子指責我的時候,我才知道,原來我倆在項目啟動會上的交鋒早已埋下了日后沖突的種子。
本文引用地址:http://cafeforensic.com/article/201904/399524.htm透過公司會議室的窗戶,可以看見正對窗外的小路旁有兩棵樹,一株是白楊樹,還有一株也是白楊樹。
深冬時節(jié),天寒地凍,室內(nèi)卻一片暖意融融,溫柔祥和。在部門經(jīng)理的主持下,項目組所有成員正在圍繞剛剛接到的一個項目-某車型的車身控制器-熱火朝天地討論著設計方案。
爭論是激烈的,氣氛是融洽的,心態(tài)是放松的,直到李工和我因為要不要加一片外置的EEPROM進行數(shù)據(jù)存儲產(chǎn)生了爭執(zhí)。很快,大家就圍繞要不要加EEPROM形成了針鋒相對的兩個陣營。
先介紹一下數(shù)據(jù)存儲的背景。該車身控制器需要存儲汽車配置、故障碼、鑰匙數(shù)據(jù)、防盜密鑰等一系列非常關鍵的非易失性數(shù)據(jù),汽車配置包括有沒有前霧燈、帶不帶車窗防夾、支不支持TPMS等和車輛配置有關的信息,故障碼記錄車身控制器檢測到的各種故障,供診斷儀讀取分析汽車故障原因。鑰匙數(shù)據(jù)和遙控鑰匙進行認證,防盜密鑰和發(fā)動機交互認證,用于發(fā)動機安全啟動。其中,故障碼和鑰匙數(shù)據(jù)可能會在汽車的日常使用中更新內(nèi)容,汽車配置和防盜密鑰通常在汽車下線時通過診斷的方式直接寫死。
我和小張是主張外加EEPROM,不能靠MCU內(nèi)部的數(shù)據(jù)Flash的主要支持者。因為在我看來,在MCU內(nèi)部的數(shù)據(jù)Flash中存儲這些數(shù)據(jù)的話,由于Flash在寫入前必須擦除整個扇區(qū),必然存在擦除數(shù)據(jù)扇區(qū)的代碼,一旦程序跑飛到扇區(qū)擦除代碼,后果可想而知。外部EEPROM寫之前不需要擦除,根本就不存在擦除程序,即使跑飛,也不存在所有數(shù)據(jù)都丟失掉的重大風險。
李工和小郭卻對跑飛擦除的觀點不以為然。尤其是李工,他放下已經(jīng)抽了大半的香煙,把胳膊擺放在以醒目的紅色大字寫著“公共區(qū)域 嚴禁抽煙”的警示牌面前,熟練地彈了彈煙灰,帶著一種“你知道個屁”的眼神看了一下我,悠悠地吐出幾個字來:
“你知道1個512字節(jié)的EEPROM多少錢嗎?”
知之為知之,不知為不知,是為智也。一直干軟件的灑家當然不知道EEPROM的價錢,我迎著李工充滿自得和優(yōu)越感的目光,小心地說了個數(shù)字:“塊把錢?”
“那是消費級的價格,汽車級的還貴!”李工加重了語氣繼續(xù)說,“你算一算,若是外置EEPROM,一片2塊,十萬套就是二十萬吶。”
有錢能使鬼推磨,話音甫落,一直默默看著我們爭辯的部門經(jīng)理就像被推了一把似的挺直了肩膀,清了清嗓子準備發(fā)言了。
灑家立馬意識到,戰(zhàn)爭的天平要向李工傾斜了。
果然,經(jīng)理面上掛著他那一以貫之的調(diào)解紛爭式的笑容把我和李工都掃了一遍,緩緩地說道:“無論是外部EEPROM還是MCU的數(shù)據(jù)Flash,只要程序寫不好,都有被擦除導致數(shù)據(jù)被破壞的風險。這樣,先用內(nèi)部Flash,如果出問題,再改用外部EEPROM?!?/p>
經(jīng)理一錘定音,再也無需多言,于是灑家不再爭辯,只是在心里嘀咕:“外部EEPROM不需要擦除,怎么會存在被擦除的風險?再說EEPROM有硬件寫保護機制,也不會被意外改寫,風險何來?哎,只有祈禱內(nèi)部數(shù)據(jù)Flash不出問題了!”
墨菲定律應驗了
墨菲定律:如果你擔心某種情況發(fā)生,那么它就更有可能發(fā)生。
果不其然,終于有一天,我所擔憂的內(nèi)部數(shù)據(jù)Flash被意外擦除的隱患就那么不經(jīng)意地發(fā)生了。
那一天,是我準備從D市返程的最后一天。這次出差一切順利,雖然遇到了不少問題,但是并沒有什么摸不清頭腦的大Bug,問題從發(fā)現(xiàn)到解決順風順水,總之,逢山開路、遇水搭橋、萬事大吉。心情愉悅的我并不知道,危機正在慢慢逼近,bug草灰蛇線,只待合適的機緣。
評論