?
上文《時(shí)鐘亂碼幽靈般光顧了所有設(shè)備,追蹤尋跡趁勢(shì)撲捉?》講到,經(jīng)過(guò)近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ā)的過(guò)程就是這樣,有些時(shí)候更加需要逆向思維,根據(jù)現(xiàn)象和測(cè)試的結(jié)果,進(jìn)行反向推理,究其根源,尤其是對(duì)于這種非邏輯關(guān)系引起的隨機(jī)錯(cuò)誤,更是如此。
分析之后,關(guān)于時(shí)鐘亂碼的問(wèn)題,華容得到了初步的結(jié)論:EMC問(wèn)題,也就是常說(shuō)的電磁兼容問(wèn)題。
EMC問(wèn)題是產(chǎn)品設(shè)計(jì)和測(cè)試過(guò)程中最神秘的環(huán)節(jié),如果沒(méi)有專業(yè)設(shè)備的介入,看不見(jiàn)、摸不著的電磁干擾,只能憑著感覺(jué)進(jìn)行處理,而“感覺(jué)”往往是因人而異的,就產(chǎn)品而言,這種感覺(jué)來(lái)自于設(shè)計(jì)者的經(jīng)驗(yàn),因此無(wú)法進(jìn)行量化,有些時(shí)候,更是說(shuō)不清道不明,所以進(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í),只不過(guò)是看懂連接和接口,這種硬件水平在硬件研發(fā)部來(lái)說(shuō),定義為“外行”的級(jí)別,也不為過(guò)。有些時(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ī)亂碼,毫無(wú)規(guī)律可言。
?
對(duì)于投訴,作為該軟件負(fù)責(zé)人的華容責(zé)無(wú)旁貸,立即就故障問(wèn)題進(jìn)行分析:
1、排除硬件問(wèn)題
因?yàn)檫@個(gè)設(shè)備的硬件通用的,同款主板的設(shè)備銷量已經(jīng)大于10K,從未出現(xiàn)過(guò)亂碼問(wèn)題。
2、既然不是硬件問(wèn)題,那么問(wèn)題應(yīng)該出現(xiàn)在軟件方面
由于報(bào)表數(shù)據(jù)是根據(jù)銷售記錄生成的,因此很肯能是軟件處理問(wèn)題,既然是軟件問(wèn)題,那么必定是可以重現(xiàn)的。但是,這個(gè)現(xiàn)象,在公司內(nèi)部的測(cè)試的時(shí)候并沒(méi)有發(fā)現(xiàn),因此,可以推斷,可能與客戶的數(shù)據(jù)有關(guān)。
華容將自己的分析和思路,與部門經(jīng)理的毛志勤進(jìn)行了交流,并達(dá)成一致意見(jiàn),征得他的同意后,立即部署最緊急的測(cè)試任務(wù),調(diào)動(dòng)測(cè)試部的所有測(cè)試人員,按照客戶的使用數(shù)據(jù)和流程,在故障機(jī)上進(jìn)行全天候的測(cè)試,目的是將故障重現(xiàn)。
連續(xù)2個(gè)工作日,從測(cè)試的數(shù)據(jù)量上來(lái)說(shuō),遠(yuǎn)遠(yuǎn)超過(guò)了客戶的使用量,然而,結(jié)果卻是令人倍感意外的:一切正常。
華容迷惑了,毛志勤迷惑了。于是將問(wèn)題放到了研發(fā)部的內(nèi)部會(huì)議上討論,技術(shù)總監(jiān)徐工沉思良久,提出了一個(gè)假設(shè):也許是使用環(huán)境的問(wèn)題。
對(duì)于徐工的說(shuō)法,華容不解,毛志勤則是若有所思。
但事實(shí)終究是事實(shí),在客戶所打印報(bào)表中,錯(cuò)誤數(shù)據(jù)就在眼前,雖然內(nèi)部測(cè)試的結(jié)果與客戶的投訴描述不符,但是研發(fā)工程師對(duì)待BUG的原則是零容忍的:寧可多試一千次,也不能放過(guò)一個(gè)疑點(diǎn)。
于是第二天一早,徐工和華容出現(xiàn)在距離公司最近的一個(gè)連鎖店里。這樣的組合可謂是強(qiáng)強(qiáng)聯(lián)合,設(shè)備的電路板是出自徐工的設(shè)計(jì),關(guān)于疑點(diǎn)也是徐工提出來(lái)的,而這版軟件的方案是毛志勤和華容二人共同設(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ù)是否異常。
整整一天,沒(méi)有任何異常,華容有些沮喪,徐工則是一直沉默。
?
臨近店里交接班的時(shí)候,華容打印出最后一筆交易的賬單,然后機(jī)械性地選擇打印當(dāng)日的盤點(diǎn)報(bào)表,習(xí)慣性地撕下了報(bào)表,然后準(zhǔn)備關(guān)機(jī)。當(dāng)眼睛掃過(guò)報(bào)表的時(shí)候,華容詫異了,隨即將伸出去的手縮了回來(lái),在廢紙堆里快速地的翻查。雖然是廢紙堆,但基本是按照打印的先后順序堆疊的,華容很快找到了自己想要的那兩張記錄,瞄了一眼,然后奔向一直坐在窗前沉默的徐工。
“徐工,我的機(jī)器出現(xiàn)了錯(cuò)誤的數(shù)據(jù),”華容的聲音雖然很低,但興奮是難以掩飾的,然后將手里報(bào)表遞了過(guò)去,“您看,左邊這一張是剛才打印的,右邊這一張是上一次打印的”。
徐工端詳手里的兩張報(bào)表,兩張報(bào)表的內(nèi)容基本相同,唯一差別是前者比后者多了一條記錄,右邊的一張數(shù)據(jù)完全正常,左邊的那一張卻出現(xiàn)了非法數(shù)據(jù)65535,即16進(jìn)制的FFFF。
“這一張是最后一筆銷售記錄,兩個(gè)報(bào)表之間的差別就是這條銷售記錄。”華容指著手里的銷售明細(xì),對(duì)照盤點(diǎn)報(bào)表,向徐工解釋。
“這個(gè)銷售記錄,可以說(shuō)明什么問(wèn)題呢?”徐工依舊不解。
“稍等,我計(jì)算一下?!比A容沒(méi)有直接回答問(wèn)題,而是將手里的報(bào)表翻過(guò)來(lái),用筆迅速地計(jì)算著。
“有結(jié)果了”,華容放下手里的筆,將計(jì)算的結(jié)果遞了過(guò)去,接著解釋:“是這樣的,按照剛才的銷售記錄來(lái)計(jì)算,問(wèn)題出現(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ā)問(wèn)。
“沒(méi)錯(cuò),所有報(bào)表的首地址,每一條記錄的長(zhǎng)度,都是我來(lái)分配的,因此記得非常清晰,不會(huì)有錯(cuò)的?!比A容自信地回答。
“這樣啊”,徐工起身,面向窗外,雙手抱肩,又陷入了沉思,華容不敢發(fā)問(wèn)。
“根據(jù)你的了解,我們的其他產(chǎn)品中,有沒(méi)有出現(xiàn)過(guò)類似的問(wèn)題?”轉(zhuǎn)過(guò)身來(lái)的徐工,拋出了一個(gè)貌似不相干的問(wèn)題。
“據(jù)我了解,公司的產(chǎn)品一直只使用一片F(xiàn)LASH,因?yàn)?M的容量足夠用戶使用了,在這個(gè)主板上用到了2片F(xiàn)LASH的設(shè)備,只有這一款?!比A容一邊搜索記憶,一邊回答。
“今天就到這里吧,小華兒,你收拾一下設(shè)備,保存好這三張打印記錄,我去和店長(zhǎng)打個(gè)招呼?!毙旃さ乃季S總是很跳躍,華容覺(jué)得自己有些跟不上。
“好的,但是…”,華容欲言又止,瞬間明白了徐工的用意,這里畢竟不是公司,這種場(chǎng)合下絕對(duì)不適合討論技術(shù)問(wèn)題。
?
走出連鎖店,華容尚未提問(wèn),徐工便娓娓道來(lái):是EMC的問(wèn)題。
這是華容第一次聽(tīng)到EMC這個(gè)詞。
事后,就EMC的問(wèn)題及6.18的問(wèn)題,徐工做了詳細(xì)的解釋,解開了華容的謎團(tuán):
1、EMC問(wèn)題是電磁干擾,與電路板的設(shè)計(jì)和布局有關(guān),也就是說(shuō)是EMC的問(wèn)題是先天性的。
2、EMC對(duì)電路的影響是不確定的,同時(shí)也會(huì)受到工作環(huán)境的影響,所以出現(xiàn)故障也是隨機(jī)。從現(xiàn)象分來(lái)看,同一臺(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ī)模的公司是沒(méi)有這種奢侈品的,如果進(jìn)行相關(guān)檢測(cè),需要到指定的機(jī)構(gòu)才可以進(jìn)行。
找到了問(wèn)題的原因,自然找到了解決問(wèn)題的辦法:經(jīng)過(guò)與客戶的協(xié)商,在保留現(xiàn)有功能的前提下,減少了銷售明細(xì)記錄的流水,然后將所有的報(bào)表數(shù)據(jù),設(shè)計(jì)在1M容量以內(nèi),也就是去掉了第二片存儲(chǔ)器。這種手法,不亞于壯士斷腕。
這個(gè)事件對(duì)于公司來(lái)說(shuō),挽回了一個(gè)大客戶,對(duì)華容來(lái)說(shuō),最大的收獲就是認(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交鋒,只不過(guò)此時(shí)的華容擁有了利器—全套的EMSCAN設(shè)備。眼下有一個(gè)很好的契機(jī),可以對(duì)懷疑的對(duì)象進(jìn)行全面的“體檢”,找出謎團(tuán)的答案,驗(yàn)證自己的推斷。
在經(jīng)過(guò)燕飛的同意后,華容來(lái)到調(diào)試區(qū),熟練開啟設(shè)備:將上電后的電路板置于掃描板上,然后依次打開控制器、頻譜分析儀,最后運(yùn)行系統(tǒng)軟件。
運(yùn)行的結(jié)果幾乎沒(méi)有懸念:掃描的圖像中,有2個(gè)區(qū)域出現(xiàn)輻射峰值,輻射強(qiáng)度高出其他部位很多。由于沒(méi)有PCB版圖,因此無(wú)法加載布線圖進(jìn)行精確定位,但與測(cè)試的實(shí)物對(duì)比,可以判斷出最高的輻射區(qū)的位置是中部偏上的LCD的接口附近,其次是底部的電源附近。
在LCD接口下方的電路有兩顆芯片:時(shí)鐘芯片和譯碼器,時(shí)鐘芯片的位置在譯碼器的上方,更接近LCD接口。
華容將檢測(cè)結(jié)果,向燕飛做了匯報(bào),燕飛依舊波瀾不禁,讓華容按照自己的想法解決問(wèn)題。
硬件的先天不足,只好用軟件后天彌補(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ù)是正確的格式。
最頭疼的問(wèn)題,就這樣被解決了。
幽靈,任你神出鬼沒(méi),飄忽不定;
工程師,自有一定之規(guī),毫不留情。
與非網(wǎng)原創(chuàng)內(nèi)容,謝絕轉(zhuǎn)載!
內(nèi)容匯總:
摘要:沈陽(yáng)的一場(chǎng)大雪似乎也預(yù)示著公司的某些變動(dòng),果然在休整后的第二天得到了證實(shí),去掉一個(gè)部門,重組一個(gè)部門,孤立了一些人,拉攏了一些人,兵還是兵,將還是將...
摘要:部門雖然重新劃分,但辦公室里的格局和人員的位置都沒(méi)有變動(dòng),好像沒(méi)有發(fā)生任何事情。華容原本是個(gè)局部變量,從不參與本部門以外的事情,但這次人事變動(dòng),她的主管設(shè)計(jì)師的職位依舊,只不過(guò)屬性變成了全局變量...
摘要:華工對(duì)自己的項(xiàng)目滿腹疑惑,后來(lái)在和燕飛的一場(chǎng)談話中了解到了很多緣由,看似表面風(fēng)光的銷售業(yè)績(jī)只有還有不為人知的秘密...
之四:要根據(jù)PCB設(shè)計(jì)程序,被算計(jì)了!
摘要:經(jīng)過(guò)與燕飛中午的一番談話,華容不敢再對(duì)眼前的PDA(手持機(jī))怠慢了,但是只有她自己清楚其中的問(wèn)題:框圖已經(jīng)有了,芯片的資料可查,那么詳細(xì)的電路原理圖,就不再是問(wèn)題,可是偏偏無(wú)人提供原理圖的電子版,害得她不得不自己動(dòng)手...
之五:憶當(dāng)年200K代碼聯(lián)調(diào)的默契
摘要:平心而論,華容覺(jué)得自己與華萍之間還談不上“默契”,因?yàn)榈侥壳盀橹?,這個(gè)詞只屬于當(dāng)年那個(gè)team。是她在轉(zhuǎn)行之后,加入的第一個(gè)開發(fā)團(tuán)隊(duì)—中鼎公司中文版ECR的項(xiàng)目組...
摘要:真正的交接開始了,果然不出華容的意料,華萍想盡辦法隱藏原理圖,讓她感到意外的是華容在兩年前已經(jīng)開始學(xué)習(xí)畫板子,而華容也知道她開始寫程序,曾經(jīng)推心置腹的合作伙伴如今心有芥蒂...
摘要:華容冷靜地思考了一下整個(gè)“事件”進(jìn)展和所經(jīng)歷的“談話”,她認(rèn)定這個(gè)項(xiàng)目的背后,一定有不為自己所知的內(nèi)幕,尤其是與華萍的一番交涉,加上自己對(duì)她的了解,更加確認(rèn)了這一點(diǎn):這個(gè)項(xiàng)目不簡(jiǎn)單...
摘 要:華容向家里人“請(qǐng)假”,然后埋頭工作。按照既定的計(jì)劃,第9個(gè)工作日,進(jìn)行了網(wǎng)絡(luò)聯(lián)調(diào),包括終端與網(wǎng)卡服務(wù)器以及服務(wù)器與后臺(tái)軟件的通信,由于物理層 的協(xié)議沒(méi)變,數(shù)據(jù)層的定義和格式也沒(méi)有變化,變化的只是填充的內(nèi)容,因此,毫無(wú)懸念,網(wǎng)絡(luò)聯(lián)調(diào)順利通過(guò),但是在PDA檢測(cè)的時(shí)候她卻沒(méi)有看到檢測(cè)文 檔...
摘要:由于項(xiàng)目工期緊張,華容從制定方案到實(shí)施方案,加班加點(diǎn),甚至向家人請(qǐng)假,最后終于如期測(cè)試通過(guò),在驗(yàn)收的時(shí)候她偶爾遇到了以前的合作伙伴林杰森,也是這次偶遇讓她知道了自己的項(xiàng)目工期被壓縮減半...
之十:你可以暗算我,但是擋不住我的技術(shù)比你強(qiáng)
摘要:煙草局的項(xiàng)目驗(yàn)收完成以后,華容終于松了一口氣,但是被壓縮工期的陰影始終縈繞心頭,以至于想起來(lái)心中難受。某一天華萍的項(xiàng)目組出了一個(gè)搞不定的Bug,于是要求華容過(guò)去解決...
之十一:設(shè)備出現(xiàn)“幽靈” Bug,華容奔赴現(xiàn)場(chǎng)“救火”
摘要:煙草局的項(xiàng)目忽然出變,原本都測(cè)試通過(guò)的設(shè)備有好幾臺(tái)被退回,華容展開緊張地測(cè)試,后來(lái)發(fā)現(xiàn)是板子上的一顆芯片型號(hào)...
摘要:一天發(fā)布在OA里的一條最新消息,如一石激起千層浪,波及到了公司的各個(gè)角落—有史以來(lái),SD公司第一次裁員。這則消息,如同前天的暴風(fēng)雪一樣,來(lái)勢(shì)兇猛,威力強(qiáng)大...
之十三:公司技術(shù)大牛,裁員中你被誰(shuí)害了?
摘要:岳海上任后開始了第一次裁員風(fēng)暴,楊玉庭本來(lái)不在名單了,但是因?yàn)槟挲g偏大而成了這次裁員的犧牲品...
之十四:為研發(fā)爭(zhēng)取時(shí)間和資源,華容對(duì)岳海的博弈
摘要:華容、岳海以及燕飛坐下來(lái)討論項(xiàng)目的執(zhí)行策略,由于已經(jīng)提前知道岳海的態(tài)度,華容提出項(xiàng)目進(jìn)展中的各種問(wèn)題,最后為項(xiàng)目爭(zhēng)取了時(shí)間和資源...
摘要:華容制定了一套嚴(yán)謹(jǐn)?shù)难邪l(fā)計(jì)劃,而她最擅長(zhǎng)的射頻卡的讀寫距離問(wèn)題。這個(gè)問(wèn)題對(duì)于其他人來(lái)說(shuō),也許高難的,但對(duì)于她來(lái)說(shuō)幾乎談不上難度,只不過(guò)是一、兩個(gè)小時(shí)的問(wèn)題...
之十六:物色一個(gè)得力的助手,測(cè)試工作事半功倍
摘要:華容準(zhǔn)備好測(cè)試流程,發(fā)現(xiàn)需要個(gè)測(cè)試助手,人選哪里來(lái)?經(jīng)過(guò)與測(cè)試部的商議從中抽出一個(gè)新來(lái)的實(shí)習(xí)生林鴻陽(yáng)幫助華容完成測(cè)試,經(jīng)過(guò)一天的試用,華容發(fā)現(xiàn)小林出乎意料地滿足自己的需求...
本系列為付麗華老師原創(chuàng)故事《51的江湖》連載,故事中有職場(chǎng),故事中還有技術(shù),最真實(shí)的項(xiàng)目案例與大家一起探討。每周一期,更多內(nèi)容請(qǐng)查看: