我曾經(jīng)在都汽車電子廠家從事過幾年的汽車電子的研發(fā),軟件和硬件都有涉及。
為國內(nèi)的幾家合資車的新上市的車輛研發(fā)遙控中控以及車身控制系統(tǒng)。主要功能包括車燈控制(比如,大燈,位置燈,頂燈,轉(zhuǎn)向燈的開關(guān)檢測以及邏輯控制),門鎖的檢測以及控制(包括RF遙控控制以及開關(guān)的手動控制),還有雨刮控制,車速檢測,20km自動上鎖,CAN,LIN通信等功能。這些基本上都不直接涉及人身安全,我們國內(nèi)沒有哪一個汽車電子廠家能涉及出涉及安全的控制系統(tǒng),比如發(fā)動機(jī)控制系統(tǒng),助力轉(zhuǎn)向系統(tǒng)等,不能研發(fā)不出來,而是沒辦法保證可靠性。受囿于國內(nèi)的研發(fā)機(jī)制以及急功近利的心態(tài)。那些聲稱可以研發(fā),是對顧客生命的不負(fù)責(zé)任。這些安全件不是幾個工程師隨便鼓搗就能出來的,需要包括物料、研發(fā)、測試、生產(chǎn)等環(huán)節(jié)長期系統(tǒng)性科學(xué)化的驗(yàn)證。對于沒有CAN,LIN通信功能的遙控中控功能由于功能簡單,運(yùn)算量小,選用了8位,最高主頻為8MHz的microchip的PIC系列處理器,如PIC16F1936,該系列處理器最大優(yōu)點(diǎn)是抗干擾性能好,但是ROM,RAM資源非常有效,運(yùn)算效率也非常低,一條指令周期需要4個時鐘周期,不支持硬件乘法,做乘法操作可能需要耗時上百毫秒。多數(shù)產(chǎn)品采用c語言編寫程序,通過PICC編譯器編譯成機(jī)器碼。編譯出來代碼有的時候有些冗余,執(zhí)行效率不能達(dá)到最優(yōu)。為了達(dá)到最優(yōu)的執(zhí)行效率,有時會在c語言中嵌套匯編代碼。比如遙控信號接收的程序,遙控信號采用3E碼進(jìn)行編碼,接收程序需要以100us左右的周期在中斷程序檢測遙控信號輸入,如果用c語言編寫,大概100us可能要占用50us以上,還有不到一半的時間處理其他邏輯,而如果嵌套匯編進(jìn)行處理,則僅需要30us語言。遙控?cái)?shù)據(jù)采用數(shù)據(jù)編號進(jìn)行滾動加密,避免被人空中截獲,破解或者重發(fā)攻擊,而數(shù)據(jù)解密進(jìn)行大量移位運(yùn)算,非常耗時,因此也用匯編語言編寫解密代碼。對于功能要求很強(qiáng)大一點(diǎn),比如有LIN,CAN通信功能的控制器,我們選擇ROM/RAM資源更豐富,運(yùn)算速度更快,來自于freescale的8位處理器DZ96,以及16位處理器DZ128。由于性能得到了提升,所有代碼都用C語言開發(fā),沒有在嵌入?yún)R編代碼。考慮到實(shí)時性自己可靠性的要求,所有控制器都沒有基于freeRTOS,linux等操作系統(tǒng)開發(fā)。這都是幾年前的事情了,這幾年電子技術(shù)飛速發(fā)展,32位cortex-Mx的單片機(jī)以極高的性價比橫掃一切,以前大行其道的PIC系列處理器應(yīng)該已經(jīng)慢慢退出了歷史舞臺。我想現(xiàn)在CAN,LIN總線應(yīng)該成了標(biāo)配,車上的電器狀況可以輕而易舉通過診斷儀以及行車電腦進(jìn)行診斷,所謂的汽車電子維修變成了診斷工具的使用以及元件替換,越來越?jīng)]有技術(shù)含量,變成單純的體力勞動。