干產(chǎn)品就是查別人的缺、補自己的漏
據說(shuō),一個(gè)人從事某種工作久了,就會(huì )患上相應的職業(yè)病。
本文引用地址:http://dyxdggzs.com/article/201909/405066.htm比如說(shuō),在這個(gè)姑娘們袒胸露背花枝招展的季節里,如果有一個(gè)中年油膩男帶著(zhù)一種思考人生哲學(xué)的深邃目光上下打量她們,請你先不要“以小人之心度君子之腹”,對他嗤之以鼻。因為,也許他是一名醫術(shù)精湛的中醫,正在懷著(zhù)醫者仁心,對這些姑娘們望聞但不問(wèn)切,看看她們是氣血不足,還是脾虛腎虧。
灑家秉持“非禮勿視”的君子之道,對街頭的美女們自然視若無(wú)睹,卻總是喜歡打量路邊停著(zhù)的汽車(chē),尤其是發(fā)現有車(chē)燈未曾關(guān)掉時(shí),總會(huì )忍不住去看看這輛車(chē)是否已經(jīng)落鎖。同樣的,灑家沒(méi)有什么不軌之心,也絕不是將自己的快樂(lè )建立在別人的痛苦之上,喜歡看到車(chē)耗沒(méi)了電而打不著(zhù)火的情形。
雖然打不著(zhù)火開(kāi)不了車(chē)想來(lái)也頗為快意,但是絕非灑家本懷!
因為,這是灑家的職業(yè)病。干汽車(chē)電子多年,總想看看各大外資、中資、中外合資的汽車(chē)上的車(chē)身控制單元會(huì )不會(huì )出現落鎖后關(guān)不掉車(chē)燈的情況。
1
這一天,灑家的心情格外開(kāi)心。因為灑家在上班路上發(fā)現了一起汽車(chē)小燈未正常關(guān)閉的生動(dòng)案例。
當大肚便便的車(chē)主從車(chē)上踱下來(lái)時(shí),灑家只是下意識地摸了摸自己那一塊腹肌的肚皮。目力所及之處,是比大肚子更美好溫馨的畫(huà)面。一個(gè)年輕的媽媽正牽著(zhù)自己的兒子去上幼兒園,在被拖拽地磕磕絆絆的小不點(diǎn)身旁,一位長(cháng)發(fā)披肩、面容姣好的長(cháng)腿美女正兀自婀娜地走著(zhù)。
一抹淡淡的云彩若即若離地懸掛在碧海似的天空中,微風(fēng)輕輕地推動(dòng)著(zhù)長(cháng)發(fā)美女緩緩前行。小胳膊小腿的小不點(diǎn)半走半跑著(zhù),追趕著(zhù)媽媽輕盈的腳步。
一股甜滋滋的惆悵在我心里醞釀著(zhù),翻騰著(zhù)?!松嵌嗝疵篮冒?!’
在高跟鞋悅耳且規律的噠噠聲中,一聲不和諧的喇叭聲響了起來(lái),灑家稍稍收回炯炯的目光,在心中mark了一下,“汽車(chē)落鎖了,喇叭響一聲,轉向閃三次”,接著(zhù)灑家又著(zhù)意看了一下小燈,發(fā)現還在亮著(zhù)?!霸S是小燈開(kāi)關(guān)沒(méi)關(guān),不過(guò)落鎖五秒后小燈會(huì )自動(dòng)關(guān)掉的?!鼻也还芩?,繼續前行,欣賞人生的美景。
那邊廂,大肚子肥膩男一邊緩緩地踱著(zhù)分不開(kāi)腿的步子,一邊轉動(dòng)著(zhù)不大靈活的脖子,帶著(zhù)睥睨的目光從我身上一掃而過(guò),然后變換了神情,在年輕媽媽和長(cháng)發(fā)美女身上輪回般地掃視著(zhù)。起初,灑家有些憤憤然,‘美女與野獸。。?!?,但是很快,我又變得釋然了。
因為我發(fā)現,他那輛車(chē)的小燈一直在亮著(zhù)!
兩個(gè)前小燈就像是汽車(chē)的眼睛,詭異地注視著(zhù)周?chē)囊磺小?/p>
對美女與野獸的迷思瞬間煙消云散,職業(yè)精神爆棚的灑家的技術(shù)神經(jīng)被迅速喚醒了。
照理說(shuō),即使小燈開(kāi)關(guān)沒(méi)關(guān),落鎖5秒后也該自動(dòng)關(guān)掉了,這是所有車(chē)身控制器都應該實(shí)現的功能。要不然,一直耗電的可不是只有這四個(gè)小燈(前后各兩個(gè)),這臺車(chē)上可能所有電子零部件(ECU)都進(jìn)不了低功耗狀態(tài)。
按照每個(gè)小燈的功率是5瓦來(lái)算,消耗電流在1.5A以上,車(chē)上所有電子零部件在喚醒狀態(tài)的耗電電流至少2A,按照汽車(chē)蓄電池電量為60Ah來(lái)算,這臺車(chē)基本上15個(gè)小時(shí)就耗沒(méi)電了。
灑家在腦海里飛快地進(jìn)行這些計算時(shí),大肚男正依依不舍地拗過(guò)頭去,帶著(zhù)逐漸遠去的背影消失在一座寫(xiě)字樓的門(mén)口里。
2
人生啊,就是一個(gè)謎。冥冥中似乎有一種無(wú)形的力量,將你的昨天、今天和明天奇妙般地串在一起。
目睹大肚男汽車(chē)小燈沒(méi)關(guān)上的事情還不到一周,這個(gè)命運就詭異般地落到了我的頭上。
那天,灑家專(zhuān)心致志地搭著(zhù)模型,做著(zhù)仿真,正在物我兩忘之際,一個(gè)好長(cháng)時(shí)間沒(méi)有聯(lián)系的合作伙伴把電話(huà)打了過(guò)來(lái)。
“不得了了,天雷君,咱的車(chē)身控制器把一臺試驗車(chē)給耗沒(méi)電了?!睆埞ぜ贝俚穆曇?,跨過(guò)上千公里,騰地一聲把我從座椅上拽起。
平地驚雷一聲起,上周的幸災樂(lè )禍居然成為了災難的序曲!大肚男睥睨的眼神在灑家腦海里一閃而過(guò),像一陣秋風(fēng),帶來(lái)陣陣涼意。
前方軍情緊急,快馬加鞭不停蹄,第二天,我就和張工一起出現在汽車(chē)廠(chǎng)的辦公室里。
汽車(chē)廠(chǎng)的王工是老相識了,見(jiàn)面寒暄幾句,就給我們交了底。
那天,王工和同事開(kāi)車(chē)回來(lái),同事熟練地按著(zhù)門(mén)把手開(kāi)關(guān)鎖上了車(chē),跑到一邊打起了電話(huà)。
王工剛想上樓,發(fā)現自己的包落在了車(chē)上,本想找同事要鑰匙來(lái)著(zhù),結果看到同事左手拿著(zhù)鑰匙右手拿著(zhù)手機,正在專(zhuān)心致志地咕嚕嘰里,于是乎心中一動(dòng),就沒(méi)有找他要鑰匙。
王工估摸著(zhù)車(chē)門(mén)和同事之間的距離,覺(jué)得車(chē)上的PEPS(這臺車(chē)上裝有無(wú)鑰匙進(jìn)入/啟動(dòng)系統)應該能掃描到車(chē)外的鑰匙,于是就按了一下門(mén)把手開(kāi)關(guān),只要PEPS掃描到這把鑰匙,車(chē)門(mén)就會(huì )開(kāi)鎖。
王工說(shuō),就是這么不經(jīng)意的一按,一個(gè)大bug跳了出來(lái)!
車(chē)門(mén)和同事手中的鑰匙距離著(zhù)實(shí)有些遠,所以車(chē)門(mén)沒(méi)能開(kāi)了鎖,王工本來(lái)也沒(méi)有報太大希望,這倒沒(méi)什么。
關(guān)鍵是,負責車(chē)身電子產(chǎn)品幾個(gè)年頭的王工的職業(yè)病也不小,他“本能”地看了一下儀表盤(pán),發(fā)現小燈指示燈居然亮了起來(lái)!趕緊跑到車(chē)前一看,小燈果然亮著(zhù)!
發(fā)現問(wèn)題的王工興奮地和同事測試了好幾遍,發(fā)現了bug出沒(méi)的規律:
在鎖車(chē)之前,保持小燈開(kāi)關(guān)為打開(kāi)狀態(tài),鎖上車(chē)五秒后,小燈關(guān)掉,等上半分鐘,整車(chē)進(jìn)入休眠狀態(tài)。這時(shí),把鑰匙拿遠一些,另一個(gè)人按下門(mén)把手開(kāi)關(guān),這時(shí)候,車(chē)門(mén)固然開(kāi)不了鎖,但是小燈會(huì )亮起來(lái),并打算一直亮到地老天荒。
王工的描述很清晰,我做了一下“翻譯”,解釋給張工-按下門(mén)把手開(kāi)關(guān),PEPS被喚醒,通過(guò)CAN總線(xiàn)又喚醒了車(chē)身控制器。這時(shí)候車(chē)身控制器竟然打開(kāi)了小燈,結果就一直回不到低功耗狀態(tài)了。
3
張工拖著(zhù)肥肥的雙下巴,45度斜仰著(zhù)肥碩的大腦袋,呆呆地注視著(zhù)空無(wú)一物的天空。顯然,他陷入了沉思當中,或者陷入了“做沉思狀”的角色扮演中。
和王工混得很熟的灑家,沒(méi)有心情跟張工一起玩角色扮演,因為我一眼就察覺(jué)出了問(wèn)題可能的所在。
正如上述所示的那樣,這里的休眠-喚醒路徑是:PEPS 通過(guò)CAN總線(xiàn)喚醒了車(chē)身控制器,車(chē)身控制器通過(guò)LIN線(xiàn)又喚醒了組合開(kāi)關(guān)節點(diǎn)。車(chē)身控制器不會(huì )無(wú)緣無(wú)故打開(kāi)小燈,肯定是組合開(kāi)關(guān)節點(diǎn)通過(guò)LIN報文向我發(fā)送了關(guān)閉小燈、打開(kāi)小燈的命令!
至于組合開(kāi)關(guān)節點(diǎn)為什么會(huì )發(fā)生打開(kāi)狀態(tài)->關(guān)閉狀態(tài)->打開(kāi)狀態(tài)的切換,既然現在的小燈開(kāi)關(guān)沒(méi)有關(guān)上,從編碼的角度也就很容易理解了。組合開(kāi)關(guān)節點(diǎn)休眠再喚醒之后,執行了開(kāi)關(guān)狀態(tài)的初始化,將小燈開(kāi)關(guān)狀態(tài)初始化為關(guān)閉狀態(tài)(默認就是關(guān)閉),此時(shí)通過(guò)LIN報文發(fā)送的是“小燈開(kāi)關(guān)關(guān)閉”,經(jīng)過(guò)一定的濾波時(shí)間(假設為100毫秒)后測得小燈開(kāi)關(guān)為打開(kāi)狀態(tài),此時(shí)通過(guò)LIN報文發(fā)送的是“小燈開(kāi)關(guān)打開(kāi)”。
故而,在我的車(chē)身控制器中,喚醒后組合開(kāi)關(guān)節點(diǎn)發(fā)送小燈開(kāi)關(guān)關(guān)閉,然后又發(fā)送了小燈開(kāi)關(guān)打開(kāi),于是車(chē)身控制器重新打開(kāi)了小燈。換句話(huà)說(shuō),如果小燈開(kāi)關(guān)通過(guò)LIN報文發(fā)送過(guò)來(lái)的一直是打開(kāi)狀態(tài)的話(huà),車(chē)身控制器也不會(huì )重新打開(kāi)小燈。
我把這個(gè)分析告訴了王工,王工帶著(zhù)蒙拉麗莎似的微笑不置可否,讓我抓個(gè)LIN報文看看。張工麻利地接上OBD口,打開(kāi)canoe,抓“小燈開(kāi)關(guān)狀態(tài)”這個(gè)LIN信號的波形。果然,這個(gè)組合開(kāi)關(guān)節點(diǎn)在喚醒后不合時(shí)宜地先發(fā)送了“小燈關(guān)閉”,緊接著(zhù)一直發(fā)送“小燈打開(kāi)”。
問(wèn)題坐實(shí)了!組合開(kāi)關(guān)節點(diǎn)的處理確實(shí)有漏洞。但是王工又提出了一個(gè)問(wèn)題:既然功能規范中要求車(chē)門(mén)閉鎖五秒后關(guān)閉小燈,這車(chē)門(mén)沒(méi)有成功解鎖,是不是車(chē)身控制器也應該在喚醒之后五秒后再關(guān)閉小燈呢?
斯言誠哉!車(chē)門(mén)沒(méi)成功解鎖,仍然處于閉鎖狀態(tài),即使沒(méi)有車(chē)門(mén)閉鎖這個(gè)動(dòng)作,從喚醒開(kāi)始計時(shí)5秒似乎也是應有之義,因為,總不能讓小燈一直亮著(zhù),整個(gè)車(chē)一直處于非休眠狀態(tài)吧!
4
當我灰溜溜地改代碼時(shí),張工踅摸到我跟前,跟我咬起了耳朵。
原來(lái),A點(diǎn)車(chē)身控制器供應商不久之前也被叫了過(guò)來(lái)測試這個(gè)問(wèn)題,測試結果當然是一樣的。但是,在王工提出修改代碼的要求后,A點(diǎn)技術(shù)人員義正言辭地表示,誰(shuí)的錯就誰(shuí)改,既然是組合開(kāi)關(guān)節點(diǎn)的錯,怎么能遷就他們而讓自己改呢?
結果,王工無(wú)奈之下只好讓組合開(kāi)關(guān)節點(diǎn)供應商修改。張工帶著(zhù)憤憤然的神色,“哎,就知道欺負B點(diǎn)供應商,難道,不把B點(diǎn)供應商當人嗎?”
張工話(huà)音甫落,我的眼前忽然浮起王工那蒙娜麗莎的微笑,so de si ne!
不過(guò),做為修行人,推功攬過(guò)本是應有之義,別人的產(chǎn)品確實(shí)有缺陷,但是自己的產(chǎn)品也不能說(shuō)是十足完美。靜坐常思己過(guò),閑談莫論人非,于是我跟頗有些不平的張工說(shuō)道:
干產(chǎn)品,本來(lái)就是查別人的缺,補自己的漏嘛!
何委屈之有哉!
評論