智汇工业-智慧工业、智能制造及工业智能、工业互联门户网站,专业的工业“互联网+”传媒

單片機自編程及Bootloader設計

來源:網絡

點擊:1332

A+ A-

所屬頻道:新聞中心

關鍵詞: 單片機,自編程,Bootloader,μPD78F0881

      Bootloader是在單片機上電啟動時執行的一小段程序。也稱作固件,通過這段程序,可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便為最終調用應用程序準備好正確的環境。

      Boot代碼由MCU啟動時執行的指令組成。這里的loader指向MCU的Flash中寫入新的應用程序。因此,Bootloader是依賴于特定的硬件而實現的,因此,在眾多嵌入式產品中目前還不可能實現通用Bootloader。

      Bootloader的最大優點是:在不需要外部編程器的情況下,對嵌入式產品的應用代碼進行更新升級。它使得通過局域網或者Intemet遠程更新程序成為可能。例如,如果有5 000個基于MCU的電能表應用程序需要更新,電能表制造商的技術人員就可以避免從事對每一個電能表重新編程的巨大工作量,通過使用Bootloader的功能,由控制中心通過電能表抄表系統網絡,遠程對5 000個電表重新編程。可見,Bootloader功能對于嵌入式系統的廣泛應用具有十分重要的意義。

      1 78K0/Fx2系列單片機簡介

      78K0/Fx2系列是帶CAN控制器的8位單片機,該系列單片機廣泛應用于汽車電子,智能儀表等領域。其內置POC(可編程上電清零電路)/LVI(可編程低電壓指示器),單電壓自編程閃存,引導交換功能(閃存安全保護),具有低功耗、寬電壓范圍、超高抗干擾等性能。

      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接口升級等等。

    (審核編輯: 智匯小新)

    聲明:除特別說明之外,新聞內容及圖片均來自網絡及各大主流媒體。版權歸原作者所有。如認為內容侵權,請聯系我們刪除。

    主站蜘蛛池模板: 江苏工业双氧水_工业亚硝酸钠的作用与用途_工业双氧水厂家-江苏连云港嘉一化工厂 | 手游下载_app下载_好玩的手游下载_安卓市场下载_163下载 | 吸音板_隔音板多少钱_降噪声学材料_环保阻燃防火_吸声装饰工程定制_厂家价格直供 - 佛山天阶声学材料厂 | 绝缘油介电强度测试仪|d33压电测试仪|准静态d33压电测量仪厂家直销-上海蓝巢电气有限公司【官网】 | 汽油发电机,柴油发电机,小型汽油发电机,小型柴油发电机,家用发电机生产厂家——上海东明动力设备有限公司 | 西安西雷脉冲功率技术有限公司-高压调制器/加速器与脉冲功率系统的研发/生产/应用推广/高压脉冲电源的应用研究/设计/生产和销售/高功率脉冲器件/材料与仪器设备的研发/生产和销售/高电压/大电流/强磁场环境的模拟及测试服务/会议会展服务/货物及进出口的业务/脉冲功率技术领域类的技术转让 | 罗茨鼓风机价格_三叶罗茨鼓风机厂家-山东锦工有限公司 | 智能访客系统 - 来访登记系统_微信预约系统_人员出入管理系统_访客机_人脸识别系统门禁闸机 | 葫芦岛市鹏翔农药化工科技有限公司-苦参碱可溶液剂-氯氰菊酯乳油-阿维菌素乳油 | 衡水物流网,衡水物流信息网,衡水物流公司,衡水货运专线,衡水专线运输车辆 | 宿迁市华泰交通设施有限公司,上海第四代路名牌,天津仿罗马柱路名牌,标准路名牌,路名牌灯箱,公交站台,户外广告灯箱, 交通标志牌,社区阅报栏 | 亿企商贸-亿万企业的商务贸易平台-B2B企业产品发布供求信息平台,一带一路中国企业及产品展示平台,免费企业智能自助建站网络营销推广平台,打造B2B企业黄页产品信息发布推广专业综合电子商务平台! | 机械设备回收_二手机器回收_设备拆除回收_广州益美机械设备回收公司 | 加力管钳,液压动力钳,液压转盘-加力管钳,液压动力钳,液压转盘,山东临朐静远石油机械有限公司 | 展馆周边酒店_会展中心附近酒店_展览旅游酒店预订官网-盟友云 | 尼龙柱鞋-弹性防爆胶圈-氟胶油封-彩色氟胶o型圈 - 巨鹿县长城矿山机械配件有限公司 | 中式婚礼_汉服婚礼_传统婚礼_婚庆公司_云歌婚礼策划【官网】 | 手板机箱_亚克力机箱_医疗机箱_美容机箱_医疗设备外壳厂家_鸿堪医疗器械有限公司 | 专题秀_汇聚网络热门专题_实时报道各类新闻专题资讯 | 润东方环保空调厂家-水冷式空调价格-润东方水冷空调-东莞市科骏机电设备有限公司 | 面粉加工设备-面粉加工机械-面粉机组-面粉磨粉机-面粉机成套设备-河南粮院机械制造有限公司 | 三拓精密机械南通有限公司| 桥梁养护|桥梁维修加固|隧道裂缝修补|支座更换|管道堵水气囊|衡水众拓路桥养护有限公司 | 微型压力传感器-工业压力放大器-压力传感器厂家-力准传感 | 泰安铭德机械有限公司,有机肥设备,山东有机肥设备厂家,铭德机械 泰安华特玻璃钢有限公司|泰安玻璃钢|泰安华特玻璃钢 | 做网站_网站建设_专业上海网站制作_网至普网站建设 | 青州市泰航机械设备有限公司| 消防排烟风机|3C排烟风机|正压送风机|高温排烟风机|柜式排烟风机-山东锦松环境设备有限公司 | 假肢价格-大腿假肢小腿假肢假手指-河南舒捷假肢厂家 | 智慧社区_【功能更全、价格更低、案例更多】 - | 金酱酒_金酱酒代理加盟招商_OEM贴牌企业定制! – 金酱酒代理加盟!茅台镇较早的酿酒烧坊,年产优质酱香白酒5000余吨,仁怀市十强白酒企业,主营主品:金酱酒、金酱陈香酒、酱香老酒等系列品牌产品 | 双效-多效-三效-废水-污水蒸发器_离心喷雾-污泥干燥机_蒸发浓缩器【天辰环保 】 | 深圳理津技术有限公司(REHLOGY)-全球工业品供应商:自动化产品|仪器仪表|设备|备品备件|工具|消耗品|非标设备|建筑工程等一站式综合服务! | 树脂井盖,复合井盖,井盖厂家-山东宝盖新材料 | 柱状_椰壳_蜂窝_果壳_粉状活性炭_活性炭厂家 - 銮桦净化 | 三禾防爆-专业的防爆电气生产厂家 | 生物安全柜检测,GMP设备确认,仪器性能确认,洁净厂房检测,仓储温湿度检测-上海熙迈 | 三机一体除湿干燥机,色母机,称重式拌料机,工业冻水机,中央集中供料-东莞市瑞达机械科技有限公司(瑞达国际) | 洗地机_扫地机_扫地车品牌_尘推车_工业吸尘器_山东鼎洁盛世 | 疲劳试验机|电子万能试验机|摩擦磨损试验机|冲击试验机|济南全力测试技术有限公司 | 无锡紫苹果装饰首页-高端别墅装修设计,专业别墅装饰公司 |