《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于自編程功能的MCU Bootloader設計
基于自編程功能的MCU Bootloader設計
電子設計工程
陳 曦 鄭貴林
摘要: 基于自編程功能的MCUBootloader設計,Bootloader是微處理器上電時運行的第一段代碼,它可以通過通信接口實現對微處理器內部應用程序的更新升級,為網絡化嵌入式產品的應用程序升級帶來極大的便利。由于目前沒有統一嵌入式系統的Bootloader?;贜EC78K0系列單片機自編程原理,設計出一個適用于78K0/Fx2系列單片機的Bootloader,并能夠通過單片機串口在線升級應用程序。
Abstract:
Key words :

     Bootloader" title="Bootloader">Bootloader是在單片機上電啟動時執行的一小段程序。也稱作固件,通過這段程序,可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便為最終調用應用程序準備好正確的環境。
    Boot代碼由MCU啟動時執行的指令組成。這里的loader指向MCU的Flash中寫入新的應用程序。因此,Bootloader是依賴于特定的硬件而實現的,因此,在眾多嵌入式產品中目前還不可能實現通用Bootloader。
    Bootloader的最大優點是:在不需要外部編程器的情況下,對嵌入式產品的應用代碼進行更新升級。它使得通過局域網或者Intemet遠程更新程序成為可能。例如,如果有5 000個基于MCU的電能表應用程序需要更新,電能表制造商的技術人員就可以避免從事對每一個電能表重新編程的巨大工作量,通過使用Bootloader的功能,由控制中心通過電能表抄表系統網絡,遠程對5 000個電表重新編程??梢?,Bootloader功能對于嵌入式系統的廣泛應用具有十分重要的意義。

1 78K0" title="78K0">78K0/Fx2系列單片機簡介
   
78K0/Fx2系列是帶CAN控制器的8位單片機,該系列單片機廣泛應用于汽車電子,智能儀表等領域。其內置POC(可編程上電清零電路)/LVI(可編程低電壓指示器),單電壓自編程" title="自編程">自編程閃存,引導交換功能(閃存安全保護),具有低功耗、寬電壓范圍、超高抗干擾等性能。
    78K0系列單片機支持自編程(Self-programming)。所謂自編程,是指用Flash存儲器中的駐留的軟件或程序對Flash存儲器進行擦除/編程的方法。通過單片機的自編程功能,可以設計Bootloader程序,通過串口等通信接口實現對產品重新編程、在線升級的功能。
    以μPD78F0881為例。μPD78F0881為78KO/Fx2系列中的一款44管腳單片機,內置32 KB Flash ROM,2 KB RAM,自帶2個串行通信接口。其內部Flash結構如圖1所示。為了方便實現擦除和編程,人為地將整個Flash分成若干個block,每個block大小為1 KB。block為自編程庫函數中空白檢測、擦除、校驗的最小單位。blockO從地址0000H開始,程序都從0000H開始執行。block0~block3共4 KB存儲空間為Bootloader程序存儲區域。block4~block31為應用程序存儲區域。


    為了防止Bootloader自身的升級失敗,設計了引導交換功能。該功能定義2個簇,即Boot cluster0和Boot cluster1。Boot clustee0為block0~block3的4 KB存儲空間,Boot cluster1為block4~block7的4 KB存儲空間。因此,實際運用過程中,一般把應用程序的開始定義在2000H,也就是從block8開始。
    Flash地址為0000H~FFFFH。7FFFFH~FFFFH存儲空間為保留區域以及特殊功能寄存器區域等,用戶無法對其進行編程。

2 自編程
2.1 自編程環境
2.1.1 硬件環境

    FLMDO引腳是78KO/Fx2系列單片機為Flash編程模式設置的,用于控制MCU進入編程模式。在通常操作情況下,FLMDO引腳下拉到地。要進入自編程模式,必須使FLMDO引腳置成高電平。因此,通過一個普通I/O接口控制FLMD0引腳的電平。如圖2所示。


2.1.2 軟件環境
   
1)使用通用寄存器bank3,自編程庫函數,需要調用通用寄存器bank3。因此,在自編程時,不能對通用寄存器bank3操作。
    2)使用100 B RAM(入口RAM)作為隱藏ROM中函數的工作區,入口RAM,是Flash存儲器自編程樣例庫所使用的RAM區域。用戶程序需要保留著塊區域,當調用庫時,需要指定這片區域的起始地址。入口RAM地址可以指定在FB00h~FE20h之間。
    3)4~256 B RAM作為數據緩沖區,必須是FE20H~FE83H以外的內部高速RAM區域。
    4)最大39 B RAM作為隱藏ROM函數的堆棧。
    5)隱藏ROM中的函數被0000H~7FFFH中的應用程序調用。
2.2 自編程流程
   
自編程功能利用自編程軟件庫完成用戶程序對Flash內容的重新編程。如果在自編程的過程中有中斷發生,那么自編程將暫停來響應中斷。中斷結束,自編程模式恢復后,自編程過程將繼續進行。采用匯編語言編寫78K0/Fx2自編程軟件庫,如表1所示。


    自編程操作流程如圖3所示,當單片機收到自編程執行信號時,開始進入自編程模式。將FLMDO引腳設置成高電平,初始化入口RAM,為自編程庫函數開辟空間。當確認FLMD0為自編程狀態時,開始檢查需要編程區域是否為空白區域。當被編程區域不是空白區域時,先將其擦除,然后在此區域進行編程。編程結束后進行校驗。若校驗無誤,則將FLMDO引腳設置成低電平,退出自編程模式。



3 引導交換(boot swap)
   
產品程序的升級包括應用程序的升級和引導程序(Bootloader自身)的升級。為了防止引導程序在升級的過程中發生錯誤,從而導致MCU無法啟動,設計了引導交換功能。以圖4說明引導交換的實現過程。


    1)舊的Boot程序首先將新的Boot程序編程到交換引導簇1(Boot cluster 1),然后設置啟動交換標志位,并強迫看門狗復位。
    2)復位啟動后,MCU看到交換標志位,便從交換引導簇1處開始啟動。交換引導簇1處的新Boot程序將檢查交換標志位。如果交換標志位被置1,則新的Boot程序將擦除交換引導簇0(Boot cluster 0)區域,并將自身復制到交換引導簇O,然后將交換標志位清零,強迫看門狗復位。
    3)復位啟動后,MCU看到交換標志位被清零。又從交換引導簇0處開始執行。這樣就完成了boot程序自身的升級。即使在升級過程中遇到斷電等異常情況,在重新上電后也能重新完成Boot程序升級。有效地防止在升級過程中出現斷電等等異常情況而導致升級失敗,MCU無法啟動的問題,使Boot程序的升級變得安全可靠。

4 Bootloadler設計
4.1 簡單的Bootloader
   
一個簡單的Bootload包括5個元素。
    1)啟動 Bootloader的信號  Bootloader程序是在執行應用程序之前所執行的一小段程序,當Bootloader程序把控制權轉交給應用程序后,在MCU復位前,Bootloader程序將不再執行。因此,需要產生一個信號觸發MCU開始Bootloader程序。該信號可以是中斷,也可以通過串口傳送的一條指令,或者是別的程序觸發的信號。
    2)執行 Bootloader的信號  單片機程序啟動時,MCU是裝載新的應用程序還是執行已經存在的程序取決于外部信號。該信號可以是上電時的一個端口信號,用來控制MCU裝載新程序還是執行舊程序,也可以是從串口接收到的指令等。
    3)將新的代碼傳送給MCU  通過RS485、I2C、CAN或者USB傳送新的應用程序數據。因為要傳送的代碼一般會超過MCU的RAM容量,因此需要一些控制數據流量的措施。一般使用XON/XOFF軟件握手協議,傳送代碼的格式一般選擇Intel hex格式。
    4)Flash新代碼的自動編程  每次MCU接收到一批新的數據,就要將其編程到正確的Flash地址。如果該地址非空白,MCU在編程前必須先擦除。一般在編程中或者編程后還需要檢查存儲器的內容。
    5)將控制權轉移給有效的應用程序  在接收和編程了新的代碼后,Bootloader寫一個校驗和或者其他唯一字節序列到一個固定的存儲單元。Bootloader檢測該值,如果該值存在,Bootloader就將控制權傳給應用程序。
4.2 Intelhex格式
   
在線升級的程序代碼采用編譯器輸出的Intel hex格式文件。Intel hex文件常用來保存單片機或其他微處理器的程序代碼。它保存物理程序存儲區中的目標代碼映象。一般的編程器都支持這種格式。Intel hex文件記錄中的數字都是十六進制格式。在InteI hex文件中,每一行包含一個HEX記錄。Intel hex文件通常用于傳輸將被存于Flash或者EEPROM中的程序和數據。Intel hex由任意數量的十六進制記錄組成。每個記錄包含5個域,它們按照圖5所示格式排列。


    每一個部分至少由2個十六進制編碼字符組成。它們構成1個字節。每一個部分的意義如下所述:
    1)每個Intel hex記錄都由冒號開頭,自編程的過程中以此判斷一個Intel hex記錄的開始。
    2)數據長度代表當前記錄中數據字節的數量。
    3)地址代表當前記錄中數據在存儲區域中的起始地址。
    4)HEX記錄類型有如下4種:00-數據記錄;01-文件結束記錄;02-擴展段地址記錄;03-轉移地址記錄。NEC編譯器輸出的Intel hex文件中。只包含數據類型00和01。其中O1作為自編程過程中數據結束的判定標志。
    5)數據域分用于存儲需要寫入Flash中的內容,一個記錄可以有許多數據字節。記錄中的數據字節數量必須與數據長度中的值相符。
    6)校驗和是取記錄中從數據長度到數據域最后一個字節的所有字節總和的2的補碼。
    根據以上說明,必須在程序中對接收到的Inter hex文件進行解碼,獲取數據以及數據地址,并對收到的數據進行校驗,然后將接收正確的數據編程到Flash相應的地址上。
4.3 Bootloader設計思路
   
單片機收到啟動信號后,重新啟動程序。啟動的時候首先執行Boot代碼,Boot代碼檢查是否收到執行升級信號。如果需要升級程序,則通過串口或者其他通信接口接收新的應用程序,loader程序向單片機Flash中寫入新的應用程序代碼。最后通過檢查校驗位檢測程序是否有效。如果有效,則Bootloader將CPUMCU控制權交給應用程序。整個升級過程完成。Bootloader執行過程如圖6所示。


    需要注意的是Bootloader自身的更新和應用程序的更新還需區別處理。通過辨別接收到數據的編程地址來判斷是Bootloader更新還是應用程序更新。若編程地址從0000H開始,則為Bootloader更新。Bootloader更新則需要執行引導交換(boot swap)功能;若為應用程序更新,自編程結束后,直接將CPU交給應用程序。

5 結束語
     
本文探討了78KO/FC2系列μPD78F0881單片機的自編程功能以及Bootloader的設計方法。具體描述了通過單片機串口對相應的應用程序通過Bootloader進行升級。此版本的Bootloader使用晶振20 MHz,通過串口Uart60,設置波特率為115 200,在μPD78F0881單片機上成功實現了用戶應用程序的升級更新。在接下來的工作中,Bootloader的設計應當面向更多的通信接口。例如,通過CAN總線接口升級,通過USB接口升級等等。Bootloader技術的開發和廣泛應用,必將成為嵌入式產品開發的重要部分,為網絡化產品的應用和開發,特別是后期維護、升級帶來極大的便利。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产精品女主播一区二区三区| 欧美日韩日日夜夜| 久久久久久香蕉网| 欧美一区二区免费视频| 欧美日韩高清在线一区| 欧美精品三级| 一区二区视频欧美| 国产欧美日韩在线视频| 久久国产精品久久久| 欧美性一区二区| 久久亚裔精品欧美| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久精品亚洲乱码伦伦中文| 国产精品豆花视频| 在线观看亚洲精品视频| 亚洲一区二区三区影院| 91久久夜色精品国产九色| 亚洲欧美成人一区二区三区| 蜜臀91精品一区二区三区| 久久国产欧美日韩精品| 国产麻豆9l精品三级站| 国产精品综合av一区二区国产馆| 狠狠色伊人亚洲综合成人| 最新日韩在线| 国产精品国内视频| 午夜视频久久久| 亚洲欧洲日产国产网站| 欧美日韩激情小视频| 免费在线国产精品| 亚洲精品一区二区三区四区高清| 欧美日韩精品在线观看| 久久精品免视看| 国产女同一区二区| 亚洲高清免费在线| 在线不卡免费欧美| 国产精品高清免费在线观看| 久久久一二三| 国产日韩亚洲欧美| 欧美色123| 欧美午夜精品久久久久久浪潮| 久久福利影视| 国产精品久久久久久久久久免费看| 午夜天堂精品久久久久| 亚洲国产日韩欧美| 中文亚洲欧美| 欧美激情综合五月色丁香小说| 国产精品久久久久久久久借妻| 极品少妇一区二区三区精品视频| 欧美日韩一区二区三区四区在线观看| 亚洲午夜精品视频| 1000部国产精品成人观看| 国产精品性做久久久久久| 伊人久久大香线蕉av超碰演员| 亚洲欧美激情视频在线观看一区二区三区| 国产精品日韩精品欧美精品| 欧美激情一区二区三区在线视频观看| 欧美人与禽猛交乱配视频| 亚洲欧美日韩久久精品| 日韩视频一区二区三区在线播放| 欧美一级视频精品观看| 国户精品久久久久久久久久久不卡| 蜜桃精品久久久久久久免费影院| 亚洲大胆人体在线| 午夜精品一区二区三区四区| 欧美在线视频免费观看| 一区二区三区无毛| 欧美日韩xxxxx| 亚洲第一区在线观看| 国产精品五月天| 欧美日本网站| 狠狠色丁香久久婷婷综合_中| 久久久久国产精品一区三寸| 亚洲日本中文字幕免费在线不卡| 欧美色区777第一页| 亚洲高清视频中文字幕| 在线观看日韩专区| 国产一区二区久久精品| 樱桃成人精品视频在线播放| 欧美一区二区观看视频| 国内精品久久久久影院优| 国产精品免费网站| 欧美激情一区二区三区蜜桃视频| 午夜伦理片一区| 性欧美大战久久久久久久免费观看| 久久在线精品| 欧美日韩精品伦理作品在线免费观看| 欧美日韩免费观看一区| 欧美日韩在线一区二区| 欧美人成在线视频| 欧美噜噜久久久xxx| 亚洲欧美日韩一区在线观看| 国产一区视频观看| 国内精品国语自产拍在线观看| 欧美中文字幕精品| 亚洲欧美在线播放| 国内不卡一区二区三区| 在线看国产日韩| 亚洲视频中文| 亚洲午夜精品一区二区三区他趣| 免费91麻豆精品国产自产在线观看| 亚洲高清在线观看一区| 欧美日韩亚洲视频| 欧美激情亚洲一区| 精品91免费| 一区二区三区日韩在线观看| 欧美一级视频| 国产精品美女久久久久久免费| 国产无遮挡一区二区三区毛片日本| 欧美久久影院| 国产精品久久久爽爽爽麻豆色哟哟| 欧美日韩精品不卡| 欧美精品网站| 欧美人成免费网站| 欧美高清你懂得| 欧美日韩国产美| 亚洲国产91精品在线观看| 国产日韩在线视频| 亚洲激情黄色| 欧美在线电影| 欧美日韩一区二区三区视频| 亚洲国产成人高清精品| 久久亚洲风情| 一区二区三区四区国产精品| 国产日韩在线视频| 欧美日本中文| 欧美日韩亚洲综合| 欧美极品aⅴ影院| 欧美在线不卡视频| 欧美日韩在线精品一区二区三区| 欧美日韩在线三级| 亚洲美女黄色| 亚洲一区二区三区乱码aⅴ| 久久婷婷国产综合国色天香| 欧美不卡一区| 在线成人h网| 国产精品日韩二区| 欧美日韩精品一区视频| 国产精品久久久久久久久免费| 亚洲欧美视频在线观看视频| 欧美激情中文不卡| 精品av久久久久电影| 亚洲一区二区三区777| 国内精品视频一区| 欧美日韩高清在线播放| 国产午夜精品在线观看| 激情综合亚洲| 欧美日韩美女一区二区| 午夜伦欧美伦电影理论片| 亚洲影院免费观看| 午夜精品美女自拍福到在线| 精品96久久久久久中文字幕无| 一色屋精品视频免费看| 久久久久女教师免费一区| 欧美精品二区三区四区免费看视频| 国产精品久久久久久亚洲毛片| 欧美国产高清| 亚洲在线日韩| 久久精品国产久精国产爱| 激情成人综合| 国产一区 二区 三区一级| 国产精品成人免费视频| 91久久精品一区二区三区| 中国亚洲黄色| 午夜精品婷婷| 久久婷婷国产麻豆91天堂| 亚洲人成在线影院| 又紧又大又爽精品一区二区| 亚洲激情在线观看视频免费| 亚洲人精品午夜| 久久久亚洲欧洲日产国码αv| 亚洲欧美日韩精品久久奇米色影视| 最新亚洲视频| 极品av少妇一区二区| 午夜久久久久久久久久一区二区| 欧美日韩免费在线| 欧美日韩国产综合视频在线观看中文| 欧美三级日本三级少妇99| 在线视频亚洲一区| 亚洲精选91| 国产精品看片资源| 欧美日韩一二三区| 亚洲大片av| 亚洲国产91| 久久精品导航| 午夜精品视频在线| 国产精品日韩一区二区三区| 国内精品久久久久影院 日本资源| 久久精品99国产精品酒店日本| 欧美成ee人免费视频| 国产精品久久午夜夜伦鲁鲁| 国产精品成人一区二区三区吃奶| 国产欧美三级| 亚洲午夜性刺激影院| 国产日韩欧美在线播放不卡| 在线中文字幕一区| 欧美jizzhd精品欧美巨大免费| 亚洲国产欧美久久| 欧美精品在线免费观看| 欧美精品自拍偷拍动漫精品| 亚洲欧美日韩在线| 男女视频一区二区| 国产午夜精品视频免费不卡69堂| 99国产精品一区| 久久在线免费| 影音先锋欧美精品| 国产日韩亚洲欧美| 久久精品在线免费观看| 欧美一级在线视频| 欧美亚韩一区| 国产精品成人播放| 欧美日韩成人在线| 国产三级精品三级| 国产精品午夜视频| 亚洲欧洲中文日韩久久av乱码| 欧美麻豆久久久久久中文| 亚洲欧美精品中文字幕在线| 免费观看成人鲁鲁鲁鲁鲁视频| 日韩视频免费观看高清在线视频| 亚洲第一中文字幕| 亚洲日本一区二区三区| 小黄鸭精品aⅴ导航网站入口| 久久精品天堂| 欧美电影免费网站| 日韩五码在线| 久久国内精品自在自线400部| 久久精品国产亚洲一区二区| 欧美国产精品| 国产欧美一区二区精品性色| 亚洲日韩欧美一区二区在线| 国产精品免费在线| 亚洲国产精品日韩| 欧美色精品天天在线观看视频| 国产视频久久| 欧美freesex交免费视频| 你懂的国产精品永久在线| 国产精品二区在线观看| 女人色偷偷aa久久天堂| 亚洲国产一区二区a毛片| 欧美+日本+国产+在线a∨观看| 亚洲久久一区二区| 国产欧美一区二区在线观看| 亚洲乱码精品一二三四区日韩在线| 亚洲精品乱码久久久久久日本蜜臀| 国产日韩欧美91| 性欧美大战久久久久久久久| 欧美高清免费| 亚洲欧洲日本专区| 欧美区亚洲区| 亚洲在线视频观看| 亚洲视频 欧洲视频| 国产日韩专区| 国产精品视频久久久| 国产一区二区三区四区在线观看| 亚洲精品乱码久久久久久久久| 久久久久一区| 欧美成年人视频网站| aa级大片欧美三级| 国产婷婷色一区二区三区四区| 欧美另类人妖| 国产欧美精品久久| 国产精品免费久久久久久| 欧美日韩午夜在线视频| 欧美—级高清免费播放| 亚洲电影第1页| 欧美激情偷拍| 欧美日韩国产精品一区| 一区二区三区四区五区视频| 国产一区二区三区久久久久久久久| 国产精品国码视频| 国产精品初高中精品久久| 国产精品成人观看视频免费| 欧美国产先锋| 蜜臀av国产精品久久久久| 激情亚洲成人| 99综合视频| 欧美巨乳在线| 亚洲欧美国产精品专区久久| 中文久久精品| 亚洲少妇中出一区| 久久精品国产亚洲一区二区三区| 日韩亚洲精品视频| 欧美一区二区三区四区在线| 99精品久久| 久久精品成人一区二区三区蜜臀| 欧美h视频在线| 午夜一区不卡| 玖玖综合伊人| 亚洲最新色图| 亚洲免费观看高清完整版在线观看| 久久精品综合| 国产精品久久7| 国外视频精品毛片| 国产精品美女一区二区| 国产精品99久久久久久有的能看| 91久久久久久久久久久久久| 在线综合欧美| 亚洲婷婷综合色高清在线| 性欧美超级视频| 国产一区二区高清不卡| 亚洲精品一区中文| 一本色道久久88亚洲综合88| 欧美.日韩.国产.一区.二区| 久久精品噜噜噜成人av农村| 国产精品都在这里| 欧美激情视频在线免费观看 欧美视频免费一| 一区二区久久久久| 欧美大成色www永久网站婷| 国产精品一区二区三区久久| 国产亚洲视频在线| 一本在线高清不卡dvd| 亚洲综合视频1区| 国产精品久久久一区麻豆最新章节| 另类图片国产| 美女网站在线免费欧美精品| 欧美日韩三级| 中文国产亚洲喷潮| 美女精品视频一区| 女女同性女同一区二区三区91| 欧美一区亚洲二区| 欧美a级在线| 影音先锋日韩有码| 亚洲伦理在线观看| 国产香蕉久久精品综合网| 免费观看一级特黄欧美大片| 国产最新精品精品你懂的| 久久免费高清| 在线观看91精品国产麻豆| 国产精品进线69影院|