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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > DAB接收機(jī)USB固件升級(jí)的實(shí)現(xiàn)

          DAB接收機(jī)USB固件升級(jí)的實(shí)現(xiàn)

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

            4.接收機(jī)

            4.1 接收機(jī)DFU實(shí)現(xiàn)

            接收機(jī)DFU的設(shè)計(jì)方案是通過(guò)接口的數(shù)據(jù)傳輸功能接收來(lái)自PC機(jī)的文件,利用MCU的在應(yīng)用編程(In ApplicationProgramming,IAP)功能來(lái)實(shí)現(xiàn)接收機(jī)的。

          IAP就是MCU通過(guò)對(duì)外接口(如USART,U S B,以太網(wǎng),無(wú)線信道等)接收升級(jí)固件,并在程序運(yùn)行過(guò)程中重新對(duì)內(nèi)部FLASH進(jìn)行編程的技術(shù)。如圖3所示為接收機(jī)IAP功能實(shí)現(xiàn)的示意圖。

            I A P的實(shí)現(xiàn)需要兩部分程序:引導(dǎo)程序、用戶程序。引導(dǎo)程序需要通過(guò)仿真器或通過(guò)在系統(tǒng)中編程(In System Programming,ISP)的方式燒寫(xiě)。用戶程序可以和引導(dǎo)程序一起燒寫(xiě),也可通過(guò)引導(dǎo)程序的IAP功能燒寫(xiě)。

            實(shí)現(xiàn)IAP功能的核心是引導(dǎo)程序,這部分程序主要負(fù)責(zé)與PC機(jī)同步,通過(guò)接收升級(jí)固件,并寫(xiě)入MCU指定的內(nèi)存地址,MCU復(fù)位后程序指針跳轉(zhuǎn)并執(zhí)行新用戶程序,從而完成接收機(jī)的固件升級(jí)。

            4.2 DFU模式進(jìn)入機(jī)制

            接收機(jī)有兩種工作模式:DFU升級(jí)模式和正常工作模式。兩種工作模式不能同時(shí)運(yùn)行,由于接收機(jī)在DFU升級(jí)模式下,就不再是能收聽(tīng)DAB節(jié)目的接收機(jī),而是相當(dāng)于EEPROM(電可擦可編程只讀存儲(chǔ)器)存在,所以接收機(jī)從正常工作模式進(jìn)入到DFU升級(jí)模式,需要外部提供一個(gè)中斷信號(hào)。

            在本文設(shè)計(jì)方案中,采用MCU的PC8端口對(duì)應(yīng)的按鍵作為同步按鍵,接收機(jī)進(jìn)行固件升級(jí)時(shí),MCU通過(guò)識(shí)別同步按鍵產(chǎn)生的中斷信號(hào)與PC機(jī)進(jìn)行同步,從而使接收機(jī)進(jìn)入DFU升級(jí)模式。

            4.3 接收機(jī)IAP程序設(shè)計(jì)

            接收機(jī)上電復(fù)位,MCU首先從地址0×8000004處取出復(fù)位中斷向量地址,程序指針跳轉(zhuǎn)執(zhí)行復(fù)位中斷服務(wù)程序。正常情況下,程序指針跳轉(zhuǎn)至用戶程序的main函數(shù)處執(zhí)行用戶程序,但接收機(jī)處于DFU升級(jí)模式下,程序指針將跳轉(zhuǎn)至引導(dǎo)程序的main函數(shù)處執(zhí)行IAP功能相關(guān)操作。如圖4所示為接收機(jī)實(shí)現(xiàn)DFU的程序流程圖。

            執(zhí)行IAP功能操作時(shí),MCU首先對(duì)USB接口進(jìn)行初始化,然后接收來(lái)自PC機(jī)的升級(jí)固件,并從內(nèi)部FLASH的0×8004000地址處開(kāi)始寫(xiě)入。

            寫(xiě)入過(guò)程完畢,MCU執(zhí)行復(fù)位操作,隨后接收機(jī)工作在正常運(yùn)行模式下,程序指針將跳轉(zhuǎn)至新寫(xiě)入用戶程序的復(fù)位中斷向量表處,取出復(fù)位中斷向量地址,執(zhí)行復(fù)位中斷響應(yīng)操作,并跳轉(zhuǎn)至新用戶程序的main函數(shù) 處開(kāi)始執(zhí)行。

            接收機(jī)再次上電,工作在正常運(yùn)行模式下,MCU的程序指針會(huì)直接跳轉(zhuǎn)至FLASH的0×8004000地址處即新用戶程序的main函數(shù)處,執(zhí)行新寫(xiě)入的用戶程序。

            4.4 程序存儲(chǔ)空間分配

            接收機(jī)是以STM32系列微控制器作為核心處理器,采用A R M公司專(zhuān)為要求高性能、低成本、低功耗的嵌入式應(yīng)用設(shè)計(jì)的C o r t e x – M 3內(nèi)核。S T M 3 2系列存儲(chǔ)器在Cortex-M3內(nèi)核的基礎(chǔ)上加入了FLASH、SRAM等,使其成為可以工作的處理芯片。

            STM32的存儲(chǔ)器地址空間總共劃分為8塊區(qū)域,每塊區(qū)域大小為512M.如圖5所示為STM32系列MCU存儲(chǔ)器第一塊區(qū)域的結(jié)構(gòu)示意圖。

            引導(dǎo)程序和用戶程序都存放在第一塊Flash區(qū)域內(nèi),引導(dǎo)程序存放在0×8000000-0 x 8 0 0 3 F F F區(qū)域,用戶程序存放在0 x 8 0 04000-0x801FFFF區(qū)域。為了使FLASH區(qū)域內(nèi)存放的引導(dǎo)程序和用戶程序代碼之間不發(fā)生沖突,新用戶程序的中斷向量表需要做重映射。

            固件升級(jí)完成后,在新用戶程序執(zhí)行過(guò)程中,F(xiàn)LASH區(qū)域的不同地址處存在兩個(gè)中斷向量表。當(dāng)有中斷請(qǐng)求來(lái)臨時(shí),程序指針仍然會(huì)跳轉(zhuǎn)至引導(dǎo)程序的中斷向量表處,而不是新用戶程序的中斷向量表處,這是由MCU內(nèi)部硬件工作機(jī)制決定的。



          評(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); })();