工程師故事:晶振引發(fā)的系列血案
上周陸續(xù)接收到一小批量客戶返回的“不合格”產(chǎn)品,回來一測試,主要是兩個(gè)問題:一是液晶屏漏液,通常這是由于液晶屏表面被外物碰撞或擠壓造成的,可能是運(yùn)輸流通環(huán)節(jié)造成的,也可能是用戶使用裝配過程不規(guī)范導(dǎo)致的;最棘手的是另一個(gè)問題,用戶提供樣機(jī)對(duì)其(我們的模塊)做測試,發(fā)現(xiàn)常常出現(xiàn)用戶的第一幅上電開機(jī)界面無法正常顯示,本來白色的背景頻繁出現(xiàn)花屏(清屏指令丟失)。
在生產(chǎn)階段,已經(jīng)遇到過類似問題,當(dāng)時(shí)斷定是采購的晶振批次有這樣的問題,已經(jīng)更換了檢驗(yàn)和老化階段出現(xiàn)問題產(chǎn)品的晶振(其他品牌優(yōu)質(zhì)晶振)。但沒想到的是,整個(gè)批次到用戶手中再返回來竟然還有一批這樣的產(chǎn)品。細(xì)細(xì)想想,一點(diǎn)不稀奇,斬草不除根怎么行,生產(chǎn)階段就應(yīng)該果斷的將整個(gè)批次晶振更換掉。
由于和對(duì)方是第一次合作,并且這批產(chǎn)品是用戶的替代產(chǎn)品,所以Y總也很重視。周四下午和Y總驅(qū)車趕往用戶現(xiàn)場,這一去不要緊,對(duì)方公司什么技術(shù)、采購、主管、副總、老總挨個(gè)出場,那個(gè)老總脾氣火爆,直接當(dāng)著我們的面劈頭蓋臉口沫橫飛,場面很是尷尬。Y總畢竟是過來人,什么人什么場面沒見識(shí)過,心態(tài)也很是平和,沒有硬碰硬,當(dāng)場檢驗(yàn)剩下的產(chǎn)品后,坐下來和對(duì)方老總好好的溝通了一番,最終雙方都表示應(yīng)該相互理解,在磨合期相關(guān)應(yīng)該多一些信任和支持。
作為技術(shù)方面的主要責(zé)任人,當(dāng)晚我好好的做了一番檢討,對(duì)整個(gè)流程的各個(gè)環(huán)節(jié)作了一些檢視。周五整個(gè)對(duì)能夠召回的產(chǎn)品更換了晶振,但是測試基本沒出現(xiàn)什么異常,只是個(gè)別有些不一樣的狀況出現(xiàn),以為是一類問題,沒太留心,更換晶振了事。
周一準(zhǔn)備發(fā)貨前再做了一次檢驗(yàn),這一查不要緊,整個(gè)批次還是存在問題。第一次出現(xiàn)的狀況歸咎于那個(gè)批次的晶振起振偏慢,只是影響到用戶的頭幾條指令的鎖存,不會(huì)對(duì)后續(xù)顯示造成影響。但是,一早發(fā)現(xiàn)的狀況用晶振的起振偏慢卻怎么也解釋不了。因?yàn)橥ǔN覀兺茢嘤脩羲捅尘吧篑R上送清屏指令,如果起振偏慢則整個(gè)清屏沒實(shí)現(xiàn)屬于正?,F(xiàn)象;而這回卻是整個(gè)背景黑屏(正常應(yīng)該為白色背景),黑色就想到背景色初始化時(shí)就是黑色,估計(jì)是清屏指令送到了,而前面一條背景色指令沒送到位,做了一個(gè)測試,使用其他顏色作為初始化驗(yàn)證了這個(gè)假設(shè)是成立的。于是一下午加晚上苦心思索驗(yàn)證,最終解決了問題,這個(gè)不僅僅與內(nèi)部代碼的健壯性不夠有關(guān),更是與兩個(gè)系統(tǒng)模塊之間上電先后息息相關(guān)。
用戶是ARM系統(tǒng),這邊是CPLD系統(tǒng),兩邊通過一組準(zhǔn)8080并口總線通信。由于本身這是一個(gè)替代項(xiàng)目,所以我這邊的CPLD系統(tǒng)處于很被動(dòng)的地位,必須完全就著用戶ARM系統(tǒng)的脾性來設(shè)計(jì)。其實(shí)一開始的晶振起振偏慢問題完全可以在不更換器件的情況下解決,用戶只要在上電后多做些延時(shí)再發(fā)指令即可,但是這個(gè)問題到工程師處好解決,那些不懂技術(shù)又坐高位的人不這么看,所以我們只好把苦水咽下肚子統(tǒng)統(tǒng)算自己的錯(cuò)。
而這次出現(xiàn)的問題,顯然不是晶振起振快慢的事,而是兩個(gè)系統(tǒng)誰先起來的事情,因此我也一直糾結(jié)在CPLD系統(tǒng)這邊的復(fù)位快慢問題。說實(shí)話,很難把握好,復(fù)位若是晚了,和晶振起振偏慢是一回事;復(fù)位快了,就出現(xiàn)新的癥狀,那組并口總線上的信號(hào)在復(fù)位前會(huì)是一組不確定的狀態(tài)。此時(shí)如果CPLD內(nèi)鎖存這組信號(hào)的邏輯(通??赡軙?huì)用到狀態(tài)機(jī)等進(jìn)行設(shè)計(jì))不夠健壯,那么出現(xiàn)異常再所難免,就像特權(quán)同學(xué)的第一條指令偶爾丟失(100次開機(jī)會(huì)出現(xiàn)2-4次通常)現(xiàn)象。
對(duì)于新開發(fā)的項(xiàng)目,這些問題都是很好解決的,在雙方的聯(lián)調(diào)過程中相互協(xié)調(diào)和改進(jìn)很容易就可以避免這些系統(tǒng)上電快慢導(dǎo)致的癥狀。但對(duì)于某一方不可更改的情況這就有些困難了,在CPLD系統(tǒng)上必須有足夠的出錯(cuò)容忍機(jī)制和可靠健壯的代碼邏輯來保證系統(tǒng)的穩(wěn)定。