《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于CAN總線的Bootloader設計與實現
基于CAN總線的Bootloader設計與實現
2015年微型機與應用第18期
王 琦1,黃悅鵬1,邢正陽1,蘇駿凱1,倪孟雄2
(1.南京郵電大學 通信與信息工程學院,江蘇 南京 210000; 2.上海奉天電子有限公司,上海 201800)
摘要: 使用BDM工具下載或升級應用程序,不僅麻煩而且穩定性也不高。采用在線更新的方法,設計并實現了一種基于CAN總線的Bootloader。介紹車載網絡通信與診斷服務的實現、Bootloader的設計以及其在車載控制單元的實現,并在此基礎上,提出最小Bootloader的概念,可以有效提高程序的靈活性。實驗結果證明,Bootloader能正確引導加載程序的運行,準確方便地實現應用程序的下載和更新,在軟件開發和測試過程中能夠極大地提高工作效率,而且Bootloader的穩定性也很高。還能將網絡層和UDS診斷服務部分方便地移植到其他芯片上,為后序的軟件開發與測試提供了方便。
Abstract:
Key words :

  摘  要: 使用BDM工具下載或升級應用程序,不僅麻煩而且穩定性也不高。采用在線更新的方法,設計并實現了一種基于CAN總線的Bootloader。介紹車載網絡通信與診斷服務的實現、Bootloader的設計以及其在車載控制單元的實現,并在此基礎上,提出最小Bootloader的概念,可以有效提高程序的靈活性。實驗結果證明,Bootloader能正確引導加載程序的運行,準確方便地實現應用程序的下載和更新,在軟件開發和測試過程中能夠極大地提高工作效率,而且Bootloader的穩定性也很高。還能將網絡層和UDS診斷服務部分方便地移植到其他芯片上,為后序的軟件開發與測試提供了方便。

  關鍵詞引導裝載程序;在線更新;診斷服務;CAN總線

0 引言

  為了避免在更新程序的過程中拆除ECU,通過串行總線、SD卡或USB口以及相應的通信協議,將應用程序更新到單片機中[1]。在更新過程中,系統不免受到外界干擾和軟件故障等影響,因此可靠性成為Bootloader開發工作中首要考慮的因素。同時,Bootloader也存在軟件升級的問題,現行的方案并不完善。為此,本文提出最小Bootloader以保證程序的靈活性,為了應對程序更新出錯的意外狀況,提出Stay-In-Boot的概念,增強程序的穩定性。

1 Bootloader部分

  1.1 Bootloader原理

  Bootloader的主要工作是初始化硬件設備、分配內存映射等,構建良好的軟硬件程序,并決定升級應用程序還是繼續運行原有的應用程序[2]。如果升級應用程序,則擦除原有程序數據并通過CAN網絡把更新的程序下載到Flash中,再拷貝到RAM中運行;如果繼續運行原有的應用程序,則把Flash中的應用程序數據拷貝到RAM里,程序跳轉到地址0x4000(僅針對S12G192而言)處運行。

  1.2 S12G192單片機的內存空間

  S12系列單片機支持兩種尋址方式:局部地址尋址和全局地址尋址。只有在對Flash進行操作時才會有全局地址的概念,對RAM和EEPROM進行操作時使用局部地址就可以了。

  Bootloader應該放在受保護的Flash中,但不是所有Flash都可以設置保護,所以一般放置在0xc000~0xfeff區間內。

2 ISO15765協議[3]

  按協議內容和體系結構實現來進行劃分,ISO15765協議共分為4層,分別是應用層、網絡層、數據鏈路層和物理層。應用層診斷協議設計應遵循ISO14229-1或ISO15765-3,應用層規定了具體診斷服務的服務標識符(SID)及后面所攜帶的參數格式與內容。應用層數據經過網絡層實現數據的傳輸、打包、解包,數據傳輸時以單幀和多幀的方式按ISO15765-2進行傳輸。數據經數據鏈路層時應按ISO 11898-1轉化為有效的CAN數據幀,最后經物理層實現與另一節點的通信。被診斷電子控制單元(Electronic Control Unit,ECU)收到請求報文后,再按協議體系結構進行逐層解析。

3 基于ISO15765的Bootloader設計與實現

001.jpg


  單片機中的Bootloader程序必須設計得盡量小,因為ECU中有限的Flash容量是由應用程序和Bootloader程序共同占用的。本文將Bootloader分為8大部分,如圖1所示。下面詳細介紹框圖內各個組件的設計與實現。

  3.1 CAN Driver的設計與實現

  CAN驅動完成CAN的底層配置,包括CAN初始化,CAN的發送和接收函數。CAN初始化又分為關看門狗、屏蔽所有中斷、初始化PLL和時鐘等[4]。

  3.2 ISO15765協議的實現

  ISO15765協議的實現主要包括udsDiag.c、udsDiag.h、udsNWL.c和udsNWL.h 4個文件的配制。udsDiag.c和udsDiag.h用于提供診斷服務[5],udsNWL.c和udsNWL.h用于提供網絡傳輸服務。udsNWL.c中最重要的是從網絡層發送和接收數據的兩個函數。udsDiag.c對每個服務進行響應。

  3.3 Flash驅動的實現

  在Flash寫入或擦除數據之前,必須驗證操作的合法性[6],在S12G192中通過配置FPROT寄存器來保護Flash不受非法的擦寫。在下載應用程序時把Flash Driver下載到ECU的RAM中,應用程序下載完成后再把RAM中的數據清除,ECU進入正常操作模式。這樣不僅可以保護Bootloader,還能節省Flash內存空間,因為在大多數微控制器平臺中Flash存儲的代碼不能對Flash擦除或編程[7],至少是對與代碼在同一頁的Flash不能這樣操作。

  3.4 安全模式的實現

  安全模式提供安全訪問和下載驗證,本文通過實現ISO15765[3]中的安全訪問服務(服務號為0x27)來提供下載驗證[8],具體流程是上位機向ECU發送requestSeed來申請一個Seed;得到ECU返回Seed后,上位機將Seed進行處理得出結果Key發送給ECU,如果Key正確,則得到訪問ECU的授權。

  3.5 最小Bootloader

  考慮到Bootloader后續升級和同一系列芯片移植的需求,通過BDM或P&E燒寫進芯片的Bootloader僅完成傳送和接收數據的這一基本需求,Flash擦寫、部分診斷服務和加鎖等程序數據通過網絡層傳送到單片機寫進指定的內存空間,這一舉措不僅方便Bootloader實現增量更新,還能提高Bootloader的可移植性。

  3.6 Bootloader主程序

  3.6.1 初始化流程

  單片機復位后,在調用主程序之前,進入Start12.c源文件。執行Init(void)函數,完成的操作有清空RAM空間,把初始化數據從ROM拷貝到RAM等[9]。

  3.6.2 上電啟動流程

  ECU上電或者復位后,程序從0xfffe處開始運行[10],先進行一些基本初始化操作,再根據有無外部編程請求來決定進入Bootloader還是應用程序。但是如果升級過程中出現意外導致升級失敗,則再次上電時可能無法進入Bootloader。為了避免此類情況的發生,提出Stay-In-Boot的概念,也就是在上電復位后即使存在應用程序,也強制單片機進入Bootloader。設置一個wait timer,在wait timer沒有超時的情況下,如果收到一個Stay-In-Boot CAN Message,則ECU停留在Bootloader中;如果wait timer過期了,而且應用程序有效,則進入應用程序。這樣可以有效避免更新程序時出現意外導致無法重新刷新的情況,保證了程序的穩定性。

  3.6.3 主循環流程

  ECU進入Bootloader后,設置全局變量waitTime,每次進入收發中斷將waitTime減1,在主程序的for循環中不斷檢測waitTime的值,如果為零,則跳轉到應用程序啟動地址,否則繼續檢測CAN網絡上有無數據可接收。為了保證CAN網絡上的數據能夠完整接收,本設計將waitTime設置得很大,設置為5 000。

  3.7 測試及結果分析

  用BDM編程工具[11]將實現的Bootloader燒錄到S12G192[12]單片機中,隨后移除BDM,將外部開關設為啟動加載模式,并上電。通過上位機發送編寫完成的“*.s19”文件,通過CAN網絡把數據流發送到單片機中,并運行。多次燒錄均沒有出現數據丟失的情況,能完整地解碼上位機發送的數據流,而且燒錄后也能成功下載應用程序,應用程序能正常工作,也能持續響應PC端上位機的診斷請求。

002.jpg

  Bootloader的性能指標主要在穩定性,另外本文也提出靈活性給開發工作帶來的好處。在板子已燒寫了最小Bootloader的前提下,通過上位機傳送Flash驅動程序和應用程序的s19到單片機(如圖2所示),通過CANoe檢測到應用程序發送的報文[13](如圖3所示),證明最小Bootloader能正確高效地運行,在需要擴展Flash時Bootloader將不需要改變,更改上位機發送的Flash配置文件即可。

  另外,本文采用的是傳輸S-record文件,這有改進之處,通過實驗證明,直接傳輸hex文件比S-record快近一倍,因為Bootloader不再進行文件的解析,解析工作交給PC端上位機。這一改進可有效提高量產效率。

4 結論

  本文設計并實現了基于ISO15765協議的Bootloader,提出使用最小Bootloader來優化程序,增強程序的靈活性;開發過程中增加Stay-In-Boot狀態,防止刷新出錯時出現死循環,提高了程序的穩定性。經測試證明Bootloader能正確引導程序運行,下載數據完整、無誤,沒有出現數據丟失、錯誤等現象,在高負載下也能準確、高效地實現ECU端程序的在線下載和更新。

參考文獻

  [1] 王亞剛.嵌入式Bootloader機制的分析與移植[J].計算機工程,2010,36(06):267-269.

  [2] Cheng Anyu, Yao Yan, Duan Zhihui, et al. ECU loader design of in-vehicle CAN network based on ISO15765[C].International Conference on Information Science and Technology, 2011:1215-1217.

  [3] International Organization for Standardization. ISO 15765-2004 road vehicles-diagnostic on controller area network(CAN)[S]. 2004.

  [4] 張艷,鮑可進.整車控制器Bootloader的設計與實現[J].計算機工程,2011,37(12):233-235.

  [5] 李銳,王晶瑩,姚燕,等.基于ISO15765的車載CAN網絡診斷設計[J].計算機工程,2012,38(4):35-36.

  [6] 李權,鄢萍,賀曉輝.高可靠性的嵌入式軟件現場更新方法[J].計算機應用,2010,30(08):2221-2231.

  [7] 李婉,李宏.單片機IAP升級方法在血液中分析儀中的應用[J].微型機與應用,2014,33(21):16-18.

  [8] 王冬良.基于CAN總線的轉向角傳感器采集電路設計[J].微型機與應用,2014,33(22):77-79.

  [9] 張家田,王金成,嚴正娟,等.基于CAN總線的井下視頻信號采集系統設計[J].電子應用技術,2013,39(12):15-21.

  [10] 何海波.基于XC2287M的工程機械ECU設計[J].電子應用技術,2014,40(12):27-29.

  [11] 羅峰,孫澤昌.汽車CAN總線系統原理、設計與應用[M].北京:電子工業出版社,2011.

  [12] Freescale.MC9S12G family reference manual and data sheet[Z]. 2013.

  [13] International Organization for Standardization. ISO 14229-2006 road vehicles——unified diagnostics services(UDS) specification and requirements(v2)[S]. 2006.


此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产日韩欧美中文在线播放| 亚洲一区二区av电影| 国产精品地址| 欧美日韩中文另类| 欧美日韩国产黄| 欧美精品www在线观看| 久久精品五月| 久久久久久精| 久久久久国产精品www | 久久九九国产精品| 欧美在线视频在线播放完整版免费观看| 亚洲一区二区精品视频| 亚洲一区二区三区在线看| 亚洲香蕉伊综合在人在线视看| 一卡二卡3卡四卡高清精品视频| 亚洲乱码国产乱码精品精| 亚洲片在线观看| 亚洲免费观看高清完整版在线观看熊| 亚洲人午夜精品免费| 亚洲日韩欧美一区二区在线| 亚洲精品欧美在线| 99国产麻豆精品| 亚洲视频在线观看网站| 亚洲一本大道在线| 午夜精品免费在线| 欧美在线|欧美| 久久久久国产精品人| 久久全国免费视频| 欧美二区在线| 欧美三区美女| 国产精品系列在线| 国产揄拍国内精品对白| 在线看一区二区| 亚洲精品视频一区二区三区| av成人免费观看| 性感少妇一区| 亚洲国产精品电影在线观看| 亚洲另类视频| 亚洲免费网址| 快射av在线播放一区| 欧美精品乱码久久久久久按摩| 欧美日韩亚洲一区| 国产麻豆综合| 1000精品久久久久久久久| 亚洲免费大片| 欧美一级视频| 亚洲另类自拍| 欧美制服丝袜| 欧美丰满高潮xxxx喷水动漫| 欧美天天综合网| 国产视频一区免费看| 亚洲高清在线观看一区| 一区二区三区高清在线| 欧美在线资源| 一本不卡影院| 久久久久国色av免费看影院| 欧美激情按摩在线| 国产美女精品| 91久久久久久久久| 亚洲欧美中日韩| 亚洲免费av观看| 久久激情视频| 欧美日韩在线看| 影音先锋中文字幕一区| 中文欧美在线视频| 91久久久国产精品| 欧美一级久久久久久久大片| 欧美a级片网站| 国产乱码精品一区二区三| 一区二区在线观看视频| 亚洲视频电影图片偷拍一区| 亚洲国产老妈| 性色av一区二区三区在线观看| 免费成人在线观看视频| 国产精品呻吟| 亚洲欧洲日韩在线| 久久精品99国产精品| 亚洲欧美高清| 欧美日韩福利视频| 国内精品国语自产拍在线观看| 一区二区91| 亚洲七七久久综合桃花剧情介绍| 午夜精品久久久久久| 欧美精品国产一区| 精品99一区二区三区| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲人妖在线| 久久一区二区三区国产精品| 国产精品久久久久秋霞鲁丝| 亚洲精品一区二区三区四区高清| 欧美在线网址| 午夜在线成人av| 国产精品igao视频网网址不卡日韩| 亚洲国产成人高清精品| 欧美自拍丝袜亚洲| 欧美一级大片在线观看| 欧美性猛交视频| 亚洲美女在线观看| 亚洲欧洲日本专区| 噜噜噜久久亚洲精品国产品小说| 国产精品久久99| 一区二区日韩欧美| 一区二区三区四区五区视频| 欧美激情精品久久久久久| 激情综合色综合久久| 欧美在线播放一区| 欧美一区二区三区久久精品茉莉花 | 国产精品午夜国产小视频| av成人免费观看| 在线亚洲国产精品网站| 欧美女激情福利| 亚洲日本成人网| 亚洲美女中文字幕| 欧美成人精品在线播放| 在线看欧美日韩| 亚洲国产1区| 久久性天堂网| 一区二区三区在线视频免费观看| 欧美在线视频观看| 久久精品国产亚洲一区二区三区 | 国产欧美在线视频| 亚洲一区二区在线免费观看视频| 亚洲午夜小视频| 国产精品久久999| 亚洲一区日本| 欧美一区国产二区| 国产亚洲aⅴaaaaaa毛片| 香蕉尹人综合在线观看| 久久精品亚洲一区| 黄色精品网站| 亚洲精品乱码久久久久久黑人| 欧美成人免费在线| 亚洲人体影院| 亚洲私人影吧| 国产精品久久久久久久午夜片| 亚洲一区自拍| 久久久久欧美| 精品999在线播放| 日韩午夜精品| 国产精品九九久久久久久久| 午夜激情久久久| 久久夜精品va视频免费观看| ●精品国产综合乱码久久久久| 亚洲卡通欧美制服中文| 欧美午夜精品久久久久久超碰| 亚洲无亚洲人成网站77777| 欧美在线精品免播放器视频| 国产色综合久久| 91久久久亚洲精品| 欧美日韩精品免费看| 亚洲一区不卡| 久久午夜精品| 亚洲精品精选| 欧美一级二区| 亚洲福利国产精品| 亚洲一区二区三区高清| 国产亚洲精品久久飘花| 最新国产乱人伦偷精品免费网站| 欧美久久久久久久久| 亚洲一区视频在线观看视频| 久久久一二三| 亚洲精品一区在线| 欧美呦呦网站| 91久久中文字幕| 午夜久久久久久| 在线观看欧美一区| 亚洲视频欧洲视频| 国产一区二区久久| 一区二区三区精品久久久| 国产欧美日韩精品丝袜高跟鞋| 亚洲激情在线| 国产精品扒开腿爽爽爽视频| 久久精品国产77777蜜臀| 欧美日韩一区二区在线| 久久av红桃一区二区小说| 欧美精品一区二区三区一线天视频| 亚洲一区二区影院| 欧美成人一区二区三区| 亚洲综合社区| 欧美日本精品| 亚洲国产99精品国自产| 国产精品激情电影| 亚洲精品乱码久久久久久蜜桃麻豆 | 亚洲视频在线一区观看| 久久综合伊人77777麻豆| 在线中文字幕不卡| 嫩模写真一区二区三区三州| 亚洲永久免费av| 欧美激情综合亚洲一二区| 午夜视频在线观看一区二区| 欧美女同在线视频| 久久国产精品一区二区| 国产精品进线69影院| 亚洲美女毛片| 韩国福利一区| 香蕉久久精品日日躁夜夜躁| 亚洲精品久久久久久久久久久| 久久精品国产久精国产思思| 亚洲视频精品在线| 欧美日韩国语|