基于代碼生成的車身網(wǎng)絡(luò)電控系統(tǒng)設(shè)計(jì)
(2)ISR的定位問題。中斷服務(wù)程序的聲明和定義都必須定位于non-banked區(qū)域,通過使用“#pragma CODE_SEG NON_BANKED”實(shí)現(xiàn)。同時(shí),中斷服務(wù)程序末尾需要添加“#pragma CODE_SEG DEFAULT”,否則后面的函數(shù)也會(huì)被定位在non-banked區(qū)域而導(dǎo)致錯(cuò)誤。因此,中斷服務(wù)程序必須被“#pragma CODE_SEG NON_BANKED”和“#pragma CODE_SEG DEFAULT”包圍起來。這也可通過修改代碼生成模板實(shí)現(xiàn)。結(jié)合ISR返回值的宏定義,只需在當(dāng)函數(shù)返回值的前3個(gè)字符是“ISR”時(shí),在函數(shù)前后輸出上述兩條pragma預(yù)編譯指令即可。生成ISR聲明的代碼生成模板的核心部分如下:
仍以上述CAN0模塊的接收中斷為例,最終生成的函數(shù)聲明如下;
3 調(diào)試與驗(yàn)證
本設(shè)計(jì)除了使用USBCAN卡作為數(shù)據(jù)采集節(jié)點(diǎn)以外,為了驗(yàn)證兩種總線協(xié)議的實(shí)現(xiàn)是否符合標(biāo)準(zhǔn),更直觀地查看總線幀中各個(gè)字段的值以及隨時(shí)檢測總線上是否發(fā)生幀錯(cuò)誤等,使用PC示波器PicoScope 5203搭配總線協(xié)議分析軟件WaveBPS捕獲兩種總線信號(hào)并進(jìn)行協(xié)議分析。Pi-coScope的兩個(gè)通道可同時(shí)捕獲CAN總線及LIN總線上的信號(hào),進(jìn)一步方便了網(wǎng)關(guān)節(jié)點(diǎn)的調(diào)試。
圖5為在控制面板節(jié)點(diǎn)(源地址為0x26)打開左轉(zhuǎn)向燈時(shí)發(fā)送給車燈節(jié)點(diǎn)(目標(biāo)地址為0x20)的CAN數(shù)據(jù)幀。其中,標(biāo)記為S的位是根據(jù)位填充規(guī)則自動(dòng)插入的填充位。圖6為車燈節(jié)點(diǎn)收到上述CAN數(shù)據(jù)幀后,根據(jù)網(wǎng)關(guān)路由策略及幀轉(zhuǎn)換規(guī)則,發(fā)送到LIN總線上的數(shù)據(jù)幀。本文引用地址:http://cafeforensic.com/article/197566.htm
4 結(jié)論
本設(shè)計(jì)借助EA的代碼生成功能,通過修改代碼生成模板以滿足車身網(wǎng)絡(luò)電控系統(tǒng)開發(fā)中C語言及編譯器的要求,進(jìn)行了車身網(wǎng)絡(luò)系統(tǒng)的開發(fā)和初步實(shí)驗(yàn)驗(yàn)證。此方法極大地方便了設(shè)計(jì)開發(fā),并可提高系統(tǒng)的可靠性。
評(píng)論