基于16位控制器的汽車(chē)車(chē)身電子控制系統解決方案(
嵌入式仿真器
本文引用地址:http://dyxdggzs.com/article/196270.htm專(zhuān)門(mén)設計用于復雜的汽車(chē)電子應用的MC33993、MC33887和MC33888器件提供了具有先進(jìn)性能和診斷功能的解決方案。
復雜的多引腳MCU常會(huì )引起開(kāi)發(fā)問(wèn)題。MC9S12DP256提供了一個(gè)單線(xiàn)的后臺調試接口,可以方便地在汽車(chē)環(huán)境中實(shí)現廣泛的調試工作,并且不會(huì )遇到使用傳統電路嵌入式仿真器時(shí)常見(jiàn)的困難。這一接口還能用來(lái)在生產(chǎn)線(xiàn)末端進(jìn)行主要閃存的編程,甚至可以用來(lái)在車(chē)內執行再編程操作。
現代的汽車(chē)微控制器常采用閃存來(lái)存儲主操作程序。編程閃存的最佳方法是在最終組裝后把主程序編程進(jìn)完整的電子控制模塊中,與在模塊組裝前通過(guò)第三方把主程序編程進(jìn)MCU相比,這種方法能有效地避免風(fēng)險和延時(shí)。通過(guò)簡(jiǎn)單的串行接口將主程序編程進(jìn)MCU是在模塊組裝后完成的,一般是在最終測試過(guò)程中執行的。一些制造商采用便宜的獨立編程器完成這一操作,而另外一些廠(chǎng)商則將編程操作集成在生產(chǎn)線(xiàn)末端的測試設備中。
摩托羅拉的相關(guān)器件則提供一個(gè)單線(xiàn)的后臺調試接口用來(lái)實(shí)現閃存編程、檢驗和一般的調試操作。在設備正常工作時(shí),串行通信引腳在復位時(shí)是被拉高的,因此后臺系統不被激活。當有編程器或調試系統連接到這個(gè)引腳時(shí),該引腳在復位時(shí)會(huì )被拉到低電平,從而迫使MCU進(jìn)入激活的后臺模式,而不是去啟動(dòng)應用程序。為了方便調試,可以在設備正常工作時(shí)將一個(gè)主機系統連接到目標MCU系統,從而在不干擾設備運行的條件下實(shí)現對閃存或寄存器內容的監測。所連接的調試系統也能取代MCU的控制來(lái)讀寫(xiě)CPU寄存器、設置硬件斷點(diǎn)或跟蹤單條指令。
傳統的電路嵌入式仿真器與目標系統之間通常需要30到40個(gè)連接,而上述后臺調試接口只需要2到4個(gè)連接。單根BKGD通信信號和公共地是必須的。增加復位信號能使主機更容易地強迫和控制系統復位,在某些情況下增加VDD能允許調試夾具從目標系統中“竊取”電源。這種簡(jiǎn)單的接口為汽車(chē)電子設計師提供了對安裝在運動(dòng)汽車(chē)電子控制模塊中的MCU的調試訪(fǎng)問(wèn)能力。當汽車(chē)在正常路況下行進(jìn)時(shí)許多問(wèn)題只能經(jīng)過(guò)調試才能發(fā)現。
內存編程
與閃存編程相關(guān)的最重要因素是速度與方便性。編程速度取決于閃存單元的編程時(shí)間以及從編程器到目標MCU的數據傳輸速度,當然還有一些其它因素,如編程前擦除陣列的時(shí)間,用于驗證編程操作成功與否的時(shí)間。MC9S12DP256編程任意16位字的時(shí)間是45ms,但一個(gè)突發(fā)編程操作允許對同一排32字閃存中的任意附加字以20ms的速度編程。理論上采用單線(xiàn)后臺調試接口可以在27ms內傳送一個(gè)字的信息,這要比閃存的實(shí)際編程時(shí)間稍微慢一些。實(shí)際編程還需要額外的任務(wù)開(kāi)銷(xiāo),如驗證開(kāi)銷(xiāo)。獨立編程器工具SCBDMPGMR12能在稍少于10s的時(shí)間內完成256KB閃存的擦除、編程和驗證操作。
驗證是產(chǎn)生開(kāi)銷(xiāo)的重要因素之一。重傳所有的數據以實(shí)現字對字的驗證將使編程時(shí)間加倍。一個(gè)快速的辦法是在數據編程進(jìn)閃存時(shí)進(jìn)行CRC計算,然后在整個(gè)閃存編程完成后重讀閃存內容來(lái)驗證CRC值。這一操作完全能以總線(xiàn)速度進(jìn)行,而且無(wú)需重傳數據。
將數據到目標的傳送分離出來(lái),使它在數據編程進(jìn)閃存前完成也會(huì )使編程時(shí)間加倍。較好的方法是數據傳送與編程操作并行展開(kāi)。一般來(lái)說(shuō),要先把編程算法發(fā)送到目標MCU,從而便于管理收到的數據并把數據送入RAM緩沖器,然后控制擦除與編程操作。該編程算法利用二個(gè)數據緩沖器來(lái)接收將被編程進(jìn)閃存的數據。當第一個(gè)緩沖器裝滿(mǎn)數據后,編程算法就開(kāi)始把這些數據編程進(jìn)閃存,同時(shí)新的數據被裝載到第二個(gè)緩沖器。后臺接口可以用來(lái)接收數據并把它們寫(xiě)入RAM,這一操作不會(huì )干擾目標CPU的工作,因為CPU是從另外一個(gè)緩沖器讀取數據并編程進(jìn)閃存的。
MC9S12DP256中的閃存被分成4個(gè)獨立的64KB塊,因此可以獨立地對這4個(gè)塊執行擦除與編程操作。在基于后臺調試的閃存編程情況下,由于數據傳送速度要稍慢于閃存的平均字編程速度,因此試圖交織進(jìn)行獨立陣列的編程操作是不切實(shí)際的,不過(guò)對所有4個(gè)塊并行執行批量擦除操作則是可行的。
后臺訪(fǎng)問(wèn)給首次閃存編程提供了極其便利的途徑,但一些用戶(hù)仍希望采用其它系統總線(xiàn)如CAN總線(xiàn)、J1850總線(xiàn)或串行接口總線(xiàn)來(lái)完成所有的現場(chǎng)再編程操作。在主應用程序中包含合適的啟動(dòng)裝載(boot loader)程序能方便地做到這一點(diǎn)。為了對來(lái)自于成品汽車(chē)中某根總線(xiàn)的某些特殊代碼作出響應,啟動(dòng)裝載程序應能擦除閃存并接受新的編程數據。
評論