精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

采用CAN總線的ECU在線編程系統的設計方案介紹

電子設計 ? 作者:電子設計 ? 2018-11-01 08:08 ? 次閱讀

隨著IAP技術的出現以及Flash價格的降低,一般的電控單元(ECU)都具有IAP(In Application Programming)功能和較大的Flash空間,為實現ECU在線編程功能提供了必要條件。目前基于IAP技術的在線編程的方案有很多,采用的通信方式和具體實現方法也各不相同。采用RS232總線和YMODEM協議開發的用于智能終端的在線升級系統,但是RS232總線的傳輸速率有限。采用LIN總線實現的適用于汽車ECU的在線升級系統,LIN總線除了傳輸速率有限以外,同時它只是一種輔助總線,并不是所有車身ECU都采用LIN接口。參考文獻[1][4]采用基于CCP(CAN Calibration Protoc01)協議的在線升級系統,兼具CAN總線傳輸速率快和CCP協議可擴展性好的優點。本文采用CAN總線,基于CCP原理自定義協議的在線升級系統,具有傳輸速度快的特點。自定義協議各命令基本沿用CCP協議,但內容做了改動,這樣通過改動協議內容能夠很好地適合特定環境的應用。同時在升級過程中加入升級請求標志位,能夠很好地改進程序下載過程中命令延時等待、應用程序下載失敗以后下次無法連接的問題。

1 在線編程系統設計

在線編程系統硬件主要包含三個部分:帶有下載上位機軟件的PC機、USB-CAN接口卡和安裝有Bootloader程序的ECU.上位機通過USB-CAN接口卡與ECU通信,并進行代碼的升級。軟件主要包含兩個部分:上位機的Bootloader下載程序和下位機的Bootloader程序。

1.1 通信協議與上位機程序設計

1.1.1 通信協議的制定

系統通信協議的以CCP協議原理為基礎,結合實際操作過程的需求來制定。CCP協議提供11個基本命令和17個可選命令,基本命令包括:CONNECT、GET_CCP_VERS lON、EXCHANGE_ID、SET_MTA、DNLOAD、UPLOAD、GET_DAQ_PTR、WRITE_DAQ、START_STOP、DISCONNECT。本協議采用其中CONNECT、DISCONNECT、CLEAR_MEMORY、PROGRAM、SETMTA.命令內容根據實際需要自定義;消息應答信號有連接成功應答、編程準備就緒應答、頁編程完成應答、編程完成應答、編程失敗應答、SECTION擦除就緒應答、SEC-TION擦除完成應答等。本套自定義協議能夠很好地應用在實際下載過程中。

1.1.2 PC端下載程序的組成

PC端的Bootloader下載程序主要功能是實現對目標文件的解析和與下位機軟件通信。下載程序采用VisualC++6.0編寫,主要分成目標文件加載與解析以及Flash編程兩個模塊。

(1)目標文件的生成和解析

系統應用程序文件采用*.HEX格式文件,該文件是記錄文本行的ASCII文本文件,每一行是一條記錄,每條記錄是16進制數組成的機械碼或數據常量。記錄格式::LL ADDR TT[DDD…]CC

其中,冒號是記錄開始;LL表示數據長度,即[DDD…]的字節數;ADDR表示地址信息;TT表示記錄的類型;[DDD…]表示數據內容;CC表示校驗和。

利用Tasking開發環境,能夠生成包含應用程序的*.HEX文件,文件中的記錄類型只有數據記錄、線性擴展地址記錄和文件結束記錄。通過上位機載入目標文件,逐條檢索文件內容將帶有地址信息的數據解析出來,并以CAN數據幀(8字節)的形式存放,每16幀數據組合成一個頁,同時記錄每個數據頁的首地址。

(2)Flash編程模塊

Flash編程模塊實現與下位機的通信,主要包含命令的解析、CAN總線驅動、數據發送和狀態顯示等部分。CAN總線驅動采用廣州周立功單片機發展有限公司的USB-CAN采集卡的驅動程序,加入提供的庫函數,來實現對于CAN總線數據的發送和接收。上位機軟件提供相關命令的按鈕,下載過程中通過按動相應按鈕來實現命令的發送。下載過程中如果接收到連接成功、編程完成或者編程失敗等信號以后,顯示相應狀態。

1.1.3 PC端下載程序的運行流程

PC端程序運行以后,通過上位機界面上的“載入文件”按鈕,將要升級程序HEX文件載入,點“解析按鈕”,程序自動將HEX文件分成包含有效數據長度為128字節的頁,同時將頁首地址保存。根據已經制定好的協議,上位機將這些命令封裝成CAN總線消息發送到下位機。編程過程中,上位機將所需要發送的程序頁總數發送給下位機,然后從第一頁開始發送,每一頁發送完成以后,等待下位機發送頁編程完成信號,完成以后繼續發送下一頁,直到所有程序頁都發送完成,這時如果無錯誤,接收下位機編程完成應答消息,顯示編程完成;否則顯示編程失敗。程序流程圖如圖l所示。

采用CAN總線的ECU在線編程系統的設計方案介紹

圈1 PC端下載程序流程圖

1.2 Bootloader設計

Flash編程的機制主要有兩種,分別是調用Flash擦寫函數法和Flash kernel.Flash kernel法需要在進行軟件升級時將Bootloader程序中Flash擦寫以及相關的初始化程序都下載到單片機RAM中,這對RAM資源的要求較高,對于單片機來說這是有困難的。采用Flash擦寫函數法,只需要在升級程序時調用Flash擦寫函數即可。對于某些單片機,在對Flash進行擦寫時,加在Flash區的電壓高于普通電壓,會引起Flash區的操作不穩定,因此也需要將Flash擦寫函數放在RAM中運行,這樣采用Flash擦寫函數能夠有效的減少RAM區的占用。In-fineon XC2000單片機支持同時對不同頁的讀/寫操作,不會出現Flash擦寫操作不穩定的問題,因此本設計采用Flash擦寫函數法。

1.2.1 Flash空間代碼分布

本設計中ECU采用XC2785A單片機,其片上集成32 KB的PSRAM和832 KB的Flash(0xC00000~oxCCFFFF)用于代碼存儲。Flash陣列由4個塊組成,分別是F0(256 KB,0xC00000~0xC3FFFF)、F1(256 KB,0xC40000~0xC7FFFF)、F2(256 KB,0xC80000~0xCBFFFF)、F3(64 KB,0xCC0000~0xCCFFFF)。每一個Flash塊由若干個大小為4 KB的扇區組成,而每一個扇區可分為32個頁(128字節),可封每個頁單獨進行擦除和編程操作。Flash區段的最開始存放程序的中斷向量表,0xC01000~OxCODFFF區段存放Bootloader代碼,0xC0E000~0xC0EFFF區段中的最開始那個頁存放升級標志,0xCOF000~0xCOFFFF區段為單片機保留區段,0xCl0000~0xCCFFFF段存放應用程序,代碼空間分布如圖2所示。

采用CAN總線的ECU在線編程系統的設計方案介紹

圖2 Flash空間代碼分布示惹圖

1.2.2 Bootloader程序流程

復位中斷向量的出口地址是0xC01000,因此單片機上電啟動或者軟件重啟以后,首先跳轉到STARTUP.C,通過判斷升級標志是否置位來進行跳轉。若置位表示有升級請求,則進行Bootloader的初始化,然后執行主函數,升級完成以后擦除標志位;若無升級請求則跳轉到用戶程序區執行用戶程序。用戶程序更新時,需要同時更新中斷向量,這樣保證用戶程序能夠正常使用中斷功能。

采用的方法是在用戶程序運行時,接受到連接命令,則單片機跳轉到Bootloader程序執行升級流程,但是如果升級過程中出現錯誤,用戶程序升級未完成,則下一次上電系統將無法運行。參考文獻[4]中,采用上電進入Bootloader之前發送握手信號,等待上位機回復,這樣每次上電都要先進行Bootloader的初始化,并且等待這種方式不能很好地保證和上位機連接。本文采用增加升級狀態標志位的方法,用戶程序在運行時,如有升級請求則置狀態標志位,并軟件重啟。重啟以后,單片機先檢測狀態標志位,有升級請求則進入Bootloader進行軟件升級,若升級過程中出現錯誤導致升級未完成的話,升級狀態標志位將不會清除,單片機重啟以后仍然進去Bootloader,直接操作上位機上的編程按鈕即可進行程序升級操作。這種方法能夠有效解決升級過程中出現失敗以及握手等待的問題,下位機軟件流程如圖3所示。

采用CAN總線的ECU在線編程系統的設計方案介紹

圖3 下位機軟件流程圖

1.3 在線編程系統工作流程

系統連接完成以后,通過上位機載入需要更新的應用程序文件,點擊“CONNECT”按鈕,在線編程系統啟動,系統工作過程如圖4所示。上位機界面中顯示連接成功,則可進行下一步操作。點擊擦除按鈕,上位機發送擦除指令,下位機擦除相應Flash區域以后發送給上位機應答信號。上位機給下位機發送編程命令的同時,發送給下位機需要編程的頁總數。下位機在接收到頁編程地址以后,連續接收上位機發送過來的16幀數據(一頁128字節),然后擦除相應區域,并將這一頁數據寫入相應的頁,頁編程完成以后向上位機發送頁編程完成應答,接著接收上位機發送過來的下一頁數據,當所有頁編程完成以后向上位機發送編程完成應答信號。此時斷開連接,ECU將會軟件重啟。若編程過程中有任一頁編程失敗,上位機則顯示編程失敗,斷開連接以后ECU重啟,仍然進入Bootloader程序,然后直接點擊編程即可。

采用CAN總線的ECU在線編程系統的設計方案介紹

圖4 系統工作過程

2 在線編程功能驗證

在線升級系統采用PC機(安裝有上位機軟件),連接廣州周立功單片機發展有限公司的USB-CAN采集卡,ECU的CPU采用Infineon XC2785A單片機,系統連接完成以后進行升級測試。本文設計的在線編程方案測試結果如下:圖5為待更新程序的HEX文件(通過Tasking環境生成),其中有下劃線的位HEX文件記錄中的數據記錄,起始地址為0xCll000;圖6為程序下載到Flash以后的數據,通過Tasking軟件的Debug狀態,來查看Flash地址為0xCll000的數據。通過對比兩幅圖片,發現程序數據正確下載到了相應的Flash區域。在下載過程中,通過錯誤操作制造在線編程失敗現象,然后斷開連接,ECU重啟以后仍然進入Bootloader程序,直接在上位機界面上點擊“Program”,能夠完成在線升級。實驗結果表明,所設計的基于CAN總線的在線升級系統能夠實現代碼在線下載的功能,并且能夠有效改善升級過程中下載失敗的問題。

采用CAN總線的ECU在線編程系統的設計方案介紹

圖5 目標HEX文件2圖6 Flash中的數據

結語

本文提出的基于CAN總線的ECU在線升級系統設計方案,切實可行,并已在Infineon XC2785A單片機上完成實際測試。Infineon XC2000單片機具有相同的內核,因此此方案將對這一系列單片機的Bootloader設計具有指導意義。同時采用升級標志位的方法,對于單片機IAP功能的實現提供一個有益的參考。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6032

    文章

    44514

    瀏覽量

    632979
  • CAN總線
    +關注

    關注

    145

    文章

    1936

    瀏覽量

    130629
  • usb
    usb
    +關注

    關注

    60

    文章

    7892

    瀏覽量

    263979
收藏 人收藏

    評論

    相關推薦

    基于CAN總線的電氣火災報警系統設計方案

    我們處在一個電氣化的時代,隨處可見一座座高樓和各式各樣的用電器,各種電纜縱橫交錯,老化、漏電和違規使用電器都是引發電氣火災的隱患。鑒于此,本文提出了基于CAN總線的電氣火災報警系統設計方案
    發表于 10-22 10:18 ?2784次閱讀
    基于<b class='flag-5'>CAN</b><b class='flag-5'>總線</b>的電氣火災報警<b class='flag-5'>系統</b><b class='flag-5'>設計方案</b>

    一種CAN總線與以太網互連系統設計方案

    本文介紹了一種CAN總線與以太網互連系統設計方案設計方案
    發表于 03-19 11:31 ?4334次閱讀

    基于CAN總線ECU在線編程技術

    本文提出的基于CAN總線ECU在線升級系統設計方案,切實可行,并已在Infineon XC27
    發表于 08-07 13:58 ?2955次閱讀
    基于<b class='flag-5'>CAN</b><b class='flag-5'>總線</b>的<b class='flag-5'>ECU</b><b class='flag-5'>在線</b><b class='flag-5'>編程</b>技術

    什么是ECU在線編程技術?

      隨著IAP技術的出現以及Flash價格的降低,一般的電控單元(ECU)都具有IAP(In Application Programming)功能和較大的Flash空間,為實現ECU在線編程
    發表于 10-29 06:07

    分享一款不錯的LPC2294 CAN總線主節點設計方案

    本文提出一種基于LPC2294微控制器,使用μCLinux作為操作系統CAN主節點軟硬件設計方案。主節點通過擴展SRAM、FLASH提高了系統的性能,
    發表于 05-25 06:59

    基于CAN總線的多ECU通信平臺設計

    介紹CAN 總線及其通信協議J1939, 并設計基于CAN 總線的多ECU 通信平臺的硬件結構;
    發表于 04-15 09:49 ?22次下載

    基于CAN 總線的多ECU 通信平臺設計

    介紹CAN 總線及其通信協議J1939, 并設計基于CAN 總線的多ECU 通信平臺的硬件結構;
    發表于 05-16 14:19 ?28次下載

    基于CAN總線的溫室遠程監控系統的設計

    論文介紹了基于Internet 和CAN 總線的一個遠程數據監控系統設計方案,具體討論了系統
    發表于 08-14 08:40 ?25次下載

    基于CAN總線連接的MEGA8遠距離在線升級方案

    本文介紹了如何利用MEGA8 通過CAN 總線進行的遠距離在線升級的方案。詳細論述了分布式控制系統
    發表于 08-17 09:37 ?34次下載

    基于CAN-bus 總線的海關車場設備網方案

    基于CAN-bus 總線的海關車場設備網方案 CAN-bus 總線介紹
    發表于 03-22 15:44 ?34次下載

    基于P87C591的CAN總線超聲測距系統設計方案

    基于P87C591的CAN總線超聲測距系統設計方案  介紹一種以Philips公司的P87C591作為超聲波傳感器控制核心及
    發表于 03-29 15:08 ?1120次閱讀
    基于P87C591的<b class='flag-5'>CAN</b><b class='flag-5'>總線</b>超聲測距<b class='flag-5'>系統</b><b class='flag-5'>設計方案</b>

    CAN總線冗余的船舶監控系統設計方案

    CAN總線冗余的船舶監控系統設計方案  針對我國造船業的發展現狀和現有系統中存在的一些問題,提出一種基于冗余
    發表于 03-29 15:08 ?1044次閱讀
    <b class='flag-5'>CAN</b><b class='flag-5'>總線</b>冗余的船舶監控<b class='flag-5'>系統</b><b class='flag-5'>設計方案</b>

    基于CAN總線汽車電子控制單元(ECU)的集成電路設計

    基于CAN總線汽車電子控制單元(ECU)的集成電路設計基于CAN總線汽車電子控制單元(ECU)的
    發表于 03-04 14:59 ?28次下載

    CAN總線接口EMC標準電路設計方案

    CAN總線接口EMC標準電路設計方案
    發表于 07-12 10:45 ?209次下載

    CAN總線在汽車ECU中的作用

    CAN作為汽車ECU之間廣泛應用的通信總線,有一些和應用相關的基礎問題。
    的頭像 發表于 08-19 09:38 ?3939次閱讀
    <b class='flag-5'>CAN</b><b class='flag-5'>總線</b>在汽車<b class='flag-5'>ECU</b>中的作用