張陸達 嚴天一 桂永建 趙劍橋 趙培通 張方明
摘要:針對傳統(tǒng)汽車電子控制單元設(shè)計開發(fā)過程中存在的手工編程效率低、可靠性差和開發(fā)周期長等問題,本文提出一種基于Simulink自動代碼生成技術(shù)的設(shè)計方法。在Matlab/Simulink環(huán)境下,對NXP公司16位單片機MC9S12XEP100編寫包含系統(tǒng)目標文件在內(nèi)的控制文件,實現(xiàn)嵌入式C代碼生成。同時,編寫C MEX S函數(shù)及模塊目標語言編譯器(target language compiler,TLC)文件,并進行封裝,實現(xiàn)該款芯片各底層驅(qū)動模塊代碼內(nèi)嵌,添加至Simulink模塊庫,在Simulink中對底層模塊進行模型搭建,并生成嵌入式代碼進行硬件在環(huán)測試。測試結(jié)果表明,本文所設(shè)計的底層自動代碼生成技術(shù),實現(xiàn)了底層代碼的自動配置,同時與應(yīng)用層代碼結(jié)合,實現(xiàn)CAN車速報文接收和定時發(fā)送,所解析的車速信號與Simulink模擬車速信號對比一致,驗證了本文所設(shè)計的底層驅(qū)動模塊的高效性和可行性。該研究能夠有效解決項目研發(fā)過程中底層代碼配置復(fù)雜的問題。
關(guān)鍵詞:MC9S12XEP100; Simulink; 自動代碼生成; 底層驅(qū)動模塊
中圖分類號:U463.6 文獻標識碼:A
文章編號:1006-9798(2023)02-0082-08; DOI:10.13306/j.1006-9798.2023.02.012
基金項目:山東省自然科學(xué)基金面上項目(ZR2016EEM49); 國家自然科學(xué)基金資助項目(51475248)
作者簡介:張陸達(1998-),男,碩士研究生,主要研究方向為汽車底盤電子控制技術(shù)。
通信作者:張方明(1985-),男,博士,主要研究方向為車輛動力學(xué)及其控制技術(shù)、汽車零部件設(shè)計及優(yōu)化。Email:f_m_zhang@163.com
隨著汽車電子行業(yè)的飛速發(fā)展,對電子控制單元的硬件與軟件系統(tǒng)要求不斷提高,代碼數(shù)量和復(fù)雜程度也在不斷提升。由于傳統(tǒng)的電子控制系統(tǒng)開發(fā)流程存在更新速度慢、人工編程易出錯等明顯問題,已逐步被先進的V模型開發(fā)流程所取代。在Matlab/Simulink環(huán)境下進行的V模型開發(fā)流程中,自動代碼生成技術(shù)是其中最重要環(huán)節(jié),可顯著縮短開發(fā)周期,并提高最終代碼質(zhì)量和產(chǎn)品的可靠性[1]。仲飛等人[2]基于Simulink自動代碼生成工具箱,實現(xiàn)機械手控制算法及I/O硬件模塊的自動生成。針對汽車電子控制單元控制器局域網(wǎng)絡(luò)(controller area network,CAN)通訊存在的報文數(shù)據(jù)多、手動編程效率低等問題,汪偉等人[3]采用S-Function設(shè)計,編寫并配置面向Infineon TC21x芯片的CAN收發(fā)模塊,并使用Simulink實現(xiàn)了自動代碼生成,驗證了所編寫CAN底層模塊庫的可用性;萬彪[4]利用Matlab語言編寫控制板底層驅(qū)動接口函數(shù)并進行封裝,同時采用Simulink自動代碼生成工具,快速生成各個模塊的驅(qū)動代碼,該代碼生成技術(shù)具有較強的適用性;嚴天一等人[5-6]利用實時工作空間(real-time workshop,RTW)自動代碼生成技術(shù),將電控空氣懸架系統(tǒng)控制策略的Stateflow模型轉(zhuǎn)換為應(yīng)用層程序,并與底層程序結(jié)合,驗證了控制策略及所生成應(yīng)用層代碼的可行性;CHOE J M等人[7]基于模型設(shè)計方法、自動代碼生成技術(shù)及Matlab/Simulink,對輸出電壓及輸入電流控制系統(tǒng)進行建模仿真,有效縮短了開發(fā)周期;N.V.KHANH等人[8]基于Matlab/Simulink,編寫目標微控制器的S-Function函數(shù)及對應(yīng)的TLC文件生成庫模塊,該庫模塊生成的代碼能在STM32F407芯片上準確運行;J.ARM等人[9]針對ARM Cortex-R系列處理器,在Matlab/Simulink環(huán)境中設(shè)計了基于模型自動部署的工具鏈組件,實現(xiàn)目標硬件的嵌入式代碼生成,并利用開發(fā)套件進行處理器在環(huán)仿真,驗證了該工具鏈組件的可行性;L.BONICEL等人[10]基于Simulink代碼生成技術(shù),提出了一種多觸發(fā)機制的嵌入式代碼生成方法,該方法可有效提升生成代碼質(zhì)量和生成效率。針對嵌入式系統(tǒng)開發(fā)需求,Matlab軟件只提供了部分主控芯片的通用模塊庫,用于生成特定目標硬件的底層代碼,而對于未提供模塊庫的其他芯片型號或?qū)嶋H開發(fā)需求,則需要用戶根據(jù)項目需求自行編寫系統(tǒng)目標文件和底層驅(qū)動模塊[11]。因此,本文以NXP公司16位芯片MC9S12XEP100為目標硬件,通過編寫系統(tǒng)目標文件配置代碼生成過程,并在代碼生成結(jié)束后,調(diào)用CodeWarrior開發(fā)環(huán)境對代碼進行編譯,編寫相關(guān)底層驅(qū)動模塊的C MEX S函數(shù)及TLC文件并進行封裝,創(chuàng)建該主控芯片部分底層驅(qū)動庫,并以部分底層模塊為例進行自動代碼生成實驗,進行硬件在環(huán)驗證。該研究為實現(xiàn)基于模型的開發(fā)流程奠定了理論基礎(chǔ)。
1 基于Matlab/Simulink的自動代碼生成技術(shù)分析
1.1 Simulink自動代碼生成工具箱
MathWorks公司提供的Matlab/Simulink自動代碼生成技術(shù)支持多種語言,如C、C++等,由Matlab軟件中不同的工具箱予以支持。針對生成目標為嵌入式C代碼的模型,Simulink在編譯時主要運用Matlab Coder、Simulink Coder和Embedded Coder工具箱[12]。
Matlab Coder工具箱可為Matalb代碼生成可讀高效的C或C++代碼或是將自定義的代碼集成到Matlab中。通過Matlab Coder,還可以將Matlab代碼編譯為Matlab可執(zhí)行文件,以驗證所生成的C代碼,并提高算法的執(zhí)行速度。Simulink Coder工具箱又稱Real-Time Workshop,即實時工作空間,其可從Simulink模型、Stateflow模型和Matlab函數(shù)中生成C和C++代碼。所生成的源代碼可用于實時和非實時應(yīng)用,包括仿真加速、快速原型和硬件在環(huán)測試[13]。Embedded Coder工具箱能夠生成支持MISRA-C、AUTOSAR和ASAP2軟件標準的代碼,并提供可追溯性報告、代碼文檔記錄和自動化軟件驗證功能,可進行軟件在環(huán)(software-in-the-loop,SIL)仿真和處理器在環(huán)仿真(processor-in-the-loop,PIL)測試。在Simulink環(huán)境中,主要應(yīng)用目標是嵌入式單片機時,由Matlab Coder和Simulink Coder完成各自模塊的代碼生成任務(wù),Embedded Coder負責拓展,并優(yōu)化二者生成代碼的文件結(jié)構(gòu)、函數(shù)形式和從數(shù)據(jù)儲存等功能,從而生成結(jié)構(gòu)緊湊的嵌入式C代碼[14]。
1.2 目標語言編譯器
目標語言編譯器是Simulink Coder工具箱重要組成部分,同時也參與自動代碼生成過程的關(guān)鍵步驟,目標語言編譯器參與Simulink代碼生成,嵌入式代碼生成過程如圖1所示。
Simulink模型首先由Simulink Coder工具箱編譯,Simulink Coder讀取模型文件并編譯,產(chǎn)生中間描述文件Model.rtw,在RTW文件中記錄模型內(nèi)模塊、輸入、輸出和其他模塊參數(shù),供目標語言編譯器調(diào)用;目標語言編譯器在讀取模型RTW文件信息后,根據(jù)用戶選擇的系統(tǒng)目標文件和模塊目標文件生成源代碼[15]。如果需要生成特定目標的應(yīng)用程序,Simulink Coder代碼生成器需要一個makefile模板文件,該文件可以為代碼生成過程指定適當?shù)腃或C++編譯器和編譯器選項。makefile模板文件經(jīng)過代碼生成器轉(zhuǎn)化為目標makefile文件Model.mk[16]。
目標語言編譯器主要用到系統(tǒng)目標文件和模塊目標文件2類TLC文件。系統(tǒng)目標文件主要用于指定生成代碼的總體結(jié)構(gòu)。模塊目標文件則用于實現(xiàn)Simulink中不同模塊的功能,其中包括用戶自定義的S Function模塊。在Simulink環(huán)境下,用戶可以進入模型參數(shù)配置中的代碼生成選項,選擇不同系統(tǒng)目標TLC文件,改變代碼接口、構(gòu)建過程和目標硬件參數(shù)等,用于生成特定目標硬件或操作系統(tǒng)上執(zhí)行的代碼[17]。例如,選擇grt.tlc文件作為系統(tǒng)目標文件,將生成適用于快速原型或SIL測試的代碼;而ert.tlc文件則針對嵌入式系統(tǒng)進行優(yōu)化,可以生成更高效的C或C++代碼。針對MC9S12XEP100主控芯片,為了實現(xiàn)嵌入式代碼以及底層驅(qū)動代碼生成過程,首先需要在嵌入式實時目標(embedded real-time target,ERT)文件的基礎(chǔ)上編寫包括系統(tǒng)目標TLC文件在內(nèi)的控制文件,用于底層頭文件的包含及主函數(shù)架構(gòu)的生成,并在代碼生成后調(diào)用CodeWarrior環(huán)境進行編譯。針對芯片的各底層驅(qū)動模塊,需要編寫C MEX S函數(shù),并在Simulink中利用S Function模塊進行封裝,同時編寫對應(yīng)的模塊目標TLC文件。在代碼生成過程中,TLC文件從RTW文件中獲取對應(yīng)模塊參數(shù),生成對應(yīng)底層模塊相關(guān)代碼及指定代碼段生成位置[18]。
2 系統(tǒng)目標文件及底層驅(qū)動模塊實現(xiàn)
2.1 系統(tǒng)控制文件的配置
針對MC9S12XEP100芯片,其控制嵌入式C代碼生成需要的文件,主要包含系統(tǒng)目標文件、頂層控制文件、模板聯(lián)編文件和鉤子文件等一系列TLC文件或M函數(shù),其中部分文件需要針對目標硬件進行修改,自定義控制文件[19]如表1所示。
系統(tǒng)目標文件(MC9S12XEP100.tlc)內(nèi)部結(jié)構(gòu)如圖2所示。系統(tǒng)目標文件主要對編譯過程中的重要變量進行定義,插入用于生成代碼的TLC文件作為主要入口點,同時配置瀏覽器界面 System Target File Browser 中需要顯示的信息,代碼生成器在System Target File Browser啟動時,自動掃描工作路徑下具有格式化標頭注釋的TLC文件作為系統(tǒng)目標文件。
在Simulink環(huán)境下,調(diào)用Embedded Coder工具箱生成嵌入式代碼時,首先要求手動配置模型求解器為非連續(xù)定步長類型,其次需要選擇具體的目標硬件,便于代碼生成器優(yōu)化生成變量的數(shù)據(jù)類型?;卣{(diào)函數(shù)文件(MC9S12XEP100_callback_handler.m)通過Matlab內(nèi)部函數(shù)“slConfigUISetVal()”進行編寫,系統(tǒng)目標文件內(nèi)rtwgensettings結(jié)構(gòu)體進行調(diào)用,對于選取的MC9S12XEP100.tlc,作為系統(tǒng)目標文件Smiulink模型進行自動配置:選取嵌入式代碼目標為飛思卡爾的HCS12(S)系列單片機,求解器類型為非連續(xù)定步長0.01s,選擇Matlab自帶的ert_code_template.cgt文件作為代碼生成模板(code generation template,CGT),MC9S12XEP100_file_process.tlc作為自定義文件處理(custom file processing,CFP)模板,在MC9S12XEP100_file_process.tlc又調(diào)用MC9S12XEP100_main.tlc配置自定義主函數(shù)格式,并把將要生成的自定義代碼整合到緩沖區(qū)中。CFP模板還調(diào)用代碼模板應(yīng)用程序編程接口(application program interface,API)將緩沖區(qū)代碼發(fā)送到生成的源文件和頭文件指定部分[20]。
在編譯過程中,可以在代碼生成和聯(lián)編過程中的指定點執(zhí)行的鉤子方法中寫入自定義代碼,將特定的操作添加到編譯過程中,鉤子文件框架如圖3所示。
MC9S12XEP100_make_rtw_hook.m鉤子文件通過在“exit”鉤子點寫入指令,實現(xiàn)嵌入式代碼放入MC9S12XEP100工程文件夾內(nèi),隨后調(diào)用CodeWarrior開發(fā)環(huán)境,一鍵實現(xiàn)自動代碼生成及CodeWarrior開發(fā)環(huán)境編譯過程。
2.2 底層模塊的編寫及封裝
通過配置MC9S12XEP100目標系統(tǒng)文件等控制文件,Simulink模型就可以生成基于目標硬件的嵌入式代碼,但是涉及到目標芯片的一些具體功能,如CAN通訊、PIT定時器和PWM等功能時,還需要通過編寫S函數(shù),并按模塊進行封裝,實現(xiàn)其對應(yīng)功能。為生成各模塊底層代碼,尤其是涉及寄存器配置時,S函數(shù)需要內(nèi)聯(lián)與各模塊同名的TLC文件。S函數(shù)的編寫方式分為LEVEL1 M S函數(shù)、LEVEL2 M S函數(shù)和C MEX S函數(shù)3類,C MEX S函數(shù)通過C語言及C MEX宏函數(shù)進行編寫,在仿真過程中無需反復(fù)調(diào)用Matlab執(zhí)行器,而是在仿真前將源程序文件編譯成mexw32/mexw64類型的可執(zhí)行文件,能夠減少代碼生成過程中內(nèi)存占用,有效提高了仿真效率[21]。
在配置MC9S12XEP100各模塊時,主要利用C MEX S函數(shù)進行編寫并封裝。C MEX S函數(shù)及其同名TLC文件的基本架構(gòu)如圖4所示。在初始化過程中,使用C MEX宏函數(shù)對模塊參數(shù)個數(shù)、輸入/輸出端口個數(shù)、維數(shù)和饋入方式等進行配置,并設(shè)置采樣時間。
仿真循環(huán)過程中,在mdlOutputs函數(shù)中計算每個采樣時間的輸出,由于底層驅(qū)動模塊的作用是生成底層代碼,并不涉及應(yīng)用層的算法計算仿真,只在某些模塊,如CAN接收中斷模塊中可能會用到子系統(tǒng)觸發(fā),所以一般為空函數(shù)。同理,mdlTerminate一般也為空函數(shù)。mdlRTW函數(shù)只在代碼生成過程中才被調(diào)用,通過創(chuàng)建不可調(diào)參數(shù)為各模塊C MEX S函數(shù)內(nèi)聯(lián)的TLC文件提供參數(shù)信息。在各模塊目標TLC文件內(nèi)部,不同函數(shù)中添加底層代碼,指定其生成位置,結(jié)合自定義參數(shù)信息,實現(xiàn)對指定模塊的底層代碼生成。
在完成各模塊C MEX S函數(shù)編寫后,Matlab提前編譯函數(shù),得到mexw64類型的可執(zhí)行文件。在Simulink環(huán)境下,通過S-Function模塊對底層各模塊進行封裝。以CAN接收模塊為例,CAN接收模塊如圖5所示。
圖5中,模塊瀏覽器界面可輸入指定接收CAN報文ID和需要使用的CAN通道。在代碼生成過程中,這些參數(shù)信息會儲存在RTW文件中,再由目標語言編譯器選擇其同名的TLC文件,將從瀏覽器界面輸入的CAN_ID和Channel參數(shù),填入指定位置生成底層代碼,最后嵌入模型主函數(shù)的指定位置。
3 實驗驗證
3.1 Simulink模型搭建
搭建Simulink待測模型,在Model Configuration Parameters中,選擇MC9S12XEP100.tlc作為系統(tǒng)目標文件,目標系統(tǒng)文件選取界面如圖6所示。Simulink根據(jù)選擇的系統(tǒng)目標文件,調(diào)用對應(yīng)控制文件配置模型求解器及代碼生成器等參數(shù)。
本文以芯片CAN收發(fā)模塊、PIT定時中斷模塊和SCI串口通訊模塊為例,搭建Simulink模型,待測模型如圖7所示。由于目標板選用晶振頻率為16 MHz,因此通過配置鎖相環(huán)模塊,將總線頻率設(shè)置為32 MHz,然后配置CAN初始化模塊,選擇對應(yīng)的CAN通道、波特率及中斷使能狀態(tài),以接收SAE J1939協(xié)議中帶有車速的報文為測試目標,選擇CAN接收模塊需要的CAN報文ID及CAN通道,在CAN接收子系統(tǒng)中,添加車速計算公式,并添加SCI發(fā)送模塊,實現(xiàn)接收及解析報文,并通過串口發(fā)送車速。同時,配置PIT中斷定時器,每隔0.5 s觸發(fā)一次中斷,在中斷模塊子系統(tǒng)中添加CAN發(fā)送模塊,實現(xiàn)固定時間發(fā)送報文。
3.2 生成代碼測試
編譯后,Simulink模型自動生成嵌入式C代碼,鉤子文件將生成的源文件和頭文件置入指定空工程文件中,并調(diào)用CodeWarrior進行編譯或調(diào)試。在CodeWarrior環(huán)境下,利用下載器將代碼下載進單片機。同時,在Simulink中搭建報文發(fā)送模型,Simulink通過Kvaser Leaf Light v2 CAN總線分析儀,將模擬車速報文發(fā)送至單片機。CANKing報文檢測界面如圖8所示。
由J1939協(xié)議可知,含有車速信息的CAN報文ID,用16進制表示為18FEF100,車速信息占報文的第2和第3字節(jié),分辨率為每位1/256 km/h。
由圖8的CANKing檢測界面可知,Simulink向單片機實時發(fā)送模擬車速報文,同時在Debug觀測界面中,單片機每隔0.5 s發(fā)送一條報文。在串口接收觀測界面,采集單片機發(fā)送車速數(shù)值,模擬車速信號及串口發(fā)送車速信號如圖9所示。由圖9可以看出,串口發(fā)送車速信號與Simulink模擬的車速信號一致,實現(xiàn)了芯片底層代碼的配置和自動生成。
4 結(jié)束語
本文介紹了一種針對MC9S12XEP100的底層自動代碼生成技術(shù),通過在Matlab/Simulink環(huán)境下編寫對應(yīng)的系統(tǒng)目標文件和芯片底層功能模塊庫,實現(xiàn)了芯片底層代碼的配置和自動生成。實驗結(jié)果表明,所生成的底層代碼能夠很好地與應(yīng)用層代碼結(jié)合,在單片機上實現(xiàn)CAN報文的接收和定時發(fā)送等功能。相比于以往的自動代碼生成技術(shù),本文設(shè)計的方法能夠在Matlab/Simulink同時實現(xiàn)目標芯片底層和應(yīng)用層的代碼生成,無需再進行代碼手動整合或單獨配置底層寄存器,這為今后實現(xiàn)基于模型的開發(fā)流程打下了基礎(chǔ)。本文仍存在一些局限性,并沒有對各底層模塊添加更豐富的自定義選項,后續(xù)可根據(jù)具體項目及實際需求進行修改。
參考文獻:
[1] 張富成. 基于Simulink/RTW的快速原型控制器的設(shè)計與實現(xiàn)[D]. 成都:電子科技大學(xué),2020.
[2] 仲飛,鐘偉,黃磊. 基于Simulink/RTW的機器人遙操作系統(tǒng)的設(shè)計與實現(xiàn)[J]. 機械與電子,2021,39(7):70-74,80.
[3] 汪偉,莫官旭,申健,等. 基于Simulink自動代碼生成技術(shù)的CAN底層模塊庫設(shè)計[J]. 控制與信息技術(shù),2020(3):93-96.
[4] 萬彪. 一種Simulink模塊封裝的自動代碼生成技術(shù)研究[J]. 機床與液壓,2019,47(10):166-169.
[5] 嚴天一,李聰聰,CHO X H,等. 基于模型的電控空氣懸架系統(tǒng)控制策略與實車試驗[J]. 農(nóng)業(yè)機械學(xué)報,2017,48(5):385-389.
[6] 嚴天一,劉欣強,張魯鄒,等. 基于代碼生成的電控空氣懸架系統(tǒng)電子控制單元[J]. 農(nóng)業(yè)機械學(xué)報,2014,45(9):14-19.
[7] CHOE J M M,ARNEDO L,LEE Y,et al. Model-based design and dsp code generation using simulink?for power electronics applications[C]∥2019 10th International Conference on Power Electronics and ECCE Asia (ICPE 2019-ECCE Asia). South Korea:ICPE(ISPE),2019:923-926.
[8] KHANH N V,DUY N H A,HAI P T L,et al. Development of matlab/simulink library for unsupported microcontrollers,case study:STM32F407[M]. Singapore:Intelligent Communication,Control and Devices. Springer,2021.
[9] ARM J,BRADAC Z,F(xiàn)IEDLER P,et al. Characterizing the simulink-based code generation toolchain for safety-critical applications in an ARM cortex-R target[J]. IFAC-Papers on Line,2019,52(27):271-276.
[10] BONICEL L,BOHRER R,LEPRETTRE B,et al. Multi-triggered embedded software code generation for electrical metering and protection applications[C]∥30th International Workshop on Rapid System Prototyping (RSP'19). New York,United States:Association for Computing Machinery,2019:1-7.
[11] 何濤. 電動汽車整車控制器軟件設(shè)計及關(guān)鍵技術(shù)研究[D]. 北京:清華大學(xué),2010.
[12] 闕同亮. 基于模型設(shè)計的電動汽車整車控制器開發(fā)與技術(shù)研究[D]. 武漢:武漢理工大學(xué),2018.
[13] 付文杰. 基于自動代碼生成的低速柴油機電控系統(tǒng)軟件設(shè)計[D]. 哈爾濱:哈爾濱工程大學(xué),2019.
[14] 馮吉濤. 汽車電控系統(tǒng)代碼自動生成技術(shù)的功能實現(xiàn)[J]. 微型電腦應(yīng)用,2019,35(4):123-125.
[15] 陳經(jīng)緯,李霞,孫慶樂. 基于Simulink的整車控制器軟件系統(tǒng)開發(fā)[J]. 車輛與動力技術(shù),2021(2):33-38.
[16] 邊偉,陳勇,楊柳. 基于自動代碼生成技術(shù)的汽車電子控制系統(tǒng)設(shè)計[J]. 現(xiàn)代電子技術(shù),2016,39(24):132-136.
[17] 陳攀,張承瑞,羅映. 利用MATLAB/RTW的嵌入式代碼自動生成與整合[J]. 小型微型計算機系統(tǒng),2018,39(4):738-741.
[18] 李歡歡. 基于MC9S12XEP100自動代碼生成技術(shù)研究[D]. 北京:北京理工大學(xué),2018.
[19] 戴計生,陳俊波,李程,等. 基于Simulink的嵌入式控制軟件開發(fā)環(huán)境的設(shè)計[J]. 大功率變流技術(shù),2014(5):7-11,32.
[20] 常廣暉,陳誠,吳越,等. 一種支持Cortex-M3的Simulink自定義目標系統(tǒng)設(shè)計[J]. 計算機測量與控制,2021,29(8):190-195.
[21] 李勝磊. 基于Simulink Real-Time的增程器控制器硬件在環(huán)測試平臺的研究與開發(fā)[D]. 杭州:杭州電子科技大學(xué),2020.
Abstract:Aiming at the problems of low efficiency,poor reliability and long development cycle of manual programming in the design and development of traditional automobile electronic control units,this paper proposes a design method based on Simulink automatic code generation technology. For NXP's 16-bit MCU MC9S12XEP100,control files including system target files were written to achieve embedded C code generation on Matlab/Simulink. At the same time,C MEX S functions and target language compiler (TLC) files of modules were written and packaged to embed the code of each underlying driver module of this chip,which were added to the Simulink module library. The designed underlying modules were modeled on Matlab/Simulink and embedded code was generated for hardware-in-the-loop test. The test results show that the automatic code generation technology for underlying driver designed in this paper realizes the automatic configuration of the underlying code,and combines with the application layer code to realize the CAN message of vehicle speed receiving and timing sending. The analyzed speed signal is consistent with the Simulink analog speed signal,which verifies the efficiency and feasibility of the underlying driver module designed in this paper. This research can effectively solve the problem of complex underlying code configuration in the project development process.
Key words:MC9S12XEP100; Simulink; automatic code generation; underlying driver