機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
在PIC18單片機(jī)中使用BootLoader
在PIC18單片機(jī)中使用BootLoader
 更新時(shí)間:2008-8-19 13:25:04  點(diǎn)擊數(shù):96
【字體: 字體顏色
  摘要:介紹在PIC18系列單片機(jī)中使用BootLoader的原理、方法及優(yōu)點(diǎn);介紹HI-TECH公司使用C語言實(shí)現(xiàn)BootLoader的程序,給出詳細(xì)的使用方法和參數(shù)配置方法;針對程序中存在的問題進(jìn)行探討和修改,使修改后的程序?qū)嵱、可靠。另外,探討對程序?shù)據(jù)進(jìn)行加密、加快下載速度、在RS485/RS422中使用BootLoader的方法和思路。根據(jù)此方法,讀者可以編寫出適合自己使用的BootLoader程序。

  關(guān)鍵詞:BootLoader PIC18 IAP 在線升級(jí)

引 言

  PIC單片機(jī)的BootLoader屬于需要自己寫程序的那種,可以根據(jù)自己的需要寫出各種功能的BootLoader程序來。目前,比較常見的BootLoader程序有Microchip公司的C18版本和著名的PICC編譯器廠商HI-TECH公司(以下簡稱HI-TECH)的PICC18版本。它們的相似之處在于都占用了系統(tǒng)的0x00~0x1FF的程序空間。Microchip的版本是用純匯編寫的,而HI-TECH的版本是用C語言編寫的。

  在PIC系列單片機(jī)中,只有PIC18系列和PIC16F87X系列的單片機(jī)才有IAP功能,才能夠使用BootLoader功能。下面只介紹PIC18的BootLoader,PIC16F87X的BootLoader與它類似。

1 BootLoader程序的工作原理

  BootLoader是一段引導(dǎo)程序,在單片機(jī)上電/復(fù)位后在用戶程序之前先運(yùn)行。運(yùn)行后判斷當(dāng)前是否需要進(jìn)入升級(jí)狀態(tài)。如果不需要升級(jí),就直接運(yùn)行Flash中原有的程序;如果需要升級(jí),首先擦除舊的程序,然后從串口接收用戶程序,同時(shí)寫入Flash中。接收數(shù)據(jù)時(shí),需要進(jìn)行校驗(yàn),保證接收到的數(shù)據(jù)是正確的,避免將錯(cuò)誤的程序?qū)懭氲叫酒小?

  PIC18單片機(jī)只有一塊Flash,可以在Flash的任何位置擦寫(甚至可以將BootLoader自身擦除);而51單片機(jī)一般都是兩塊Flash,只能夠從一塊Flash上擦寫另一塊Flash,而不能擦寫自身。

  BootLoader程序原則上是可以放在整個(gè)程序空間中的任何位置的,但是為了簡單方便、具有通用性和盡量減少對用戶程序的影響,使用了從0x00開始的一段程序空間。

  BootLoader程序可以多種方式獲取數(shù)據(jù),包括串口、并口、I2C、SPI、USB等;但是從實(shí)際使用來看,使用串口無疑是最方便的。

  為了使得用戶程序可以獲得最大的程序空間,就需要BootLoader程序盡可能的簡短。在這里,Microchip和HI-TECH都將BootLoader程序設(shè)計(jì)為小于200H個(gè)字節(jié)(100H個(gè)字)。使用0x00~0x1FF這個(gè)區(qū)域還有一個(gè)重要原因是,這個(gè)地址的空間有特殊的寫保護(hù)特性。

  PIC18單片機(jī)雖然有多個(gè)中斷源,但只支持兩級(jí)中斷,有兩個(gè)中斷向量,分別位于0x08和0x18;而BootLoader程序占用了0x00~0x1FF的空間,這意味著需要重新定位中斷向量,使新的中斷向量指向用戶的中斷程序,這樣才能保證正常運(yùn)行用戶程序的中斷程序。

2 程序的使用方法

 。1) HI-TECH的BootLoader程序

  在HI-TECH的PICC18編譯器的examples文件夾下,有一個(gè)Bootldr子文件夾,里面就是HI-TECH的BootLoader程序。這是一個(gè)完整的程序,可以直接進(jìn)行編譯,編譯后的HEX可以用編程器下載到芯片中。

  (2) 用戶系統(tǒng)的要求

  如果需要使用BootLoader,要求用戶系統(tǒng)中有一個(gè)RS232串口可以和計(jì)算機(jī)進(jìn)行通信。

  (3) 程序的配置

  下面是程序的主要參數(shù),如果它們設(shè)置得不正確,會(huì)影響程序的使用。

  VERB0:冗余模式,有更多的提示,但是會(huì)占用更多的程序空間,建議不用。
  BOOT_TIMEOUT:等待超時(shí)的時(shí)間,0~9s(再長了也沒有意義),默認(rèn)為5s。
  BAUD:串口通信的波特率,默認(rèn)是9 600。
  FOSC:用戶系統(tǒng)的時(shí)鐘頻率,默認(rèn)是4 MHz。
  NINE:通信是否使用第9位數(shù)據(jù)位,默認(rèn)不使用。
  FILL_BYTE:程序空間擦除時(shí)使用的填充數(shù)據(jù),默認(rèn)值是0xFF。
  PROG_START:用戶程序的起始位置,默認(rèn)是0x200。
  其他的參數(shù)可以先不用管,在需要時(shí)再修改,它們不影響通信和下載。

 。4) 程序的編譯

  有兩種方法對BootLoader程序進(jìn)行編譯:

 、 命令行方式。使用命令行時(shí),典型的用法是:
  picc18 -8f452 bootldr.c -o -zg -noerrata
  上面的最后一個(gè)參數(shù) -noerrata是PIC18Fxx2系列單片機(jī)需要的,若是其他型號(hào),就不用加入;而參數(shù) -18f452是指定單片機(jī)的型號(hào),如果是其他型號(hào),就修改為實(shí)際使用的型號(hào)。


 、 使用MPLAB IDE。使用MPLAB IDE時(shí),首先按照正常方式建立一個(gè)新的工程文件,選擇工程文件目錄,然后加入HI-TECH的Samples\Bootldr目錄下文件bootldr.c和bootldr.h。建立工程文件時(shí),選擇MCU的型號(hào)為實(shí)際使用的型號(hào),選擇C編譯器為HI-TECH的PICC18編譯器。

 。5) 用戶程序的配置

  使用HI-TECH版本的BootLoader,對用戶程序的修改是非常少和簡單的,只需要修改用戶程序的偏移量就可以了,而不需要修改任何程序代碼或進(jìn)行任何特殊的配置。因?yàn)锽ootLoader程序需要占用0~1FFH的空間,所以用戶程序需要從200H處開始運(yùn)行,即設(shè)置程序的偏移量為200H。方法是在MPLAB IDE中,從菜單中選擇Project→Build Options...→Project,在PICC-18 Linker頁標(biāo)下的Specify offset for ROM(ROM代碼偏移量)中輸入偏移量200(注意這里輸入的已經(jīng)是十六進(jìn)制了,不用再轉(zhuǎn)換),如圖1所示。

    
                     圖 1

[1] [2] [3]  下一頁
  • 上一篇: 基于ADuC841的膜片鉗放大器的設(shè)計(jì)
  • 下一篇: Proteus軟件調(diào)試實(shí)現(xiàn)的數(shù)字式指針溫度計(jì)
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1