<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于GPRS的51單片機固件升級系統(tǒng)設(shè)計

          基于GPRS的51單片機固件升級系統(tǒng)設(shè)計

          作者: 時間:2011-11-22 來源:網(wǎng)絡(luò) 收藏

          2.1 升級系統(tǒng)軟件設(shè)計
          本系統(tǒng)軟件由兩部分組成:主程序和升級程序,分別對應(yīng)于Main工程和Update工程。Main工程負責與遠端服務(wù)器進行通信,接收服務(wù)器發(fā)送的指令并進行相應(yīng)操作;而Update工程編譯、鏈接時,在其編譯器鏈接選項中設(shè)置CODE(OxE000,PR?MAIN?UPDATE(0xE000)),可將Upd-ate工程編譯、鏈接后生成的hex文件燒寫到單片機內(nèi)部Flash以0xE000作為起始地址處,同時默認地將Main工程編譯、鏈接生成的二進制文件燒寫到內(nèi)部Flash的起始地址處。單片機在執(zhí)行主程序過程中,檢測到升級標志置1后,單片機跳轉(zhuǎn)到升級程序地址處執(zhí)行固件升級程序;升級完畢后,復(fù)位單片機,程序又從內(nèi)部Flash的零地址開始執(zhí)行更新的固件程序。圖4為主程序流程,圖5為相應(yīng)的固件升級程序流程。主程序在運行過程中受遠程服務(wù)器的實時控制。當固件程序需要更新時,在服務(wù)器端將準備更新的固件編譯、鏈接后生成的hex或bin文件放入某一固定目錄內(nèi),啟用FTP服務(wù)器(如FtpMan),通過TCP/IP協(xié)議發(fā)送遠程升級指令給測試終端;終端收到升級指令后啟動相應(yīng)的FTP接收功能,將遠端文件分解成多個數(shù)據(jù)包并逐個存儲在外部Flash中;存儲完畢后,主程序會對該接收文件進行CRC校驗,若校驗無誤,則通過函數(shù)指針跳轉(zhuǎn)到升級程序功能區(qū),啟動升級程序,將二進制文件從外部Flash中轉(zhuǎn)移到內(nèi)部Flash對應(yīng)的地址空間中去。單片機復(fù)位重啟后,就可以從內(nèi)部Flash的起始地址處執(zhí)行更新完畢的程序。


          2.2 函數(shù)指針應(yīng)用
          當主程序檢測到升級標志后,主程序跳轉(zhuǎn)到升級程序地址處執(zhí)行升級固件程序,此處使用了函數(shù)指針的功能。

          結(jié)語
          本文設(shè)計了基于網(wǎng)絡(luò)傳輸?shù)慕K端,給出了合理的芯片選型,以及獨立的固件升級程序。該升級系統(tǒng)已應(yīng)用到實際產(chǎn)品應(yīng)用中,并取得了很好的效果。


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();