數據存儲很重要,這塊把錢省不掉?
艷陽高照,微風陣陣,測試車輛內熱氣騰騰。我打開車門,斜躺在駕駛座上,把渾然天成的兩個大腳丫子翹到方向盤上,百無聊賴地拿著遙控鑰匙解鎖、閉鎖、解鎖、閉鎖、咦?怎么沒反應了?遙控鑰匙沒電了?
本文引用地址:http://butianyuan.cn/article/201904/399524.htm我盯著手中的鑰匙看了看,每按一下,鑰匙上面那個小小的指示燈就按部就班地閃一下。甩鍋失敗,一陣涼意從我心底泛起,明兒個就要回程,千萬別出啥岔子呀!一個哆嗦,灑家從方向盤和駕駛座上滾了下來。
問題來得無聲無息,bug原因半抱琵琶、朦朦朧朧,于是我架上仿真器,揮舞三板斧,一路跟著遙控接收、解碼代碼探下究竟。
先確認能否正常接收到遙控信號,很正常;再看看可否收到完整遙控報文,能收到;能不能解析出來遙控命令,可以;判斷是不是有效的鑰匙,不是!
納尼,居然不是有效的鑰匙?奇了個怪了個了哉!
不知為何,就那么一瞬間,火光電閃,李工那肥油油的嘴唇、猥瑣的小眼睛突然浮現(xiàn)在我面前。于是,我馬上看了看存放鑰匙ID的地址,果不其然,數據丟了!
數據怎么丟的?
我怔怔地看了看儀表盤,旋即陷入了苦苦的思索:數據怎么就丟了呢?究竟發(fā)生什么了?
存放鑰匙的這個扇區(qū)可以存放128次鑰匙數據,更新一次數據,地址就向前累加,扇區(qū)用完后,需要先擦一遍再寫新數據,然后還能再接著用127次。顯然,這次要么是跑飛了直接跳入了擦除程序,要么是用完128次,擦掉后再寫時沒寫上。
看了看儀表盤上醒目地顯示著的低電量提示燈,我本能地認定了是第二種情況,肯定是電池快沒電了,電壓本來很不穩(wěn)定,再加上程序里是在執(zhí)行閉鎖解鎖動作(附帶著還會展開或收起后視鏡、閃爍轉向燈進行提示)期間更新鑰匙數據的,那么多負載一起動作,肯定會在電池母線電壓時造成很大的波動,于是要么擦除了一半就出錯了,要么擦除掉之后沒有寫成功。
我不禁又想起了采用外置EEPROM的方案。如果使用外置EEPROM的話,首先EEPROM根本就不用擦除,其次即便這次沒有寫成功,車身控制器中沒有存儲上鑰匙最新的滾動碼信息,但是,根據鑰匙和車身控制器的交互機制,這一點都不影響鑰匙的下次使用,下次使用時再多按一次鑰匙,車身控制器就能和鑰匙匹配起來。
于是,我又想起李工來了!
數據存儲很重要
我左思右想,似乎很難避免因為電壓不穩(wěn)定導致數據擦除一半就出錯的情形,而且即便擦除成功了,倘若這時因為電壓不穩(wěn)定MCU復位了,還是會造成擦除成功但是寫失敗的問題。
茲事體大,不敢擅專,于是我向經理匯報了這個故障以及對這個問題的分析。
好在還處在產品的開發(fā)階段,一切修改都還來得及。經理沉吟片刻,思索再三,就把我招了回去。
回到公司,經理召集項目組開會。灑家上下嘴皮子一碰,簡要介紹了故障和原因分析。然后,盯著李工,悠悠地說到:“李工,我早說內部數據Flash不靠譜吧,你看,馬上得讓車廠技術確認了,現(xiàn)在還得改板子,多耽誤事??!”
說這話時,我仔細地看著他的臉,看著那裹在襯衣硬領里的緊繃繃、紅通通的脖子,看著那寬寬的肩膀和重重地放在桌上的兩條胳膊,等待著他的回應。
李工臉上紅一陣白一陣,突然把眼皮一抬,對著經理說:“以前我在X公司時,做的那款產品就沒用外部EEPROM,只要編程時加些限制和保護,內部數據Flash完全沒問題!”
面對這種無法求證的說辭,我?guī)е鴳蚺暗男θ菡f不可能。誰知,李工卻突然爆發(fā)了。他漲紅了臉,眼睛瞪得溜圓,帶節(jié)奏地拍了拍桌子,大聲地說:“我說的是實話,我可以把那款產品的原理圖調出來!”
經理又被說動了,便說起能否通過軟件的方式避免數據被誤擦除或寫錯的情況。
我拿出早已準備好的說辭,帶著科普的口吻跟大家講了一通:“代碼可能跑飛到任何一個位置,一旦跑飛到擦除代碼,數據肯定就被擦除了。當然了,代碼跑飛的幾率很小,跑飛到擦除代碼的位置就更小了。但是,遙控數據更新的代碼運行到需要先擦除扇區(qū)再寫新數據的那個分支時,現(xiàn)在發(fā)生的情況是電壓不穩(wěn)定確確實實會導致寫入失敗?!?/p>
看了看大家認真聽講的樣子,我清了清嗓子,繼續(xù)說了下去:“貌似可以在執(zhí)行擦除和寫入之前檢測電池母線電壓,電壓不穩(wěn)定時就不執(zhí)行這些操作,好像這樣就能解決這個問題了??墒菑睦碚撋戏治觯瑥碾姵仉妷旱組CU供電電壓之間的電源轉換芯片可以在電池電壓下探到5.5v時還能穩(wěn)定地提供5V輸出,而電池電壓又確實不會下探到那么低,所以理論上分析,這種電壓不穩(wěn)定本該不會導致數據誤擦除或寫錯,這就說明不是單單電壓不穩(wěn)定這一個因素導致的。再說了,如果擦除和寫入之前檢測的電壓穩(wěn)定,在擦除或寫入期間不穩(wěn)定了,還是避免不了這個問題!”
緊接著,我又給出了貌似反方向的判斷:“不過,現(xiàn)在的程序中,是得操作128次鑰匙才會觸發(fā)一次擦除Flash扇區(qū)的操作,只有這第128次才會面臨這種風險。平時的操作只有寫入數據,寫入時間遠遠小于擦除時間,寫入失敗的幾率應該很小很小的?!?/p>
經理皺著眉頭,向我投來詢問的目光,我目光堅定地點了點頭,最終,經理拍板,還是決定外加一塊EEPROM。
灑家向不發(fā)一言的李工投去安慰的目光,悠悠地對他說:
數據存儲很重要,看來這塊把錢省不掉??!
*本文為電子產品世界原創(chuàng)文章,轉載請注明來源
評論