<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于PIC18單片機的新穎Bootloader設計

基于PIC18單片機的新穎Bootloader設計

作者: 時(shí)間:2013-02-16 來(lái)源:網(wǎng)絡(luò ) 收藏

基于PIC18單片機的新穎Bootloader設計

圖1 主程序流程

更新系統映象系統流程

圖2 更新系統映象系統流程

  1.4 PC端操作界面的設計

  PC端操作界面主要用來(lái)實(shí)現以下幾個(gè)功能:

 ?、俅趨翟O置。設置串口通道號、數據位數、波特率等參數。

 ?、谟脩?hù)登錄。輸入用戶(hù)名、密碼,與下位機進(jìn)行驗證。

 ?、圻x擇系統映像文件。選擇系統映像HEX文件,逐行讀入并通過(guò)串口發(fā)送給下位機,如有錯誤重新選擇。

 ?、芴崾居脩?hù)系統更新完成(或失?。?。顯示系統更新進(jìn)度,提示用戶(hù)系統更新結果。

  2 設計中的幾項關(guān)鍵技術(shù)及注意事項

 ?、偃绻淮涡詫EX文件中全部數據通過(guò)串口發(fā)送給目標芯片,則在通信過(guò)程中發(fā)生一字節的錯誤傳輸,就將導致全部數據需要重新發(fā)送;并且還要考慮到芯片的寫(xiě)Flash處理速度與串口速率的大小關(guān)系,否則將導致接收數據的丟失。為加強通信的可靠性與串口速率的可變性,本文所設計的采用半雙工的通信模式與上位機進(jìn)行通信:以HEX文件的一行作為一幀數據,每幀數據校驗結束后向上位機發(fā)送回復數據,上位機根據回復數據判斷發(fā)送數據幀的正誤來(lái)選擇重發(fā)或繼續發(fā)送下一幀;并且在進(jìn)行升級之前與上位機通信進(jìn)行用戶(hù)名和密碼的核對,以確保當前的升級操作不是誤操作。

 ?、趯IC18系列的程序存儲器的寫(xiě)操作每次寫(xiě)入8字節的塊,并且程序Flash單位寫(xiě)入只能由1變?yōu)?。但是HEX文件的內容并不是按照需要生成的,每幀的數據長(cháng)度可以不同,相鄰幀的地址域的內容也可以不同。為此,在對程序存儲器進(jìn)行寫(xiě)操作時(shí),需要根據地址域內容將數據域內容以8字節為單位合并成數據塊,不足8字節的要填充0xFF。本文所設計的程序采用一個(gè)環(huán)形Buffer的結構體來(lái)實(shí)現這一操作:


 ?、坌酒哪J中斷向量的起始是0x08和0x18,這是不能改變的,要想改變中斷向量入口地址就要在這兩個(gè)地址位置添加跳轉指令,以跳轉到用戶(hù)程序的中斷向量入口地址。PIC18系列的程序存儲器的部分地址區域具有寫(xiě)保護性,為防止此區域之外的程序被擦除或改寫(xiě),需要對接收數據的地址域內容進(jìn)行判斷。如果小于用戶(hù)程序起始地址,則需要向上位機回復“寫(xiě)地址錯誤”,并丟棄當前數據幀。

  3.結語(yǔ)

  實(shí)驗證明,本文設計的Bootloader功能穩定,且控制方便,可根據用戶(hù)的需要靈活改變。譬如,在用戶(hù)程序中添加系統復位機制即可實(shí)現在線(xiàn)升級,為PC端操作界面添加網(wǎng)絡(luò )下載模塊即可實(shí)現系統升級,這對于嵌入式產(chǎn)品的發(fā)布和軟件升級極其重要。

參考文獻:

[1].Microchipdatasheethttp://www.dzsc.com/datasheet/Microchip_1097736.html.


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>