日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]本文研究并實(shí)現(xiàn)了Mega48的Bootloader功能,提出了兩種軟件實(shí)現(xiàn)方法,并分別在硬件上成功實(shí)現(xiàn),為基于Mcga48編寫高效,專用的Bootloader程序奠定了基礎(chǔ)。

    AVR是Atmel公司推出的第一款真正意義上的RISC結(jié)構(gòu)8位單片機(jī),具有先進(jìn)的指令集及單時(shí)鐘周期指令執(zhí)行時(shí)間,數(shù)據(jù)吞吐率可高達(dá)1MIPS,其性能明顯優(yōu)于其他類型8位單片機(jī)。
   
    作為AVR主流產(chǎn)品,Mega系列的很多產(chǎn)品(Mega8/Megal6/Mega32/Mega8535等)在硬件上都支持Boot-loader功能。這樣MCU可靈活運(yùn)行BOOT區(qū)程序,實(shí)現(xiàn)在應(yīng)用編程(IAP)及一些高級(jí)應(yīng)用,如系統(tǒng)智能升級(jí),密碼校驗(yàn)自保護(hù),遠(yuǎn)程系統(tǒng)更新等。但有很高性價(jià)比的Mega48在硬件上卻不支持Bootloader功能。因此,本文針對(duì)Mega48首次提出兩種軟件實(shí)現(xiàn)Bootloader的方法:跳轉(zhuǎn)保存法和倒置法。

1 ATMega48 Bootloader的軟件實(shí)現(xiàn)方法
    Mega48在硬件上不支持Bootloader功能,不能像其他產(chǎn)品那樣通過(guò)編程來(lái)設(shè)置相應(yīng)的熔絲位以實(shí)現(xiàn)Bootloader,只能通過(guò)軟件來(lái)實(shí)現(xiàn)。在Mega48上實(shí)現(xiàn)Bootloader的關(guān)鍵在于通過(guò)軟件實(shí)現(xiàn)程序存儲(chǔ)器空間劃分。復(fù)位后,BOOT區(qū)獲得MCU控制權(quán),自編程結(jié)束后MCU控制權(quán)返還給APP區(qū).以下將詳細(xì)介紹本文提出的兩種新方法。

1.1 跳轉(zhuǎn)保存法

    本方法的核心在于跳轉(zhuǎn)和保存,因此命名為跳轉(zhuǎn)保存法。跳轉(zhuǎn)指上電后MCU跳轉(zhuǎn)至BOOT區(qū),MCU控制權(quán)被BOOT區(qū)獲得。保存指對(duì)APP區(qū)程序復(fù)位地址的保存,只有保存了該地址才能保證MCU控制權(quán)正常返還給APP區(qū)。

    跳轉(zhuǎn)保存法采用一般分區(qū)方式,即APP區(qū)位于程序存儲(chǔ)器空間的低地址處,BOOT區(qū)在高地址處。因本文使用的上位機(jī)軟件為AVROSP,BOOT區(qū)需占用1 KB。此外,由于ATMega48不支持通過(guò)熔絲位修改程序的復(fù)位向量,故需多劃分給BOOT區(qū)4個(gè)頁(yè)面大小的空間。

    為提高程序的可移植性,可使用預(yù)定義語(yǔ)句來(lái)劃分BOOT區(qū)大小,具體實(shí)現(xiàn)如下:
    #define PAGESIZE 64
    //每個(gè)頁(yè)面由64個(gè)字節(jié)組成
    #define APP_PAGES ((4*1024/PAGESIZE) - ((1*1024+256)/PAGESIZE))
    //APP區(qū)的頁(yè)面數(shù)
    #define APP_END APP_PAGES*PAGESIZE
    //APP區(qū)共占用的字節(jié)數(shù)
    在編譯過(guò)程中,由于ICCAVR編譯器只支持標(biāo)準(zhǔn)的BOO了區(qū)大小設(shè)置,即256/512/1024/2048 KB。故使用下面方法定義BOOT區(qū)大??;
    #pragma text:mytext    
    voidboot()...
    #pragma text;text
    編譯過(guò)程中,在ProjectOptions→Target的Other Options中,添加“-bmytext;0x????”,其中0x????為BOOT區(qū)開(kāi)始的地址。這樣就可以根據(jù)實(shí)際需要設(shè)定BOO了區(qū)大小。這對(duì)于整個(gè)程序空間只有4 KB的ATMcga48來(lái)說(shuō),是非常適合的。程序具體流程如圖1所示。

    如圖1所示,BOOT區(qū)程序塊的第一步就是讀取EEPROM中的APP區(qū)原復(fù)位地址,以便單片機(jī)在執(zhí)行BOOT區(qū)程序條件不成立時(shí),跳轉(zhuǎn)到APP區(qū)執(zhí)行程序。
    EEPROM_READ(0xfe,AppReset);

    當(dāng)執(zhí)行BOOT區(qū)程序條件成立時(shí),單片機(jī)將執(zhí)行BOOT區(qū)程序來(lái)更新APP區(qū)中的內(nèi)容。這里特別要注意對(duì)即將更新到APP區(qū)內(nèi)程序復(fù)位地址的處理:保存該程序中復(fù)位地址到RAM中,并修改該地址為BOOT區(qū)人口地址。這個(gè)工作必須在頁(yè)面填充前完成,否則在更新后,單片機(jī)復(fù)位運(yùn)行不會(huì)首先跳轉(zhuǎn)到BOOT區(qū)。
    if(address==o){
    AppReset=data;
    data=BootReset; //BOOT區(qū)的入口
    BootReset=0x1300
    }

    BOOT區(qū)程序塊最后一步是對(duì)APP區(qū)程序復(fù)位地址的保存。只有通過(guò)上電復(fù)位才能移交MCU控制權(quán)給APP區(qū),這將導(dǎo)致RAM被清零。為了保存RAM中的原APP區(qū)程序復(fù)位地址,需上電復(fù)位前,將這個(gè)地址保存到EEPROM中。
    EEPROM_WRITE(Oxfe,APPReset);

    值得一提的是,在第一次運(yùn)行時(shí),程序并不能直接跳轉(zhuǎn)到BOOT區(qū)首地址,所以第一次運(yùn)行時(shí),APP區(qū)內(nèi)容應(yīng)為空。這樣,當(dāng)單片機(jī)上電運(yùn)行時(shí),程序指針(PC)會(huì)自增向下運(yùn)行到第一句可執(zhí)行代碼,即BOOT區(qū)中的首行代碼。同樣,第一次運(yùn)行時(shí)也不可能讀取出正確的返回APP區(qū)的入口地址(取出值為0xFF),所以第一次運(yùn)行時(shí)必須保證執(zhí)行BOOT區(qū)程序條件成立,否則將無(wú)法正確跳回到APP區(qū)。只有執(zhí)行了BOOT區(qū)程序,才能寫入正確的APP返回地址到EEPROM中,從而為以后的運(yùn)行做好準(zhǔn)備。
 
    跳轉(zhuǎn)保存法遵循了Bootloader的常規(guī)實(shí)現(xiàn)流程,但它的MCU控制權(quán)交接處理比較復(fù)雜,下文將提到的倒置法就很好地解決了這個(gè)問(wèn)題。

1.2 倒置法

    一般來(lái)說(shuō),程序存儲(chǔ)區(qū)的上部為NPP區(qū),下部為BOOT區(qū),這也是常規(guī)方法所采取的分區(qū)方法。這種分區(qū)方法由支持Bootloader功能的芯片程序存儲(chǔ)區(qū)中RWW和NRWW的劃分方式所決定的。針對(duì)Mega48,它的程序存儲(chǔ)區(qū)沒(méi)有RWW區(qū)和NRWW區(qū)之分,SPM指令可以在整個(gè)Flash區(qū)中執(zhí)行,所以大可不必拘泥于一般規(guī)律,完全可以把APP區(qū)和BOOT區(qū)倒置,即把程序存儲(chǔ)區(qū)的上部劃分為BOOT區(qū),下部劃分為APP區(qū)。本文中將這種分區(qū)方法稱為倒置分區(qū)方法。

    倒置法背棄了常規(guī)分區(qū)形式,創(chuàng)新地采用倒置分區(qū)法對(duì)程序存儲(chǔ)區(qū)進(jìn)行分區(qū)。這樣,在每次上電后,BOOT區(qū)自動(dòng)獲得MCU控制權(quán),而不需修改和保存用戶程序復(fù)位向量,這比跳轉(zhuǎn)保存法簡(jiǎn)便。BOOT區(qū)大小劃分仍使用預(yù)定義語(yǔ)句,具體實(shí)現(xiàn)如下:
    #define PAGESIZE 64
    #define APP_PAGES((4096/PAGESIZE)-(1024/PAGESIZE))
    #define APP_END APP_PAGES*PAGESIZE

    在對(duì)APP區(qū)程序編譯時(shí),編譯器的配置方法類似于常規(guī)方法中對(duì)BOOT區(qū)程序編譯時(shí)的配置.倒置法流程如圖2所示。

    如圖2所示,當(dāng)執(zhí)行BOOT區(qū)程序條件不成立時(shí),程序跳轉(zhuǎn)至APP區(qū)入口處,該地址是固定的(4096~1024)。
    具體實(shí)現(xiàn)如下:
    Asm(“jmp 0x0C00\n”);
    //跳轉(zhuǎn)到APP區(qū)開(kāi)始執(zhí)行

    需要注意的是,中斷向量空間在程序存儲(chǔ)器的低地址上,這正好位于BOOT區(qū)中,故為了增加APP區(qū)和B00T區(qū)兩部分程序的獨(dú)立性,可在APP區(qū)中人為構(gòu)建除復(fù)位向量以外的其他中斷向量空間。在自編程過(guò)程中,實(shí)施頁(yè)寫入時(shí),不是按常規(guī)方法的順序從第一個(gè)頁(yè)開(kāi)始更新,因?yàn)樾韪碌氖茿PP區(qū)所在的頁(yè)面,而不是BOOT區(qū)所在的,所以要從APP區(qū)所在的頁(yè)面處開(kāi)始更新。

    倒置法打破了常規(guī)的分區(qū)模式,大大簡(jiǎn)化了對(duì)MCU控制權(quán)的處理,但其頁(yè)面更新處理較為繁瑣。跳轉(zhuǎn)保存法則因沿襲了常規(guī)處理方式,所以頁(yè)面更新無(wú)需做特別處理,并能很好地兼容硬件實(shí)現(xiàn)Bootloader的程序。用戶可以根據(jù)實(shí)際需要來(lái)選擇方法。

2 硬件測(cè)試原理圖及結(jié)果
    調(diào)試硬件原理圖如圖3所示。圖3中的ISP接口是用來(lái)完成第一次非Bootloadcr的編程方式,從而建立Bootloader的應(yīng)用環(huán)境。這以后的每次編程均可以通過(guò)串口直接完成,不需要任何其他設(shè)備。

    在本文中使用的編譯環(huán)境為ICCAVR DEMO版,通過(guò)使用AVR單片機(jī)的井口下載線完成BOOT區(qū)程序的首次寫入。 自編程過(guò)程中使用的上位機(jī)軟件為AVROSP。經(jīng)測(cè)試兩種方法均能可靠運(yùn)行。

結(jié) 語(yǔ)
    綜上所述,本文研究并實(shí)現(xiàn)了Mega48的Bootloader功能,提出了兩種軟件實(shí)現(xiàn)方法,并分別在硬件上成功實(shí)現(xiàn),為基于Mcga48編寫高效,專用的Bootloader程序奠定了基礎(chǔ)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

柏林2025年9月9日 /美通社/ -- 2025年9月5日,納斯達(dá)克上市公司優(yōu)克聯(lián)集團(tuán)(NASDAQ: UCL)旗下全球互聯(lián)品牌GlocalMe,正式亮相柏林國(guó)際消費(fèi)電子展(IFA 2025),重磅推出融合企...

關(guān)鍵字: LOCAL LM BSP 移動(dòng)網(wǎng)絡(luò)

深圳2025年9月9日 /美通社/ -- PART 01活動(dòng)背景 當(dāng)技術(shù)的鋒芒刺穿行業(yè)壁壘,萬(wàn)物互聯(lián)的生態(tài)正重塑產(chǎn)業(yè)疆域。2025年,物聯(lián)網(wǎng)產(chǎn)業(yè)邁入?"破界創(chuàng)造"與"共生進(jìn)化"?的裂變時(shí)代——AI大模型消融感知邊界,...

關(guān)鍵字: BSP 模型 微信 AIOT

"出海無(wú)界 商機(jī)無(wú)限"助力企業(yè)構(gòu)建全球競(jìng)爭(zhēng)力 深圳2025年9月9日 /美通社/ -- 2025年8月28日, 由領(lǐng)先商業(yè)管理媒體世界經(jīng)理人攜手環(huán)球資源聯(lián)合主辦、深圳?前海出海e站通協(xié)辦的...

關(guān)鍵字: 解碼 供應(yīng)鏈 AI BSP

柏林2025年9月9日 /美通社/ -- 柏林當(dāng)?shù)貢r(shí)間9月6日,在2025德國(guó)柏林國(guó)際電子消費(fèi)品展覽會(huì)(International Funkausstellung...

關(guān)鍵字: 掃地機(jī)器人 耳機(jī) PEN BSP

武漢2025年9月9日 /美通社/ -- 7月24日,2025慧聰跨業(yè)品牌巡展——湖北?武漢站在武漢中南花園酒店隆重舉辦!本次巡展由慧聰安防網(wǎng)、慧聰物聯(lián)網(wǎng)、慧聰音響燈光網(wǎng)、慧聰LED屏網(wǎng)、慧聰教育網(wǎng)聯(lián)合主辦,吸引了安防、...

關(guān)鍵字: AI 希捷 BSP 平板

上海2025年9月9日 /美通社/ -- 9月8日,移遠(yuǎn)通信宣布,其自研藍(lán)牙協(xié)議棧DynaBlue率先通過(guò)藍(lán)牙技術(shù)聯(lián)盟(SIG)BQB 6.1標(biāo)準(zhǔn)認(rèn)證。作為移遠(yuǎn)深耕短距離通信...

關(guān)鍵字: 藍(lán)牙協(xié)議棧 移遠(yuǎn)通信 COM BSP

上海2025年9月9日 /美通社/ -- 為全面落實(shí)黨中央、國(guó)務(wù)院和上海市委、市政府關(guān)于加快發(fā)展人力資源服務(wù)業(yè)的決策部署,更好發(fā)揮人力資源服務(wù)業(yè)賦能百業(yè)作用,8月29日,以"AI智領(lǐng) HR智鏈 靜候你來(lái)&quo...

關(guān)鍵字: 智能體 AI BSP 人工智能

北京2025年9月8日 /美通社/ -- 近日,易生支付與一汽出行達(dá)成合作,為其自主研發(fā)的"旗馭車管"車輛運(yùn)營(yíng)管理平臺(tái)提供全流程支付通道及技術(shù)支持。此次合作不僅提升了平臺(tái)對(duì)百余家企業(yè)客戶的運(yùn)營(yíng)管理效率...

關(guān)鍵字: 一汽 智能化 BSP SAAS

深圳2025年9月8日 /美通社/ -- 晶泰科技(2228.HK)今日宣布,由其助力智擎生技制藥(PharmaEngine, Inc.)發(fā)現(xiàn)的新一代PRMT5抑制劑PEP0...

關(guān)鍵字: 泰科 AI MT BSP

上海2025年9月5日 /美通社/ -- 由上海市經(jīng)濟(jì)和信息化委員會(huì)、上海市發(fā)展和改革委員會(huì)、上海市商務(wù)委員會(huì)、上海市教育委員會(huì)、上海市科學(xué)技術(shù)委員會(huì)指導(dǎo),東浩蘭生(集團(tuán))有限公司主辦,東浩蘭生會(huì)展集團(tuán)上海工業(yè)商務(wù)展覽有...

關(guān)鍵字: 電子 BSP 芯片 自動(dòng)駕駛
關(guān)閉