加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

51的江湖 | 奇怪的溢出數(shù)據(jù)“65535”,不可抗拒的EMC

2015/08/08
10
閱讀需 19 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

?

上文《時(shí)鐘亂碼幽靈般光顧了所有設(shè)備,追蹤尋跡趁勢(shì)撲捉?》講到,經(jīng)過近4晝夜的測(cè)試,時(shí)鐘的亂碼顯現(xiàn),如“幽靈”一般,光顧了在不同編號(hào)的設(shè)備,最少的只有一次,最多的有10次。從結(jié)果上看,與用戶描述的情況基本一致:不一定什么時(shí)候,不一定是哪一臺(tái)設(shè)備,在上傳到后臺(tái)的記錄中,就會(huì)爆出一條錯(cuò)誤的記錄數(shù)據(jù)。ISP_Line剛好小試牛刀...

錯(cuò)誤再現(xiàn),便可以分析其原因了。研發(fā)的過程就是這樣,有些時(shí)候更加需要逆向思維,根據(jù)現(xiàn)象和測(cè)試的結(jié)果,進(jìn)行反向推理,究其根源,尤其是對(duì)于這種非邏輯關(guān)系引起的隨機(jī)錯(cuò)誤,更是如此。


分析之后,關(guān)于時(shí)鐘亂碼的問題,華容得到了初步的結(jié)論:EMC問題,也就是常說的電磁兼容問題。


EMC問題是產(chǎn)品設(shè)計(jì)和測(cè)試過程中最神秘的環(huán)節(jié),如果沒有專業(yè)設(shè)備的介入,看不見、摸不著的電磁干擾,只能憑著感覺進(jìn)行處理,而“感覺”往往是因人而異的,就產(chǎn)品而言,這種感覺來自于設(shè)計(jì)者的經(jīng)驗(yàn),因此無法進(jìn)行量化,有些時(shí)候,更是說不清道不明,所以進(jìn)一步增加了神秘感。


與EMC的第一次交鋒,華容便領(lǐng)教了它的威力。


當(dāng)年,華容正在從事ECR產(chǎn)品的研發(fā)。在當(dāng)時(shí)的項(xiàng)目組中,成員之間分工明確,各負(fù)其責(zé),華容的工作是程序設(shè)計(jì),精力主要集中在軟件編寫、算法處理及程序優(yōu)化方面,而在硬件電路設(shè)計(jì)方面幾乎未觸及,對(duì)電路的認(rèn)識(shí),只不過是看懂連接和接口,這種硬件水平在硬件研發(fā)部來說,定義為“外行”的級(jí)別,也不為過。有些時(shí)候,華容也認(rèn)識(shí)到了自己在硬件方面的“短板”,但是轉(zhuǎn)念一想,又以“術(shù)業(yè)有專攻、精力有限”為由,任其自然退化,直到有一天,遭到了當(dāng)頭棒喝,才幡然醒悟。


事件的起因是源自客戶的投訴,而被投訴的產(chǎn)品恰恰是全公司公認(rèn)為功能最佳版本—HOD公司的定制版,版本號(hào)是6.18,這個(gè)版本在單機(jī)版上實(shí)現(xiàn)了日常的各級(jí)權(quán)限管理,交接班管理、各種財(cái)務(wù)報(bào)表、及盤點(diǎn)功能,用現(xiàn)在的流行語(yǔ)描述就是“神器”。


慶功宴的喜悅還未散盡,便接到了HOD集團(tuán)沈陽(yáng)公司的投訴,投訴的焦點(diǎn)就是在盤點(diǎn)報(bào)表的數(shù)據(jù)出現(xiàn)了亂碼,突發(fā)性的隨機(jī)亂碼,毫無規(guī)律可言。

?


對(duì)于投訴,作為該軟件負(fù)責(zé)人的華容責(zé)無旁貸,立即就故障問題進(jìn)行分析:
1、排除硬件問題
因?yàn)檫@個(gè)設(shè)備的硬件通用的,同款主板的設(shè)備銷量已經(jīng)大于10K,從未出現(xiàn)過亂碼問題。
2、既然不是硬件問題,那么問題應(yīng)該出現(xiàn)在軟件方面
由于報(bào)表數(shù)據(jù)是根據(jù)銷售記錄生成的,因此很肯能是軟件處理問題,既然是軟件問題,那么必定是可以重現(xiàn)的。但是,這個(gè)現(xiàn)象,在公司內(nèi)部的測(cè)試的時(shí)候并沒有發(fā)現(xiàn),因此,可以推斷,可能與客戶的數(shù)據(jù)有關(guān)。


華容將自己的分析和思路,與部門經(jīng)理的毛志勤進(jìn)行了交流,并達(dá)成一致意見,征得他的同意后,立即部署最緊急的測(cè)試任務(wù),調(diào)動(dòng)測(cè)試部的所有測(cè)試人員,按照客戶的使用數(shù)據(jù)和流程,在故障機(jī)上進(jìn)行全天候的測(cè)試,目的是將故障重現(xiàn)。


連續(xù)2個(gè)工作日,從測(cè)試的數(shù)據(jù)量上來說,遠(yuǎn)遠(yuǎn)超過了客戶的使用量,然而,結(jié)果卻是令人倍感意外的:一切正常。


華容迷惑了,毛志勤迷惑了。于是將問題放到了研發(fā)部的內(nèi)部會(huì)議上討論,技術(shù)總監(jiān)徐工沉思良久,提出了一個(gè)假設(shè):也許是使用環(huán)境的問題。


對(duì)于徐工的說法,華容不解,毛志勤則是若有所思。


但事實(shí)終究是事實(shí),在客戶所打印報(bào)表中,錯(cuò)誤數(shù)據(jù)就在眼前,雖然內(nèi)部測(cè)試的結(jié)果與客戶的投訴描述不符,但是研發(fā)工程師對(duì)待BUG的原則是零容忍的:寧可多試一千次,也不能放過一個(gè)疑點(diǎn)。


于是第二天一早,徐工和華容出現(xiàn)在距離公司最近的一個(gè)連鎖店里。這樣的組合可謂是強(qiáng)強(qiáng)聯(lián)合,設(shè)備的電路板是出自徐工的設(shè)計(jì),關(guān)于疑點(diǎn)也是徐工提出來的,而這版軟件的方案是毛志勤和華容二人共同設(shè)計(jì)的,程序代碼則多數(shù)出自華容之手。如此的陣容,旨在現(xiàn)場(chǎng)勘察,發(fā)現(xiàn)BUG的蛛絲馬跡。


此情此景,目前唯一的解決辦法就是情景再現(xiàn)。


情景再現(xiàn)的方法很簡(jiǎn)單,生成“影子”數(shù)據(jù):營(yíng)業(yè)員在前臺(tái),華容在幕后,在相同的工作環(huán)境下,使用同一路電源,按照營(yíng)業(yè)員的銷售數(shù)據(jù),在測(cè)試機(jī)上進(jìn)行相同的操作,這樣的結(jié)果是將生成與用戶相同的報(bào)表。與店里營(yíng)業(yè)員不同的是,華容在“銷售”的閑暇,隨時(shí)打印出各類報(bào)表和匯總數(shù)據(jù),并觀察數(shù)據(jù)是否異常。


整整一天,沒有任何異常,華容有些沮喪,徐工則是一直沉默。

?

臨近店里交接班的時(shí)候,華容打印出最后一筆交易的賬單,然后機(jī)械性地選擇打印當(dāng)日的盤點(diǎn)報(bào)表,習(xí)慣性地撕下了報(bào)表,然后準(zhǔn)備關(guān)機(jī)。當(dāng)眼睛掃過報(bào)表的時(shí)候,華容詫異了,隨即將伸出去的手縮了回來,在廢紙堆里快速地的翻查。雖然是廢紙堆,但基本是按照打印的先后順序堆疊的,華容很快找到了自己想要的那兩張記錄,瞄了一眼,然后奔向一直坐在窗前沉默的徐工。


“徐工,我的機(jī)器出現(xiàn)了錯(cuò)誤的數(shù)據(jù),”華容的聲音雖然很低,但興奮是難以掩飾的,然后將手里報(bào)表遞了過去,“您看,左邊這一張是剛才打印的,右邊這一張是上一次打印的”。


徐工端詳手里的兩張報(bào)表,兩張報(bào)表的內(nèi)容基本相同,唯一差別是前者比后者多了一條記錄,右邊的一張數(shù)據(jù)完全正常,左邊的那一張卻出現(xiàn)了非法數(shù)據(jù)65535,即16進(jìn)制的FFFF。


“這一張是最后一筆銷售記錄,兩個(gè)報(bào)表之間的差別就是這條銷售記錄?!比A容指著手里的銷售明細(xì),對(duì)照盤點(diǎn)報(bào)表,向徐工解釋。


“這個(gè)銷售記錄,可以說明什么問題呢?”徐工依舊不解。


“稍等,我計(jì)算一下?!比A容沒有直接回答問題,而是將手里的報(bào)表翻過來,用筆迅速地計(jì)算著。


“有結(jié)果了”,華容放下手里的筆,將計(jì)算的結(jié)果遞了過去,接著解釋:“是這樣的,按照剛才的銷售記錄來計(jì)算,問題出現(xiàn)在最后一條記錄上,我計(jì)算了這條數(shù)據(jù)的存儲(chǔ)地址,該記錄的數(shù)據(jù)發(fā)生了跨頁(yè),商品的編號(hào)存儲(chǔ)在第一片F(xiàn)LASH上,而數(shù)量的數(shù)據(jù)記錄則在第二片F(xiàn)LASH上?!?/p>


“錯(cuò)誤在第二片F(xiàn)LASH上?你確定嗎?”徐工再次發(fā)問。


“沒錯(cuò),所有報(bào)表的首地址,每一條記錄的長(zhǎng)度,都是我來分配的,因此記得非常清晰,不會(huì)有錯(cuò)的?!比A容自信地回答。


“這樣啊”,徐工起身,面向窗外,雙手抱肩,又陷入了沉思,華容不敢發(fā)問。


“根據(jù)你的了解,我們的其他產(chǎn)品中,有沒有出現(xiàn)過類似的問題?”轉(zhuǎn)過身來的徐工,拋出了一個(gè)貌似不相干的問題。


“據(jù)我了解,公司的產(chǎn)品一直只使用一片F(xiàn)LASH,因?yàn)?M的容量足夠用戶使用了,在這個(gè)主板上用到了2片F(xiàn)LASH的設(shè)備,只有這一款?!比A容一邊搜索記憶,一邊回答。


“今天就到這里吧,小華兒,你收拾一下設(shè)備,保存好這三張打印記錄,我去和店長(zhǎng)打個(gè)招呼?!毙旃さ乃季S總是很跳躍,華容覺得自己有些跟不上。


“好的,但是…”,華容欲言又止,瞬間明白了徐工的用意,這里畢竟不是公司,這種場(chǎng)合下絕對(duì)不適合討論技術(shù)問題。

?


走出連鎖店,華容尚未提問,徐工便娓娓道來:是EMC的問題。


這是華容第一次聽到EMC這個(gè)詞。


事后,就EMC的問題及6.18的問題,徐工做了詳細(xì)的解釋,解開了華容的謎團(tuán):
1、EMC問題是電磁干擾,與電路板的設(shè)計(jì)和布局有關(guān),也就是說是EMC的問題是先天性的。
2、EMC對(duì)電路的影響是不確定的,同時(shí)也會(huì)受到工作環(huán)境的影響,所以出現(xiàn)故障也是隨機(jī)。從現(xiàn)象分來看,同一臺(tái)設(shè)備在公司和現(xiàn)場(chǎng),出現(xiàn)了不同的結(jié)果,很可能就是這個(gè)因素。從現(xiàn)場(chǎng)分析看,這種影響對(duì)第一片F(xiàn)LASH幾乎不起作用,但是對(duì)第二片F(xiàn)LASH影響很大。
3、EMC是可以被量化的,但只有在專業(yè)的設(shè)備下才可能“顯形”。而這種設(shè)備價(jià)格是相當(dāng)昂貴的,一般規(guī)模的公司是沒有這種奢侈品的,如果進(jìn)行相關(guān)檢測(cè),需要到指定的機(jī)構(gòu)才可以進(jìn)行。


找到了問題的原因,自然找到了解決問題的辦法:經(jīng)過與客戶的協(xié)商,在保留現(xiàn)有功能的前提下,減少了銷售明細(xì)記錄的流水,然后將所有的報(bào)表數(shù)據(jù),設(shè)計(jì)在1M容量以內(nèi),也就是去掉了第二片存儲(chǔ)器。這種手法,不亞于壯士斷腕。


這個(gè)事件對(duì)于公司來說,挽回了一個(gè)大客戶,對(duì)華容來說,最大的收獲就是認(rèn)識(shí)到了自身的不足:關(guān)于硬件設(shè)計(jì)的認(rèn)知少得可憐,所以觸發(fā)了她學(xué)習(xí)硬件電路設(shè)計(jì)的念頭。
而關(guān)于EMC的進(jìn)一步理解和認(rèn)識(shí),則是受益于兩年前EMSCAN公司的培訓(xùn)。在技術(shù)中心工作的好處就是可以接觸更多前沿的技術(shù),因此,燕飛和華容便成為公司里接受EMC培訓(xùn)的第一批,也是唯一的一批受訓(xùn)人員,自然也是EMSCAN設(shè)備的第一批使用者和受益者。
歷史總是驚人的重復(fù)著,想不到時(shí)隔4年,再次與EMC交鋒,只不過此時(shí)的華容擁有了利器—全套的EMSCAN設(shè)備。眼下有一個(gè)很好的契機(jī),可以對(duì)懷疑的對(duì)象進(jìn)行全面的“體檢”,找出謎團(tuán)的答案,驗(yàn)證自己的推斷。


在經(jīng)過燕飛的同意后,華容來到調(diào)試區(qū),熟練開啟設(shè)備:將上電后的電路板置于掃描板上,然后依次打開控制器、頻譜分析儀,最后運(yùn)行系統(tǒng)軟件。


運(yùn)行的結(jié)果幾乎沒有懸念:掃描的圖像中,有2個(gè)區(qū)域出現(xiàn)輻射峰值,輻射強(qiáng)度高出其他部位很多。由于沒有PCB版圖,因此無法加載布線圖進(jìn)行精確定位,但與測(cè)試的實(shí)物對(duì)比,可以判斷出最高的輻射區(qū)的位置是中部偏上的LCD的接口附近,其次是底部的電源附近。


在LCD接口下方的電路有兩顆芯片時(shí)鐘芯片譯碼器,時(shí)鐘芯片的位置在譯碼器的上方,更接近LCD接口。

華容將檢測(cè)結(jié)果,向燕飛做了匯報(bào),燕飛依舊波瀾不禁,讓華容按照自己的想法解決問題。


硬件的先天不足,只好用軟件后天彌補(bǔ),方法很簡(jiǎn)單:
1、增加對(duì)時(shí)鐘數(shù)據(jù)的讀取頻率,改為400ms讀取一次;
2、對(duì)讀取的數(shù)據(jù),逐個(gè)字節(jié)進(jìn)行驗(yàn)證,使之符合時(shí)鐘數(shù)據(jù)的正常范圍,對(duì)于非法的數(shù)據(jù),采取拋棄和再次讀取的方法,保證每次被寫入的數(shù)據(jù)是正確的格式。


最頭疼的問題,就這樣被解決了。


幽靈,任你神出鬼沒,飄忽不定;


工程師,自有一定之規(guī),毫不留情。

與非網(wǎng)原創(chuàng)內(nèi)容,謝絕轉(zhuǎn)載!

內(nèi)容匯總:

之一:部門重組,誰(shuí)會(huì)出局?

摘要:沈陽(yáng)的一場(chǎng)大雪似乎也預(yù)示著公司的某些變動(dòng),果然在休整后的第二天得到了證實(shí),去掉一個(gè)部門,重組一個(gè)部門,孤立了一些人,拉攏了一些人,兵還是兵,將還是將...

之二:燙手的山芋,華工的困惑

摘要:部門雖然重新劃分,但辦公室里的格局和人員的位置都沒有變動(dòng),好像沒有發(fā)生任何事情。華容原本是個(gè)局部變量,從不參與本部門以外的事情,但這次人事變動(dòng),她的主管設(shè)計(jì)師的職位依舊,只不過屬性變成了全局變量...

之三:被隱藏的Bug

摘要:華工對(duì)自己的項(xiàng)目滿腹疑惑,后來在和燕飛的一場(chǎng)談話中了解到了很多緣由,看似表面風(fēng)光的銷售業(yè)績(jī)只有還有不為人知的秘密...

之四:要根據(jù)PCB設(shè)計(jì)程序,被算計(jì)了!

摘要:經(jīng)過與燕飛中午的一番談話,華容不敢再對(duì)眼前的PDA(手持機(jī))怠慢了,但是只有她自己清楚其中的問題:框圖已經(jīng)有了,芯片的資料可查,那么詳細(xì)的電路原理圖,就不再是問題,可是偏偏無人提供原理圖的電子版,害得她不得不自己動(dòng)手...

之五:憶當(dāng)年200K代碼聯(lián)調(diào)的默契

摘要:平心而論,華容覺得自己與華萍之間還談不上“默契”,因?yàn)榈侥壳盀橹梗@個(gè)詞只屬于當(dāng)年那個(gè)team。是她在轉(zhuǎn)行之后,加入的第一個(gè)開發(fā)團(tuán)隊(duì)—中鼎公司中文版ECR的項(xiàng)目組...

之六:軟件和硬件,如今要彼此刮目相看

摘要:真正的交接開始了,果然不出華容的意料,華萍想盡辦法隱藏原理圖,讓她感到意外的是華容在兩年前已經(jīng)開始學(xué)習(xí)畫板子,而華容也知道她開始寫程序,曾經(jīng)推心置腹的合作伙伴如今心有芥蒂...

之七:箭在弦上,改發(fā)就發(fā)

摘要:華容冷靜地思考了一下整個(gè)“事件”進(jìn)展和所經(jīng)歷的“談話”,她認(rèn)定這個(gè)項(xiàng)目的背后,一定有不為自己所知的內(nèi)幕,尤其是與華萍的一番交涉,加上自己對(duì)她的了解,更加確認(rèn)了這一點(diǎn):這個(gè)項(xiàng)目不簡(jiǎn)單...

之八:PDA檢測(cè)有變,百里行程半九十

摘 要:華容向家里人“請(qǐng)假”,然后埋頭工作。按照既定的計(jì)劃,第9個(gè)工作日,進(jìn)行了網(wǎng)絡(luò)聯(lián)調(diào),包括終端與網(wǎng)卡服務(wù)器以及服務(wù)器與后臺(tái)軟件的通信,由于物理層 的協(xié)議沒變,數(shù)據(jù)層的定義和格式也沒有變化,變化的只是填充的內(nèi)容,因此,毫無懸念,網(wǎng)絡(luò)聯(lián)調(diào)順利通過,但是在PDA檢測(cè)的時(shí)候她卻沒有看到檢測(cè)文 檔...

之九:故友偶重逢,項(xiàng)目工期蓄意被減半

摘要:由于項(xiàng)目工期緊張,華容從制定方案到實(shí)施方案,加班加點(diǎn),甚至向家人請(qǐng)假,最后終于如期測(cè)試通過,在驗(yàn)收的時(shí)候她偶爾遇到了以前的合作伙伴林杰森,也是這次偶遇讓她知道了自己的項(xiàng)目工期被壓縮減半...

之十:你可以暗算我,但是擋不住我的技術(shù)比你強(qiáng)

摘要:煙草局的項(xiàng)目驗(yàn)收完成以后,華容終于松了一口氣,但是被壓縮工期的陰影始終縈繞心頭,以至于想起來心中難受。某一天華萍的項(xiàng)目組出了一個(gè)搞不定的Bug,于是要求華容過去解決...

之十一:設(shè)備出現(xiàn)“幽靈” Bug,華容奔赴現(xiàn)場(chǎng)“救火”

摘要:煙草局的項(xiàng)目忽然出變,原本都測(cè)試通過的設(shè)備有好幾臺(tái)被退回,華容展開緊張地測(cè)試,后來發(fā)現(xiàn)是板子上的一顆芯片型號(hào)...

之十二:新官上任以后的裁員風(fēng)波

摘要:一天發(fā)布在OA里的一條最新消息,如一石激起千層浪,波及到了公司的各個(gè)角落—有史以來,SD公司第一次裁員。這則消息,如同前天的暴風(fēng)雪一樣,來勢(shì)兇猛,威力強(qiáng)大...

之十三:公司技術(shù)大牛,裁員中你被誰(shuí)害了?

摘要:岳海上任后開始了第一次裁員風(fēng)暴,楊玉庭本來不在名單了,但是因?yàn)槟挲g偏大而成了這次裁員的犧牲品...

之十四:為研發(fā)爭(zhēng)取時(shí)間和資源,華容對(duì)岳海的博弈

摘要:華容、岳海以及燕飛坐下來討論項(xiàng)目的執(zhí)行策略,由于已經(jīng)提前知道岳海的態(tài)度,華容提出項(xiàng)目進(jìn)展中的各種問題,最后為項(xiàng)目爭(zhēng)取了時(shí)間和資源...

之十五:舉重若輕,研發(fā)計(jì)劃已然成竹在胸

摘要:華容制定了一套嚴(yán)謹(jǐn)?shù)难邪l(fā)計(jì)劃,而她最擅長(zhǎng)的射頻卡的讀寫距離問題。這個(gè)問題對(duì)于其他人來說,也許高難的,但對(duì)于她來說幾乎談不上難度,只不過是一、兩個(gè)小時(shí)的問題...

之十六:物色一個(gè)得力的助手,測(cè)試工作事半功倍

摘要:華容準(zhǔn)備好測(cè)試流程,發(fā)現(xiàn)需要個(gè)測(cè)試助手,人選哪里來?經(jīng)過與測(cè)試部的商議從中抽出一個(gè)新來的實(shí)習(xí)生林鴻陽(yáng)幫助華容完成測(cè)試,經(jīng)過一天的試用,華容發(fā)現(xiàn)小林出乎意料地滿足自己的需求...

本系列為付麗華老師原創(chuàng)故事《51的江湖》連載,故事中有職場(chǎng),故事中還有技術(shù),最真實(shí)的項(xiàng)目案例與大家一起探討。每周一期,更多內(nèi)容請(qǐng)查看:

《51的江湖》:以小說體的形式講解技術(shù)

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

1996畢業(yè)于華東理工大學(xué)自控系,同年7月進(jìn)入某大型國(guó)企擔(dān)任電氣員。2000年轉(zhuǎn)行從事硬件研發(fā)相關(guān)工作;后從事RFID相關(guān)產(chǎn)品的研發(fā)、設(shè)計(jì),曾參與中國(guó)自動(dòng)識(shí)別協(xié)會(huì)RFID行業(yè)標(biāo)準(zhǔn)的起草;歷任硬件工程師、主管設(shè)計(jì)師、項(xiàng)目經(jīng)理、部門經(jīng)理;2012年至今,就職于沈陽(yáng)工學(xué)院,擔(dān)任電子信息工程專業(yè)教師,研究方向:自動(dòng)識(shí)別技術(shù)。已經(jīng)出版教材《自動(dòng)識(shí)別技術(shù)概論》,職場(chǎng)故事《51的蛻變 》。