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