




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、聲明:本文是基于模型設(shè)計(jì)自定義目標(biāo)系統(tǒng)配置指南的續(xù)集,主要和大家分享RTW工具箱做自動(dòng)代碼生成時(shí),硬件驅(qū)動(dòng)的編寫方法;本文涉及兩方面的技術(shù)難點(diǎn)C MEX S函數(shù)和TLC文件的編寫,對(duì)這兩方面不熟悉的童鞋可以先看看相關(guān)的Help 文檔。通過硬件驅(qū)動(dòng)模塊和上層控制模塊的結(jié)合,可以實(shí)現(xiàn)嵌入式系統(tǒng)C代碼的一鍵式生成,所生成的代碼無需做任何修改就可以直接下載到單片機(jī)中。本教程開發(fā)環(huán)境如下:Matlab2010a+CodeWarrior V6.3+Mc9s08dz60歡迎汽車電子工程師加入QQ群:89462451,討論Matlab在汽車行業(yè)的應(yīng)用,分享自己的獨(dú)門經(jīng)驗(yàn)。中斷、IO、ADC、TPM、CAN、C
2、CP、MCG下一個(gè)模塊硬件驅(qū)動(dòng),你也可以附件列表:dz60該文件夾為自定義目標(biāo)系統(tǒng)文件系統(tǒng)TLC文件、主函數(shù)TLC文件、_file_processTLC文件、_callback_handler文件、_make_rtw_hook文件、模塊TLC文件(及C-Mex S函數(shù) blocks該文件夾為中斷模塊+數(shù)字輸出模塊的硬件驅(qū)動(dòng)、interrupt_init.c中斷模塊C MEX S函數(shù)interrupt_init.tlc對(duì)應(yīng)的TLC文件dz60_dio_out.c數(shù)字輸出模塊C MEX S函數(shù)dz60_dio_out.tlc對(duì)應(yīng)的TLC文件demos該文件夾為測(cè)試用demo文件interrupt_
3、demo.mdl測(cè)試模型,實(shí)現(xiàn)500ms和100ms任務(wù)(33基于模型設(shè)計(jì)自動(dòng)代碼生成之硬件驅(qū)動(dòng).1、自定義目標(biāo)創(chuàng)建 (32、軟件整體架構(gòu) (33、硬件驅(qū)動(dòng)編寫 (53.1主函數(shù)文件硬件驅(qū)動(dòng) (53.2中斷模塊硬件驅(qū)動(dòng) (53.3數(shù)字輸出模塊硬件驅(qū)動(dòng) (9基于模型設(shè)計(jì)自動(dòng)代碼生成之硬件驅(qū)動(dòng)基于模型設(shè)計(jì)1、自定義目標(biāo)創(chuàng)建本文的硬件平臺(tái)為Mc9s08dz60,Matlab沒有相應(yīng)目標(biāo)系統(tǒng)和現(xiàn)成使用模塊,所以需要自己創(chuàng)建自定義目標(biāo)系統(tǒng)和編寫相應(yīng)的硬件驅(qū)動(dòng)。關(guān)于自定義目標(biāo)系統(tǒng)的創(chuàng)建可以參考基于模型設(shè)計(jì)自定義目標(biāo)系統(tǒng)配置指南。DZ60的自定義目標(biāo)系統(tǒng)源代碼請(qǐng)參考附件中dz60文件夾下的各文件,此處不再累
4、述。通過setup.m文件可以自動(dòng)向Matlab中添加該目標(biāo)系統(tǒng)。2、軟件整體架構(gòu)軟件架構(gòu)對(duì)嵌入式系統(tǒng)的重要性,就不再多說了。這里選擇較為簡單的中斷驅(qū)動(dòng)方式來實(shí)現(xiàn)整個(gè)嵌入式軟件的調(diào)度。 圖1軟件整體架構(gòu)如上圖所示,所有的程序處理都是通過RTC中斷來實(shí)現(xiàn)的,配置RTC模塊每隔10ms產(chǎn)生一次中斷,并對(duì)各個(gè)任務(wù)進(jìn)行計(jì)時(shí)(如flag_100ms,當(dāng)計(jì)時(shí)達(dá)到時(shí)調(diào)用相應(yīng)的任務(wù)處理函數(shù)(如task_100ms,而主函數(shù)中只對(duì)整個(gè)工程進(jìn)行初始化(如interrupt_demo _initialize,在for循環(huán)中無需其余操作。RTC中斷處理函數(shù)部分通過中斷模塊及TLC 文件來對(duì)生成的代碼進(jìn)行控制,后文將詳
5、述。在模型搭建過程中,只需要調(diào)用中斷模塊,通過修改Function Call System中的內(nèi)容即可以實(shí)現(xiàn)各種任務(wù)的調(diào)度,如下圖所示: 圖2軟件架構(gòu)之模塊搭建PS:當(dāng)然,在實(shí)際的產(chǎn)品會(huì)根據(jù)項(xiàng)目需要采用不同的軟件架構(gòu)來實(shí)現(xiàn)任務(wù)調(diào)度,其余架構(gòu)及嵌入式操作系統(tǒng)的嵌入都可以在本文的基礎(chǔ)上進(jìn)行修改來滿足項(xiàng)目需求。非常期望和各位探討關(guān)于嵌入式系統(tǒng)軟件架構(gòu)方面的內(nèi)容。3、硬件驅(qū)動(dòng)編寫硬件驅(qū)動(dòng)主要是編寫C MEX S函數(shù)和其對(duì)應(yīng)的TLC文件。3.1主函數(shù)文件硬件驅(qū)動(dòng)主函數(shù)部分編寫過程可以參考基于模型設(shè)計(jì)自定義目標(biāo)系統(tǒng)配置指南中2.5主函數(shù)TLC文件htgt_srmain.tlc。3.2中斷模塊硬件驅(qū)動(dòng)中斷模
6、塊只需要傳遞一個(gè)任務(wù)周期即可,該參數(shù)為edit類型的數(shù)據(jù)。1、首先在SimulinkUser-Defined Function中找到S-Function模塊拖到一個(gè)新建的model文件中。2、單擊右鍵,尋則Edit Mask,在Icon&Ports選項(xiàng)卡中輸入該模塊需要顯示的內(nèi)容,如disp('RTC Interrupt',如下圖: 3、點(diǎn)擊Parameter選項(xiàng)卡,安裝如下方式填寫參數(shù)信息,其中Promt為顯示提示, Variable為參數(shù)名稱在s函數(shù)中調(diào)用,Type為顯示格式。 4、點(diǎn)擊Documentation選項(xiàng)卡,填寫相關(guān)提示信息,最終該模塊顯示結(jié)果如下。 在
7、看這部分之前,強(qiáng)烈建議先看看Matlab關(guān)于C MEX S函數(shù)的編寫的Help文檔。1、文件聲明部分#define S_FUNCTION_NAME interrupt_init#define S_FUNCTION_LEVEL2每個(gè)C MEX S函數(shù)都是按照上面的方式進(jìn)行聲明,這段代碼的含義為,聲明一個(gè)名為interrupt_init和LEVEL2S函數(shù)。2、參數(shù)聲明 參數(shù)聲明部分,主要是創(chuàng)建一個(gè)枚舉數(shù)組,用于后面的各函數(shù)調(diào)用,如上面那段代碼創(chuàng)建一個(gè)以0開始的枚舉數(shù)據(jù),即INT_PERIOD=0,N_PARAMS=1;后面那行define 用于從終端模塊對(duì)話框中讀取相應(yīng)的參數(shù)。3、模型初始化函數(shù)
8、 該部分代碼針對(duì)中斷模塊含有的變量個(gè)數(shù),輸入模塊個(gè)數(shù)、類型等參數(shù)進(jìn)行初始化。4、mdlRTW函數(shù) 該函數(shù)用于把S 函數(shù)的參數(shù)值,傳遞到model.rtw 文件中,再通過tlc 文件讀取rtw 文件中值,從而控制自動(dòng)代碼的生成。5.其余函數(shù)設(shè)置參數(shù)個(gè)數(shù)設(shè)置參數(shù)為不可調(diào)對(duì)應(yīng)一般的C MEX S函數(shù)只需要上述兩個(gè)函數(shù)即可實(shí)現(xiàn)功能。對(duì)于中斷模塊,由于其需要調(diào)用Function Call System,所以要多一點(diǎn)設(shè)備。 TLC文件用于控制代碼的自定義生成,主要有如下函數(shù):1、BlockTypeSetup函數(shù)該函數(shù)主要用于同一類模塊的初始過程,如一個(gè)模型同時(shí)函數(shù)兩個(gè)中斷模塊,則該函數(shù)內(nèi)的代碼只會(huì)執(zhí)行一次
9、。這里考慮多個(gè)中斷模塊的情況,需要設(shè)置一個(gè)全局變量來存儲(chǔ)多個(gè)模塊的任務(wù)周期。:Vct_Int_Period表示為全局變量。 2、Start函數(shù)該函數(shù)用于控制各模塊的的初始化代碼的生成,如中斷模塊需要對(duì)RTC模塊的RTCSC和RTCMOD寄存器進(jìn)行配置,而這部分代碼應(yīng)該在初始化代碼中生成(即interrupt_demo_initialize函數(shù)。當(dāng)一個(gè)模型含有多個(gè)中斷模塊時(shí),這個(gè)函數(shù)對(duì)多次在每個(gè)中斷模塊中都執(zhí)行,這樣就能讀取到所有中斷模塊的定時(shí)周期, 3、Outputs函數(shù)該函數(shù)用于控制中斷模塊的任務(wù)調(diào)度代碼的生成。在該函數(shù)中需要調(diào)用LibBlockExecuteFcnCall函數(shù)來對(duì)Funct
10、ion Call System模塊中代碼進(jìn)行生成,還需要針對(duì)硬件進(jìn)行相應(yīng)的函數(shù)、變量聲明等。如通過如下代碼可以實(shí)現(xiàn)在model.h文件中聲明函數(shù) 由于TLC文件的編寫是個(gè)復(fù)雜的過程,沒法用簡單的幾句話說明白,所有本文僅對(duì)TLC文件的結(jié)構(gòu)進(jìn)行分析,而不詳細(xì)闡述每段代碼的具體含義,感興趣的童鞋可以自己先看看RTW工具箱中關(guān)于TLC部分的介紹,再結(jié)合附件中的代碼摸索。3.3數(shù)字輸出模塊硬件驅(qū)動(dòng)數(shù)字輸出模塊的硬件驅(qū)動(dòng)和中斷模塊的驅(qū)動(dòng)非常相似,此處只做簡要介紹。數(shù)字輸出模塊需要再對(duì)話框中配置Port和number兩個(gè)參數(shù),用于控制各io通道的輸出。而輸入模塊則為0、1、-1,其中0表示輸出電平,1表示輸出高電平,-1表示取反;mask對(duì)話框如下圖所示,其創(chuàng)建過程與前文一致,不再累述。 該s函數(shù)需要傳遞的參數(shù)是兩個(gè)popup下拉菜單格式的數(shù)據(jù),其S函數(shù)編寫過程基本和前文一致,各位童鞋自行對(duì)比二者之間的區(qū)別。數(shù)字輸出的TLC文件需要從輸入模塊讀取相應(yīng)的參數(shù),所以需要再Outputs函數(shù)中通過LibBlockInputSignal函數(shù)來讀取輸入模塊的值,然后對(duì)改值進(jìn)行判斷,從而控制代碼的生成,如下圖,其余部分和前文一致。 PS:本文主要介紹硬件驅(qū)動(dòng)的編寫流程,基本不涉及具體的實(shí)現(xiàn)過程,需要深究的童鞋,可以先看看Matlab的Help文檔,再結(jié)合附件中的文檔進(jìn)行摸索。附件中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 家訪關(guān)懷活動(dòng)方案
- 宿舍學(xué)風(fēng)活動(dòng)方案
- 家長約談活動(dòng)方案
- 寶寶店活動(dòng)策劃方案
- 小兒牙科門診活動(dòng)方案
- 室內(nèi)散步活動(dòng)方案
- 家庭用品開業(yè)活動(dòng)方案
- 審計(jì)系統(tǒng)三八節(jié)活動(dòng)方案
- 小學(xué)滅蚊防病活動(dòng)方案
- 寒假不宅家戶外活動(dòng)方案
- 安全檢查:從新手到專家的進(jìn)階指南
- 代人貸款免責(zé)協(xié)議
- 移相變壓器計(jì)算程序標(biāo)準(zhǔn)版
- 開工“第一課”安全培訓(xùn)課件
- 腦挫裂傷臨床路徑
- 文明乘坐高鐵(課件)-(25)小學(xué)生主題班會(huì)通用版
- 【語文】重慶市沙坪壩區(qū)樹人小學(xué)一年級(jí)下冊(cè)期末復(fù)習(xí)試卷
- 光伏電站遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 科心腦血管事件上報(bào)登記表
- 銀行客戶經(jīng)理工作手冊(cè)
- 大國工匠課件
評(píng)論
0/150
提交評(píng)論