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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Bootloader技術(shù)在數(shù)字信號(hào)控制器中的應(yīng)用

          Bootloader技術(shù)在數(shù)字信號(hào)控制器中的應(yīng)用

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

          如前文所述, PC 機(jī)發(fā)送的數(shù)據(jù)是從. hex 文件中提取的, PC機(jī)首先發(fā)送擴(kuò)展地址部分, 下位機(jī)接收保存后會(huì)繼續(xù)等待接收32個(gè)指令字( 96字節(jié))并保存到RAM 中, 然后根據(jù)接收到的地址擦除FLASH 存儲(chǔ)器中的1行, 擦除FLASH 是通過(guò)調(diào)用匯編函數(shù)E raseMem來(lái)進(jìn)行的, 函數(shù)原型如下:

          mov# 0x4041, NVMCON ; 使NVMCON 寄存器為擦除FLASH模式

          mov # 0x55, W 0

          movW0, NVMKEY

          mov # 0xAA, W0

          movW 0, NVMKEY ; 將0x55、0xAA 寫(xiě)入密鑰寄存器

          bsetNVMCON, #WR ; 開(kāi)始擦除

          nop

          nop

          return

          擦除FLASH存儲(chǔ)器的一行后需要把接收到的32個(gè)指令字寫(xiě)入到FLASH 存儲(chǔ)器寫(xiě)鎖存器中, 這一過(guò)程可以通過(guò)函數(shù)W riteLatch 實(shí)現(xiàn), 函數(shù)原型如下:

          movW0, TBLPAG ; 寫(xiě)表寄存器

          tb lw tlW3, [W1]

          tb lw thW2, [W1] ; 寫(xiě)入鎖存器

          return

          這一步完成之后就可以將接收到的32個(gè)指令字寫(xiě)入FLASH 存儲(chǔ)器了, 其方法與擦除FLASH 類(lèi)似, 寫(xiě)完一行后向PC 機(jī)發(fā)送應(yīng)答。待FLASH 存儲(chǔ)器全部寫(xiě)完之后, PC 機(jī)會(huì)發(fā)送表示結(jié)束下載的命令, 下位機(jī)接收后退出Boo tloader程序, 進(jìn)入新的用戶(hù)程序繼續(xù)運(yùn)行, 從而完成整個(gè)在線(xiàn)自編程過(guò)程。

          7 結(jié)束語(yǔ)

          dsPIC30F 系列Boot loader實(shí)現(xiàn)用戶(hù)程序在線(xiàn)自編程升級(jí)的方法具有很高的價(jià)值, 尤其是于自主開(kāi)發(fā)的工業(yè)自動(dòng)化儀表時(shí)給用戶(hù)程序的現(xiàn)場(chǎng)升級(jí)帶來(lái)了極大的方便。該方法已經(jīng)成功用于電子皮帶秤控制儀表系統(tǒng)中, 達(dá)到了提高系統(tǒng)軟件升級(jí)的更換效率、降低升級(jí)費(fèi)用、提高產(chǎn)品制造商對(duì)用戶(hù)的服務(wù)質(zhì)量滿(mǎn)意度的目的。方法雖然僅以dsPIC30F系列芯片為例, 但對(duì)于M icrochip公司生產(chǎn)的其它系列芯片只要略加修改同樣適用。


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

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();