<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 牛人業(yè)話 > 數(shù)據(jù)存儲(chǔ)很重要,這塊把錢省不掉?

          數(shù)據(jù)存儲(chǔ)很重要,這塊把錢省不掉?

          作者:天雷君 時(shí)間:2019-04-16 來源:電子產(chǎn)品世界 收藏

          艷陽高照,微風(fēng)陣陣,測(cè)試車輛內(nèi)熱氣騰騰。我打開車門,斜躺在駕駛座上,把渾然天成的兩個(gè)大腳丫子翹到方向盤上,百無聊賴地拿著遙控鑰匙解鎖、閉鎖、解鎖、閉鎖、咦?怎么沒反應(yīng)了?遙控鑰匙沒電了?

          本文引用地址:http://www.ex-cimer.com/article/201904/399524.htm

          我盯著手中的鑰匙看了看,每按一下,鑰匙上面那個(gè)小小的指示燈就按部就班地閃一下。甩鍋失敗,一陣涼意從我心底泛起,明兒個(gè)就要回程,千萬別出啥岔子呀!一個(gè)哆嗦,灑家從方向盤和駕駛座上滾了下來。

          問題來得無聲無息,bug原因半抱琵琶、朦朦朧朧,于是我架上仿真器,揮舞三板斧,一路跟著遙控接收、解碼代碼探下究竟。

          先確認(rèn)能否正常接收到遙控信號(hào),很正常;再看看可否收到完整遙控報(bào)文,能收到;能不能解析出來遙控命令,可以;判斷是不是有效的鑰匙,不是!

          納尼,居然不是有效的鑰匙?奇了個(gè)怪了個(gè)了哉!

          3.jpg

          不知為何,就那么一瞬間,火光電閃,李工那肥油油的嘴唇、猥瑣的小眼睛突然浮現(xiàn)在我面前。于是,我馬上看了看存放鑰匙ID的地址,果不其然,數(shù)據(jù)丟了!

          數(shù)據(jù)怎么丟的?

          我怔怔地看了看儀表盤,旋即陷入了苦苦的思索:數(shù)據(jù)怎么就丟了呢?究竟發(fā)生什么了?

          存放鑰匙的這個(gè)扇區(qū)可以存放128次鑰匙數(shù)據(jù),更新一次數(shù)據(jù),地址就向前累加,扇區(qū)用完后,需要先擦一遍再寫新數(shù)據(jù),然后還能再接著用127次。顯然,這次要么是跑飛了直接跳入了擦除程序,要么是用完128次,擦掉后再寫時(shí)沒寫上。

          看了看儀表盤上醒目地顯示著的低電量提示燈,我本能地認(rèn)定了是第二種情況,肯定是電池快沒電了,電壓本來很不穩(wěn)定,再加上程序里是在執(zhí)行閉鎖解鎖動(dòng)作(附帶著還會(huì)展開或收起后視鏡、閃爍轉(zhuǎn)向燈進(jìn)行提示)期間更新鑰匙數(shù)據(jù)的,那么多負(fù)載一起動(dòng)作,肯定會(huì)在電池母線電壓時(shí)造成很大的波動(dòng),于是要么擦除了一半就出錯(cuò)了,要么擦除掉之后沒有寫成功。

          我不禁又想起了采用外置的方案。如果使用外置的話,首先根本就不用擦除,其次即便這次沒有寫成功,車身控制器中沒有存儲(chǔ)上鑰匙最新的滾動(dòng)碼信息,但是,根據(jù)鑰匙和車身控制器的交互機(jī)制,這一點(diǎn)都不影響鑰匙的下次使用,下次使用時(shí)再多按一次鑰匙,車身控制器就能和鑰匙匹配起來。

          于是,我又想起李工來了!

          很重要

          我左思右想,似乎很難避免因?yàn)殡妷翰环€(wěn)定導(dǎo)致數(shù)據(jù)擦除一半就出錯(cuò)的情形,而且即便擦除成功了,倘若這時(shí)因?yàn)殡妷翰环€(wěn)定MCU復(fù)位了,還是會(huì)造成擦除成功但是寫失敗的問題。

          茲事體大,不敢擅專,于是我向經(jīng)理匯報(bào)了這個(gè)故障以及對(duì)這個(gè)問題的分析。

          好在還處在產(chǎn)品的開發(fā)階段,一切修改都還來得及。經(jīng)理沉吟片刻,思索再三,就把我招了回去。

          回到公司,經(jīng)理召集項(xiàng)目組開會(huì)。灑家上下嘴皮子一碰,簡(jiǎn)要介紹了故障和原因分析。然后,盯著李工,悠悠地說到:“李工,我早說內(nèi)部數(shù)據(jù)不靠譜吧,你看,馬上得讓車廠技術(shù)確認(rèn)了,現(xiàn)在還得改板子,多耽誤事??!”

          說這話時(shí),我仔細(xì)地看著他的臉,看著那裹在襯衣硬領(lǐng)里的緊繃繃、紅通通的脖子,看著那寬寬的肩膀和重重地放在桌上的兩條胳膊,等待著他的回應(yīng)。

          李工臉上紅一陣白一陣,突然把眼皮一抬,對(duì)著經(jīng)理說:“以前我在X公司時(shí),做的那款產(chǎn)品就沒用外部EEPROM,只要編程時(shí)加些限制和保護(hù),內(nèi)部數(shù)據(jù)完全沒問題!”

          面對(duì)這種無法求證的說辭,我?guī)е鴳蚺暗男θ菡f不可能。誰知,李工卻突然爆發(fā)了。他漲紅了臉,眼睛瞪得溜圓,帶節(jié)奏地拍了拍桌子,大聲地說:“我說的是實(shí)話,我可以把那款產(chǎn)品的原理圖調(diào)出來!”

          經(jīng)理又被說動(dòng)了,便說起能否通過軟件的方式避免數(shù)據(jù)被誤擦除或?qū)戝e(cuò)的情況。

          我拿出早已準(zhǔn)備好的說辭,帶著科普的口吻跟大家講了一通:“代碼可能跑飛到任何一個(gè)位置,一旦跑飛到擦除代碼,數(shù)據(jù)肯定就被擦除了。當(dāng)然了,代碼跑飛的幾率很小,跑飛到擦除代碼的位置就更小了。但是,遙控?cái)?shù)據(jù)更新的代碼運(yùn)行到需要先擦除扇區(qū)再寫新數(shù)據(jù)的那個(gè)分支時(shí),現(xiàn)在發(fā)生的情況是電壓不穩(wěn)定確確實(shí)實(shí)會(huì)導(dǎo)致寫入失敗?!?/p>

          看了看大家認(rèn)真聽講的樣子,我清了清嗓子,繼續(xù)說了下去:“貌似可以在執(zhí)行擦除和寫入之前檢測(cè)電池母線電壓,電壓不穩(wěn)定時(shí)就不執(zhí)行這些操作,好像這樣就能解決這個(gè)問題了??墒菑睦碚撋戏治?,從電池電壓到MCU供電電壓之間的電源轉(zhuǎn)換芯片可以在電池電壓下探到5.5v時(shí)還能穩(wěn)定地提供5V輸出,而電池電壓又確實(shí)不會(huì)下探到那么低,所以理論上分析,這種電壓不穩(wěn)定本該不會(huì)導(dǎo)致數(shù)據(jù)誤擦除或?qū)戝e(cuò),這就說明不是單單電壓不穩(wěn)定這一個(gè)因素導(dǎo)致的。再說了,如果擦除和寫入之前檢測(cè)的電壓穩(wěn)定,在擦除或?qū)懭肫陂g不穩(wěn)定了,還是避免不了這個(gè)問題!”

          緊接著,我又給出了貌似反方向的判斷:“不過,現(xiàn)在的程序中,是得操作128次鑰匙才會(huì)觸發(fā)一次擦除扇區(qū)的操作,只有這第128次才會(huì)面臨這種風(fēng)險(xiǎn)。平時(shí)的操作只有寫入數(shù)據(jù),寫入時(shí)間遠(yuǎn)遠(yuǎn)小于擦除時(shí)間,寫入失敗的幾率應(yīng)該很小很小的?!?/p>

          經(jīng)理皺著眉頭,向我投來詢問的目光,我目光堅(jiān)定地點(diǎn)了點(diǎn)頭,最終,經(jīng)理拍板,還是決定外加一塊EEPROM。

          灑家向不發(fā)一言的李工投去安慰的目光,悠悠地對(duì)他說:

          很重要,看來這塊把錢省不掉??!


          *本文為電子產(chǎn)品世界原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明來源


          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();