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

        ?

        基于S32K148 的車輛網(wǎng)關(guān)CAN Bootloader開發(fā)與實(shí)現(xiàn)

        2021-12-30 08:46:00丁元章蔡定江
        汽車電器 2021年12期
        關(guān)鍵詞:字節(jié)網(wǎng)關(guān)上位

        袁 鋒,丁元章,張 偉,蔡定江

        (1.長三角新能源汽車研究院有限公司,江蘇 鹽城 224000;2.長三角電驅(qū)動科技鹽城有限公司,江蘇 鹽城 224000)

        車輛網(wǎng)關(guān)(GateWay,GW)為純電動乘用車的重要零部件,在車輛數(shù)據(jù)協(xié)議實(shí)現(xiàn)與數(shù)據(jù)傳輸上起著關(guān)鍵作用。如果控制數(shù)據(jù)協(xié)議升級,車輛網(wǎng)關(guān)則需要相應(yīng)的程序更新,傳統(tǒng)工具下載升級效率差,所以Bootloader的開發(fā)就顯得尤為重要[1-2]。Bootloader是固化在微處理器內(nèi)部Flash特定位置的一段程序代碼。每次處理器啟動都會運(yùn)行Bootloader,它會檢查是否有來自CAN總線的程序下載請求,如果有則進(jìn)入Bootloader下載模式,進(jìn)行程序下載,并校驗(yàn)其完整性,最終完成應(yīng)用程序的更新;如果沒有來自總線的程序下載請求,則跳轉(zhuǎn)至原有應(yīng)用程序執(zhí)行[3-5]。

        本文采用NXP S32DS IDE集成開發(fā)環(huán)境S32 Design Studio for S32 Platform 3.4完成基于Cortex-M4F內(nèi)核S32K148處理器CAN Bootloader軟件開發(fā),程序調(diào)試器采用SUGGER JLlink V6.9。上位機(jī)開發(fā)采用Visual Studio 2010實(shí)現(xiàn),通信CAN控制器采用USBCAN-E-mini實(shí)現(xiàn)。

        1 Bootloader系統(tǒng)設(shè)計(jì)

        1.1 Bootloader原理

        Bootloader是車輛網(wǎng)關(guān)啟動時完成加載引導(dǎo)程序執(zhí)行的代碼。Bootloader一般有兩種工作模式:①啟動加載模式,該模式下Bootloader作用是將之前存儲在存儲器中的應(yīng)用程序加載到RAM中去執(zhí)行;②下載模式,本文研究的重點(diǎn),主要功能是下載應(yīng)用程序,將程序先存在RAM中,再刷寫至Flash等固態(tài)存儲器中完成程序的下載。本文Bootloader系統(tǒng)采用的是基于上位機(jī)(PC作為上位機(jī))、CAN控制器(USBCAN-E)和基于S32K148處理器的車輛網(wǎng)關(guān)(下位機(jī))的結(jié)構(gòu),上位機(jī)發(fā)送的數(shù)據(jù)經(jīng)CAN控制器傳送至車輛網(wǎng)關(guān)模塊。同樣,當(dāng)網(wǎng)關(guān)模塊接收到應(yīng)答后,會通過CAN控制器將數(shù)據(jù)發(fā)送至上位機(jī),其結(jié)構(gòu)如圖1所示。

        程序進(jìn)入Bootloader模式一般有以下兩種方式。

        1)通過判斷處理器某個引腳電平的高低,識別電平高低狀態(tài),軟件判斷執(zhí)行應(yīng)用程序或進(jìn)入Bootloader下載模式。

        2)通過設(shè)置標(biāo)志位判斷,需要PC上位機(jī)與CAN控制器總線數(shù)據(jù)配合,識別特定的CAN數(shù)據(jù)格式、標(biāo)識符和字節(jié)數(shù)據(jù),軟件判斷執(zhí)行應(yīng)用程序或進(jìn)入Bootloader下載模式。

        本文采用方式2實(shí)現(xiàn),該方式雖然在軟件處理上稍顯復(fù)雜,需要PC上位機(jī)與下位機(jī)之間的數(shù)據(jù)和時序的配合。但是相較于方式1,不需要引出單獨(dú)的引腳,可以減少使用一個I/O口,在整車應(yīng)用上具有一定的便利性,且節(jié)省了I/O資源。

        圖1 Bootloader結(jié)構(gòu)圖

        1.2 存儲器的分配

        S32K148微處理器包含各種存儲器和內(nèi)存映射外設(shè),它們位于一個32位連續(xù)地址空間中,地址空間統(tǒng)一編址。該芯片具有3×512KB P-Flash空間,分配地址段為0x00000000~0x0017FFFF。Bootloader在此空間實(shí)現(xiàn),分配地址0x00000000~0x00007FFF為Bootloader代碼存儲空間,大小為32KB,其余的P-Flash空間為應(yīng)用程序使用。

        2 Bootloader軟件設(shè)計(jì)

        2.1 CAN模塊配置

        S32K148處理器具有3個獨(dú)立的CAN模塊,可用來實(shí)現(xiàn)Bootloader的數(shù)據(jù)傳輸和狀態(tài)控制功能。其具有3路FlexCAN模塊,均可配置為CAN或CAN-FD工作模式。因目前車輛CAN總線大多還處于CAN工作模式,本文基于CAN模式采用CAN0 來實(shí)現(xiàn)。主要配置如下。

        1)配置時鐘寄存器為外部16MHz晶振時鐘,并開啟時鐘門。

        2)配置為CAN模式。

        3)設(shè)置數(shù)據(jù)幀格式為標(biāo)準(zhǔn)幀,波特率為500kb/s。

        4)配置采用中斷方式。

        2.2 Flash模塊配置

        Flash模塊的配置是Bootloader實(shí)現(xiàn)的重要一環(huán),需要對相關(guān)寄存器進(jìn)行配置。對Flash模塊編程主要涉及Flash初始化、Flash擦除與編程寫入操作,本文選用的S32K148微控制器Flash存儲空間為0x00000000~0x00007FFF,主要配置如下。

        1)配置Flash時鐘源為內(nèi)部SPLLDIV2時鐘,頻率為20MHz,并開啟時鐘門。

        2)P-Flash的擦除方式為扇區(qū)擦除,芯片采用的是交叉訪問方式實(shí)現(xiàn),最小擦除扇區(qū)為4KB,需在Flash驅(qū)動中進(jìn)行相應(yīng)設(shè)置,執(zhí)行擦除指令時,需配置FCCOB0為0x09,擦除完成之后,方可對Flash執(zhí)行寫命令。

        3)P-Flash在FTFC->FCCOB寄存器中配置相應(yīng)命令,實(shí)現(xiàn)Flash的編程寫入。FCCOB0為命令寄存器,可用來配置編程、擦除等命令。通過配置FCCOB0=0x07實(shí)現(xiàn)編程功能。一次編程的字節(jié)數(shù)為8個字節(jié)。編程地址和數(shù)據(jù)存儲在FCCOB1~FCCOB11寄存器中。

        2.3 應(yīng)用程序配置

        在前文中提到Bootloader是固化在整車網(wǎng)關(guān)等ECU微控制器的內(nèi)部Flash中某特定位置的一段程序代碼,應(yīng)用程序同樣也是存儲在內(nèi)部Flash中,兩者共同占據(jù)Flash存儲空間。所以二者的存儲地址要正確分配,避免重疊。

        在本文中,Bootloader存放在0x00000000~0x00007FFF地址空間中。在LinkFiles文件中修改如下。

        2.4 S19文件的生成

        S19文件是NXP微控制器的程序刷寫文件,一般由開發(fā)環(huán)境自動輸出,具有特定的格式[6-7]。在不同的芯片和編譯環(huán)境中,其生成的文件不同。如MC9S12系列的編譯器Code-Warrior 5.2中,其生成文件的后綴為.s19,在MPC56系列編譯器CodeWarrior 2.10中,其生成的文件后綴為.mot,本文使用的S32 Design Studio生成的S-format 格式的文件后綴為.srec。雖然后綴名不同,其均具有相同的數(shù)據(jù)格式,簡述如下。

        取生成的S19文件的中幾行記錄加以說明。

        1)“S0”它是S文件的第一行數(shù)據(jù),主要表示S文件的路徑以及文件名信息。

        2)“S1”表示該行是一條S1類型的數(shù)據(jù),數(shù)據(jù)13表示該行記錄有0x13個字節(jié)(包括2字節(jié)地址、16字節(jié)的數(shù)據(jù)、1字節(jié)校驗(yàn))。

        3)“8000”表示該行記錄的地址信息。

        4)“00F00120118400007984000079840000”表示該行S1類型數(shù)據(jù)的數(shù)據(jù)信息。

        5)“CC”是該行數(shù)據(jù)的最后一個字節(jié),表示該行記錄的校驗(yàn)值。

        本文采用S32 Design Studio進(jìn)行開發(fā),下文就在該環(huán)境下生成S19文件進(jìn)行說明和討論。S32 Design Studio可以經(jīng)過簡單的配置選擇,即可以生成S-format輸出文件。前文表述,S-format中的程序信息是由S1、S2或S3等行記錄組成。S1文件代表行記錄中2字節(jié)的地址域,S2文件代表行記錄中3字節(jié)的地址域,S3文件代表行記錄中4字節(jié)的地址域。通過實(shí)踐發(fā)現(xiàn),在默認(rèn)情況下,S32 Design Studio根據(jù)程序地址空間以及代碼規(guī)模自動選擇生成S1、S2或S3格式行記錄。這樣對我們在Bootloader開發(fā)中,進(jìn)行上位機(jī)開發(fā)中帶來了不便。

        為解決上述問題,在開發(fā)中,根據(jù)芯片的地址寬度為32位的特點(diǎn),實(shí)現(xiàn)在將S19代碼生成或轉(zhuǎn)換為S3格式。實(shí)現(xiàn)方式有以下兩種。

        1)在S32 Design Studio中設(shè)置,強(qiáng)制生成S3格式行記錄。

        2)在S32 Design Studio中保持默認(rèn),通過上位機(jī)實(shí)現(xiàn)S1、S2向S3格式的轉(zhuǎn)換。

        本文采用方式2,在上位機(jī)中軟件編程實(shí)現(xiàn)格式的轉(zhuǎn)換,便于工具的一致性和通用性。

        示例如圖2與圖3所示。

        圖2 生成S19文件

        圖3 S3格式上位機(jī)轉(zhuǎn)換

        3 Bootloader的軟件流程(圖4)

        系統(tǒng)啟動后,初始化系統(tǒng)時鐘、Flash模塊、CAN模塊和控制變量。初始化完成后,進(jìn)入主程序運(yùn)行,定時接收Bootloader連接數(shù)據(jù)幀。當(dāng)接收到特定的數(shù)據(jù)幀并連接成功后,進(jìn)入Bootloader下載模式,執(zhí)行應(yīng)用程序刷寫循環(huán)。刷寫完成后,跳轉(zhuǎn)到應(yīng)用程序起始地址執(zhí)行。本文中的應(yīng)用程序初始地址位0x00008000。

        整個Bootloader流程如圖4所示。

        圖4 Bootloader流程圖

        下面給出本文上位機(jī)與基于S32K148處理器的下位機(jī)具體的通信過程,通過CAN通信口將S19記錄文件寫入網(wǎng)關(guān)ECU中。

        1)上位機(jī)端開啟,加載并轉(zhuǎn)換記錄文件,點(diǎn)擊啟動連接,持續(xù)發(fā)送報(bào)文ID=0x64,data0=0xFF至下位機(jī)。下位機(jī)上電初始化,初始化完成后。進(jìn)入計(jì)時循環(huán),并中斷接收上位機(jī)報(bào)文,與上位機(jī)建立通信連接。若連接成功,回復(fù)ID=0xC8,data0=0x01至上位機(jī),否則跳轉(zhuǎn)到應(yīng)用程序起始地址執(zhí)行。

        2)連接成功,下位機(jī)執(zhí)行擦除指令,擦除Bootloader所在地址之外的地址空間。

        3)擦除完成,下位機(jī)發(fā)送當(dāng)前狀態(tài)ID=0xC8,data0=0xC1至上位機(jī),上位機(jī)開始逐行讀取S19文件行記錄,并發(fā)送至下位機(jī),一行發(fā)送完成,上位機(jī)發(fā)送ID=0x64,data=0xFE。

        4)下位機(jī)接收到一行完成標(biāo)識,對接收到的數(shù)據(jù)進(jìn)行校驗(yàn)。

        5)數(shù)據(jù)校驗(yàn)成功后,執(zhí)行Flash寫入操作,將S19文件行記錄中的數(shù)據(jù)寫入地址。行寫入完成,ID=0xC8,data=0xC3至上位機(jī),表示一行數(shù)據(jù)接收并寫入完成。

        6)循環(huán)執(zhí)行行記錄接收、校驗(yàn)和行編程。

        7)上位機(jī)發(fā)送ID=0x64,data=0xFD,表示整個S19文件發(fā)送完成。

        刷寫過程如圖5所示。

        圖5 刷寫過程示例圖

        4 結(jié)論

        本文介紹了基于S32K系列微控制器S32K148,采用CAN總線技術(shù),通過NXP S32DS IDE工具進(jìn)行Bootloader相關(guān)的開發(fā)與實(shí)現(xiàn)。系統(tǒng)通過識別特定的CAN數(shù)據(jù)格式、標(biāo)識符和數(shù)據(jù)字符選擇進(jìn)入下載模式或者執(zhí)行應(yīng)用程序[8]。Bootloader與上位機(jī)通過固定ID的CAN幀進(jìn)行交互反饋,可以成功地完成S19文件的下載并將其刷至目標(biāo)Flash模塊中,便于系統(tǒng)升級。此外,本文了基于S32K148芯片的開發(fā)過程對于其它基于S32K系列Bootloader的開發(fā)也有一定的借鑒作用。當(dāng)然本文也存在著需要進(jìn)一步改進(jìn)的地方,如采用UDS 14229協(xié)議傳輸S19文件和采用基于CAN-FD的Bootloader開發(fā),這是后續(xù)開發(fā)的方向。

        猜你喜歡
        字節(jié)網(wǎng)關(guān)上位
        No.8 字節(jié)跳動將推出獨(dú)立出口電商APP
        基于改進(jìn)RPS技術(shù)的IPSEC VPN網(wǎng)關(guān)設(shè)計(jì)
        No.10 “字節(jié)跳動手機(jī)”要來了?
        特斯拉 風(fēng)云之老阿姨上位
        車迷(2018年12期)2018-07-26 00:42:22
        簡談MC7字節(jié)碼
        “三扶”齊上位 決戰(zhàn)必打贏
        基于ZigBee和VC上位機(jī)的教室智能監(jiān)測管理系統(tǒng)
        LTE Small Cell網(wǎng)關(guān)及虛擬網(wǎng)關(guān)技術(shù)研究
        移動通信(2015年18期)2015-08-24 07:45:08
        以新思路促推現(xiàn)代農(nóng)業(yè)上位
        應(yīng)對氣候變化需要打通“網(wǎng)關(guān)”
        太陽能(2015年7期)2015-04-12 06:49:50
        国产精品无码不卡在线播放| 色噜噜狠狠狠综合曰曰曰| 国产又色又爽无遮挡免费| 日本理论片一区二区三区| 白白色发布视频在线播放| 久久精品国产99久久久| 欧美国产一区二区三区激情无套| 无码精品色午夜| 在线观看播放免费视频| 狠狠色噜噜狠狠狠8888米奇| 国产午夜福利在线播放| 99久久超碰中文字幕伊人| 国成成人av一区二区三区| 久久99精品久久久久婷婷| 洗澡被公强奷30分钟视频| 在线观看一区二区女同| 在线观看二区视频网站二区 | 曰本极品少妇videossexhd| 欧美日韩高清一本大道免费 | 手机在线亚洲精品网站| 国产精品无码成人午夜电影| 中文字幕无码日韩欧毛| 国产精品人成在线观看不卡| 成人免费无码大片a毛片抽搐色欲| 国产女女做受ⅹxx高潮| 欧美成人a视频免费专区| 女同一区二区三区在线观看| 无码人妻少妇久久中文字幕蜜桃| 国产一级农村无码| 亚洲最黄视频一区二区| 熟妇高潮一区二区三区在线观看| 人妻丰满熟妇av无码片| 中文字幕亚洲人妻系列| 日本熟妇中出高潮视频| 激情综合丁香五月| 国产自产精品露脸刺激91在线| 久久综合久中文字幕青草| 亚洲国产精品久久艾草| 久久久久高潮综合影院| 朝鲜女子内射杂交bbw| 美女极度色诱视频国产免费 |