亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        重型拖拉機控制器的引導(dǎo)加載程序與上位機設(shè)計

        2021-01-07 07:24:06譚文陽李軍偉朱青松
        內(nèi)燃機與動力裝置 2020年6期
        關(guān)鍵詞:單片機程序設(shè)計

        譚文陽,李軍偉,朱青松

        山東理工大學(xué) 交通與車輛工程學(xué)院,山東 淄博 255049

        0 引言

        作為重型拖拉機控制的核心,重型拖拉機控制器控制策略直接決定重型拖拉機的性能和能量利用率,因此控制策略的升級維護技術(shù)成為當前重型拖拉機控制器發(fā)展的關(guān)鍵。由于傳統(tǒng)的OSJTAG仿真工具對軟件進行更新需要拆開控制器殼體,對控制器程序進行直接操作,存在更新過程繁瑣和程序泄露等問題?;诳刂破骶钟蚓W(wǎng)絡(luò)(controller area network, CAN)的引導(dǎo)加載程序技術(shù)對應(yīng)用程序進行更新升級,可以避免拆卸控制器殼體等損壞硬件的操作,通過重型拖拉機自身的CAN網(wǎng)絡(luò)即可實現(xiàn)程序的更新,因此可以避免對程序的直接操作,提高安全性。

        相對文獻[1]中的基于MPC5634M單片機的引導(dǎo)加載程序設(shè)計,本文中充分利用MPC5744P的Flash支持同時讀寫(read-while-write,RWW)的特點,在下載程序時無需將引導(dǎo)加載程序移入隨機存取存儲器(random access memory,RAM),避免因下載程序時掉電而丟失引導(dǎo)加載程序的問題,同時省去對電可擦可編程只讀存儲器(electrically erasable programmable read only memory,EEPROM)進行模擬等繁瑣設(shè)計,直接對Flash進行操作,能夠解決文獻[1]掉電丟失引導(dǎo)加載程序的問題。

        1 重型拖拉機引導(dǎo)加載程序與上位機功能分析

        在嵌入式系統(tǒng)內(nèi)核運行之前,將引導(dǎo)加載程序存放在MPC5744P單片機的LOW Flash塊中,完成對MPC5744P單片機軟硬件的初始化,實現(xiàn)MPC5744P單片機用戶程序的啟動與固件的更新[2-3]。MPC5744P單片機設(shè)計機制可分為2種模式,啟動加載模式與下載模式。由于MPC5744P單片機啟動加載模式需要將引導(dǎo)加載程序加載到RAM中運行,為節(jié)約RAM資源,本文中對引導(dǎo)加載程序的設(shè)計機制采用下載模式。上位機刷寫工具通過CAN總線向MPC5744P單片機發(fā)送更新應(yīng)用程序的控制命令,并實時反饋MPC5744P單片機的更新狀態(tài)。MPC5744P單片機依據(jù)上位機通過CAN總線發(fā)送的命令,將應(yīng)用程序存儲入MPC5744P單片機的256 KiByte Flash中。程序刷寫的基本原理如圖1所示。

        圖1 上位機與BootLoader通信原理圖

        2 重型拖拉機控制器端引導(dǎo)加載程序的開發(fā)

        2.1 FlexCAN通信模塊的設(shè)計

        通過對FlexCAN模塊進行初始化配置與通信協(xié)議的制定,實現(xiàn)重型拖拉機控制器的引導(dǎo)加載程序與上位機的通信[4-5]。本文中MPC5744P控制器的CAN模塊使用的是8 MHz的時鐘,500 kbit/s的波特率。使用CAN0通道的消息緩存區(qū)0(message buffer 0,MB[0])作為發(fā)送數(shù)據(jù)緩存區(qū)給上位機發(fā)送代碼,設(shè)置其發(fā)送MB的身份標識符(identity document,ID)為0x520。使用CAN0通道的MB[4]MB[8]MB[31]作為接收數(shù)據(jù)緩存區(qū)接收上位機的命令與S19文件,分別設(shè)置其MB只接收ID為0x521、0x550、0x555的報文。FlexCAN的初始化配置如圖2所示。

        圖2 CAN模塊初始化配置

        2.2 Flash的內(nèi)存劃分及驅(qū)動設(shè)計

        MPC5744P的2.5 MiB的Flash內(nèi)存劃分為4個16 KiByte的LOW Flash,2個32 KiByte的MID Flash,6個64 KiByte的HIGN Flash以及8個256 KiByte的Flash,作用分別是:存儲引導(dǎo)加載程序、存儲應(yīng)用程序的啟動地址、存儲應(yīng)用程序。

        Flash驅(qū)動主要用于擦除與寫入程序。MPC5744P在擦除Flash內(nèi)存數(shù)據(jù)時,只支持以Flash塊為最小單位擦除;而在寫入數(shù)據(jù)時,一次最多只能寫入4頁(1024 bits)Flash內(nèi)存數(shù)據(jù),超出的數(shù)據(jù)會被截取。本文中的引導(dǎo)加載程序存儲于LOW Flash中。對Flash的擦除與寫入分別通過程序?qū)崿F(xiàn)。

        以MPC5744P的一個Flash塊擦除操作為例,具體流程如圖3所示。對Flash進行擦除操作需要通過C55FMC模塊下的LOCK寄存器解鎖對應(yīng)的Flash;SEL寄存器選擇要進行擦除的Flash;MCR寄存器的ERS位由0變?yōu)?啟動一個擦除序列,由1變?yōu)?結(jié)束一個擦除序列;寄存器MCR的EHV位使能高壓操作進行Flash內(nèi)存的擦除;等待MCR的DONE位置1,則高壓擦除完成。

        對MPC5744P的Flash寫入過程如圖4所示。對Flash進行寫入操作同樣通過LOCK寄存器解鎖對應(yīng)的Flash,MCR寄存器的PGM位由0變?yōu)?,啟動一個寫入序列,由1變?yōu)?結(jié)束一個寫入序列,然后為對應(yīng)地址寫入數(shù)據(jù)。在此需注意MPC5744P的Flash只支持4 byte或8 byte對齊寫入,并且只能使用一種方式,本文中采用4 byte對齊方式寫入數(shù)據(jù);MCR寄存器的EHV位與DONE位與擦除時作用一致。

        圖3 Flash模塊的擦除配置 圖4 Flash模塊的寫入配置

        2.3 中斷向量表的重映射

        由于MPC5744P在單芯片啟動時,會從低到高搜索8個帶有啟動標志位的Flash塊(Boot location 0~7),每個Boot location的第一個地址RCHW若存儲了BOOT_ID(0x5A),則此塊即為啟動分區(qū),同時作為啟動分區(qū)的RCHW偏移4個地址存儲的數(shù)據(jù)即為程序代碼的起始地址。中斷向量表依據(jù)此原理進行重定位。通常工程建立時存儲BOOT_ID的RCHW默認為0x00FA0000,本文中的BootLoader通過修改鏈接文件flash.ld的RCHW為0x00F98000來改變中斷向量表所處的Flash,同時確定整個程序代碼的運行起始地址。程序復(fù)位后運行流程如圖5所示。

        圖5 程序復(fù)位后運行流程

        通過SECTIONS函數(shù)對Flash進行具體劃分中斷向量表位置,部分代碼如下:

        SECTIONS{

        .intc_vector_table: ALIGN(4096)

        {

        KEEP(*(.intc_vector_table))

        } > m_text

        }

        通過以下命令實現(xiàn)啟動時重定位中斷向量表:

        int32_t__attribute__((section(".cpu0_reset_vector")))RCHW2= (uint32_t)ENTRY_POINT。

        通過上述程序?qū)崿F(xiàn)應(yīng)用程序與引導(dǎo)加載程序的中斷向量表在內(nèi)存中地址的設(shè)置。

        2.4 S19文件的解析

        S19文件的正確解析是程序下載成功的關(guān)鍵,S19文件的格式如表1所示。

        表1 S19文件格式

        表1中所述記錄類型S0表示文件名等文件信息,存儲數(shù)據(jù)無需寫入Flash內(nèi)存;記錄類型S1、S2、S3表示存儲數(shù)據(jù)地址分別為2 byte、3 byte、4 byte;記錄類型S4、S5、S6用來標注S19文件中S1、S2、S3記錄類型的數(shù)量,非文件必需,無實際作用;記錄類型S7、S8、S9為S19文件結(jié)束的標志[6-7]。

        MPC5744P是32位微控制器,所以采用的記錄類型為S3。S19文件的解析與驗證(即程序的完整性校驗)過程如圖6所示。

        2.5 引導(dǎo)加載程序復(fù)位后的運行過程

        運行MPC5744P的一般程序時,首先從默認地址0x00FA0000中檢測到BOOT_ID標志位,然后跳轉(zhuǎn)到主函數(shù)開始運行。運行本文中設(shè)計的引導(dǎo)加載程序時,首先從地址0x00F98000中檢測到BOOT_ID標志位,然后跳轉(zhuǎn)到引導(dǎo)加載程序開始運行。整個程序的具體運行過程見圖7。

        圖6 S19文件解析與驗證

        圖7 BootLoader運行流程

        3 重型拖拉機控制器上位機的設(shè)計

        上位機的主要作用是通過某公司USBCAN自帶的二次開發(fā)函數(shù)實現(xiàn)與引導(dǎo)加載程序之間的交互,從而實現(xiàn)程序的更新升級[8-9],因此對上位機的設(shè)計分為上位機界面設(shè)計和與控制器通信協(xié)議制定。

        3.1 上位機界面設(shè)計與CAN接口庫文件

        利用具有直觀可視化界面的Python外部工具PyQt5對上位機界面進行設(shè)計,隨后自動生成代碼,將生成的界面代碼與CAN卡的庫函數(shù)在Python中鏈接來實現(xiàn)上位機界面的功能[10-11]。本文中用到的庫函數(shù)見表2。

        表2 CAN卡的庫函數(shù)

        除表2用到的接口庫函數(shù)外,同時用到接口庫函數(shù)的結(jié)構(gòu)體CAN_OBJ與INIT_CONFIG。CAN_OBJ結(jié)構(gòu)體表示幀的數(shù)據(jù)結(jié)構(gòu),被用來存儲發(fā)送與接收函數(shù)的幀信息;INIT_CONFIG結(jié)構(gòu)體對CAN進行初始化配置。

        3.2 上位機通信協(xié)議

        為提高引導(dǎo)加載程序的安全性,防止被隨意更改,制定自定義通信協(xié)議,通過上位機與MPC5744P單片機的通信,實現(xiàn)上位機控制單片機運行應(yīng)用程序或進行引導(dǎo)加載程序功能的選擇以及擦除Flash數(shù)據(jù)并向Flash寫入數(shù)據(jù)等功能[12-13]。上位機的報文ID分別為0x521、0x550、0x555,控制器發(fā)送報文的ID為0x520。本文中所用的幀類型均為標準格式的數(shù)據(jù)幀,引導(dǎo)加載程序協(xié)議如表3所示。

        ID為0x555的報文控制控制器是否進入更新應(yīng)用程序模式,ID為0x550報文控制是否對控制器Flash進行擦除與寫入操作,ID為0x521的報文向控制器發(fā)送S19文件里應(yīng)用程序的數(shù)據(jù),ID為0x520的報文控制控制器應(yīng)答上位機是否已完成相應(yīng)操作[14-15]。

        表3 BootLoader協(xié)議

        上位機通過ID為0x555的的報文向控制器發(fā)送更新程序的數(shù)據(jù)命令2,控制器接收到上位機發(fā)送的更新程序命令后,通過ID為0x520的報文向上位機返回數(shù)據(jù)2,表示控制器已進入引導(dǎo)加載程序準備更新程序??刂破鬟M入引導(dǎo)加載程序之后,上位機通過ID為0x550的報文向控制器發(fā)送數(shù)據(jù)0xAA,控制器接收到此命令后,對Flash塊進行擦除,等待擦除完成后,控制器通過ID為0x520的報文向上位機發(fā)送數(shù)據(jù)3,表示對Flash塊的擦除操作完成。擦除操作完成后,上位機通過ID為0x550的報文向控制器發(fā)送數(shù)據(jù)0xBB,控制器接收到此命令后,進入等待上位機發(fā)送需寫入的S19文件數(shù)據(jù)狀態(tài)。最后上位機通過ID為0x521的報文向控制器發(fā)送要寫入Flash的數(shù)據(jù),控制器接收到此數(shù)據(jù)后,開始向Flash寫入,當對Flash寫入數(shù)據(jù)完成后,控制器通過ID為0x520的報文向上位機發(fā)送數(shù)據(jù)4,表示對Flash寫入操作完成。

        4 重型拖拉機控制器上位機與引導(dǎo)加載程序的測試

        為驗證設(shè)計的引導(dǎo)加載程序與上位機的在線升級功能,同時為更直觀觀測設(shè)計結(jié)果,通過下載小燈程序進行驗證。

        上位機界面主要分為CAN卡的發(fā)送配置、運行狀態(tài)顯示、程序下載3部分。發(fā)送配置界面通過“波特率”按鈕設(shè)置CAN通信的波特率,通過打開“CAN卡”按鈕對CAN卡進行調(diào)用與初始化配置,通過“復(fù)位CAN卡”按鈕對CAN卡進行復(fù)位,通過“關(guān)閉CAN卡”按鈕斷開CAN卡與上位機的連接。運行狀態(tài)界面顯示CAN通信過程中程序運行的具體狀態(tài),上位機CAN卡初始化界面如圖8所示。程序下載界面分為下載功能界面與CAN接收/發(fā)送數(shù)據(jù)界面。下載功能界面中,“進入app”按鈕表示復(fù)位后MPC5744P單片機進入應(yīng)用程序,“準備更新”按鈕表示復(fù)位后MPC5744P單片機進入引導(dǎo)加載程序,“擦除數(shù)據(jù)”按鈕表示對MPC5744P單片機Flash中的數(shù)據(jù)進行擦除,“開始更新”按鈕表示進入程序刷寫,“加載程序”按鈕表示將S19文件上傳到上位機,“CAN接收/發(fā)送數(shù)據(jù)”界面顯示具體的S19文件,程序更新完成界面如圖9所示。

        圖8 上位機CAN卡初始化 圖9 程序更新完成界面

        圖10 MPC5744P開發(fā)板實測圖

        MPC5744P開發(fā)板實測圖如圖10所示。上位機通過USBCAN卡與MPC5744P單片機的通信對小燈程序下載后,圖中所示小燈皆亮,表示程序下載成功。

        5 結(jié)語

        針對重型拖拉機控制器的引導(dǎo)加載程序以及對應(yīng)的上位機進行了設(shè)計開發(fā)。對涉及引導(dǎo)加載程序的FlexCAN通信模塊、Flash閃存模塊、S19文件解析、中斷向量表重映射進行了配置,同時對上位機界面與上位機的CAN通信進行設(shè)計,通過小燈程序?qū)υO(shè)計開發(fā)的引導(dǎo)加載程序和上位機軟件進行測試驗證。測試結(jié)果表明,所設(shè)計的引導(dǎo)加載程序與上位機能夠滿足對重型拖拉機控制器程序的更新與升級。

        猜你喜歡
        單片機程序設(shè)計
        基于單片機的SPWM控制逆變器的設(shè)計與實現(xiàn)
        電子制作(2019年13期)2020-01-14 03:15:28
        基于單片機的層次漸變暖燈的研究
        電子制作(2019年15期)2019-08-27 01:12:10
        基于單片機的便捷式LCF測量儀
        電子制作(2019年9期)2019-05-30 09:42:02
        試論我國未決羈押程序的立法完善
        瞞天過?!律O(shè)計萌到家
        “程序猿”的生活什么樣
        設(shè)計秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        有種設(shè)計叫而專
        Coco薇(2017年5期)2017-06-05 08:53:16
        英國與歐盟正式啟動“離婚”程序程序
        創(chuàng)衛(wèi)暗訪程序有待改進
        在线看高清中文字幕一区| 亚洲 高清 成人 动漫| 中文字幕第七页| 国产精品欧美视频另类专区| 亚洲国产91高清在线| 无套内谢孕妇毛片免费看| 久久久久亚洲av无码专区首jn | 亚洲精品国偷拍自产在线观看蜜臀| 午夜亚洲国产理论片亚洲2020| 国产亚洲AV片a区二区| 日韩精品人妻视频一区二区三区| 久久黄色视频| 国产精品对白刺激久久久| 欧美激情二区| 中文字幕乱码av在线| 男性av天堂一区二区| 久久亚洲欧美国产精品| 精品香蕉久久久午夜福利| 青春草在线视频精品| 人妻体体内射精一区中文字幕| 国产成人亚洲综合| 女人夜夜春高潮爽a∨片传媒| 黄色大片一区二区中文字幕| 亚州无吗一区二区三区| 亚洲一区二区三区香蕉| 黑人性受xxxx黑人xyx性爽| 中文字幕一区二区三区在线乱码| 日本一区二区三区高清在线视频| 国产高潮刺激叫喊视频| 香蕉视频免费在线| 亚洲精品中文字幕乱码无线| 特黄熟妇丰满人妻无码| 国产美女网站视频| 久久本道久久综合一人| 成人无码av免费网站| 99re热这里只有精品最新| 91精品国产综合久久青草| 亚洲综合偷自成人网第页色| 97久久人人超碰超碰窝窝| 亚洲国产一区二区三区在线视频| 亚洲精品中文字幕不卡|