亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        STM32用戶基于IAP的程序更新技術(shù)*

        2012-06-25 02:45:50李興鶴蔡亮宋吉波王鵬金辛海時(shí)迎亮
        關(guān)鍵詞:用戶程序微控制器指針

        李興鶴,蔡亮,宋吉波,王鵬,金辛海,時(shí)迎亮

        (1.上海辛格林納新時(shí)達(dá)電機(jī)有限公司 研發(fā)中心,上海 201802;2.上海新時(shí)達(dá)電氣股份有限公司)

        李興鶴(工程師),從事嵌入式系統(tǒng)、變頻技術(shù)、新能源技術(shù)、電梯控制系統(tǒng)等方面的研究。

        引 言

        嵌入式系統(tǒng)的開(kāi)發(fā)最終需要將編譯好的代碼下載到具體的微控制器芯片上,而不同廠家的微控制器芯片有不同的下載方式。隨著技術(shù)的發(fā)展和應(yīng)用需求的更新,用戶程序加載趨向于在線編程的方式,越來(lái)越多的芯片公司提供和開(kāi)放了用戶更新程序的接口與方式,以提高整個(gè)系統(tǒng)的可靠性和可維護(hù)性。ST公司基于Cortex-M3內(nèi)核的STM32系列產(chǎn)品得到了廣泛應(yīng)用,在許多基于STM32系列產(chǎn)品的開(kāi)發(fā)過(guò)程中不可避免要進(jìn)行用戶程序的加載。本文在介紹IAP技術(shù)原理基礎(chǔ)上,詳細(xì)論述使用該技術(shù)在STM32F103ZE芯片上實(shí)現(xiàn)用戶在線更新功能的方法,并具體分析其中可能發(fā)生異常的原因。

        1 背景綜述

        1.1 主要程序更新方式

        目前,除了直接通過(guò)仿真器或燒錄器進(jìn)行程序更新方式外,主要有Bootloader技術(shù)、ISP技術(shù)以及IAP技術(shù)3種更新程序的方法。

        (1)Bootloader技術(shù)

        引導(dǎo)加載程序,是指系統(tǒng)加電時(shí),控制器將一段存儲(chǔ)在外部非易失性存儲(chǔ)器中的代碼載入到內(nèi)部高速存儲(chǔ)器單元(如片內(nèi)RAM)中執(zhí)行的過(guò)程。

        (2)ISP(In System Programming)技術(shù)

        MCU內(nèi)部自帶Bootloader,通過(guò)指定的方式激活,通過(guò)通信接口下載或擦除用戶代碼。需要有外部介入,靜態(tài)的,在用戶代碼沒(méi)有運(yùn)行時(shí)進(jìn)行下載。

        (3)IAP(In Application Programing)技術(shù)

        單片機(jī)內(nèi)部具有一些可擦寫(xiě)的非易失存儲(chǔ)器,如Flash。在微控制器獨(dú)立運(yùn)行時(shí),用戶利用自己編寫(xiě)的燒寫(xiě)程序通過(guò)通信下載或擦除自己的代碼。注意不具備IAP功能的單片機(jī)并不能對(duì)Flash的數(shù)據(jù)進(jìn)行修改。無(wú)需外部介入,動(dòng)態(tài)的,在用戶代碼運(yùn)行時(shí)進(jìn)行下載。

        1.2 STM32系列簡(jiǎn)介

        STM32系列微控制器基于Cortex-M3內(nèi)核,并在其架構(gòu)上進(jìn)行了多項(xiàng)改進(jìn),包括在提升性能的同時(shí)提高了代碼密度的Thumb-2指令集,以及大幅度提高中斷響應(yīng)的緊耦合嵌套向量中斷控制器,從而大大提高了處理速度,降低了系統(tǒng)功耗。使用新內(nèi)核的Thumb-2指令集,設(shè)計(jì)人員可以把代碼容量降低45%,幾乎把應(yīng)用軟件所需內(nèi)存容量降低了一半。此外,STM32提供豐富的外圍接口,目前廣泛應(yīng)用到工業(yè)用及家用安全設(shè)備、消防和暖氣通風(fēng)空調(diào)系統(tǒng)等,以及家電、消費(fèi)電子、低功耗的可便攜式設(shè)備等。本文以STM32F103ZE為例來(lái)研究及使用IAP技術(shù)。

        2 IAP技術(shù)

        2.1 IAP技術(shù)原理

        首先人為設(shè)定單片機(jī)內(nèi)部存儲(chǔ)區(qū)分為兩塊:其中一塊稱為Boot區(qū),用于存儲(chǔ)IAP功能程序代碼;另外一塊稱為常態(tài)存儲(chǔ)區(qū),用于存儲(chǔ)除IAP功能外的所有程序代碼。IAP技術(shù)指的是,MCU在運(yùn)行的狀態(tài)下,通過(guò)程序(PC)指針不斷讀取需要執(zhí)行的程序指令。正常情況下,PC指針只在常態(tài)存儲(chǔ)區(qū)內(nèi)移動(dòng),并讀取指令,如圖1所示。當(dāng)用戶需要更新或升級(jí)程序時(shí),程序指令會(huì)將PC指針跳轉(zhuǎn)至Boot區(qū)。這段存儲(chǔ)區(qū)的指令代碼的功能是,通過(guò)通信等方式接收用戶需要更新的程序數(shù)據(jù),并通過(guò)校驗(yàn)確認(rèn)接收到的程序數(shù)據(jù)正確后,根據(jù)約定的方式寫(xiě)入常態(tài)存儲(chǔ)區(qū),如圖2所示。當(dāng)完成用戶程序更新后,PC指針再跳回到常態(tài)存儲(chǔ)區(qū),開(kāi)始執(zhí)行存儲(chǔ)在其上的用戶程序,這樣便實(shí)現(xiàn)了IAP功能。

        圖1 通過(guò)PC指針讀取程序指令

        圖2 更新存儲(chǔ)區(qū)代碼

        2.2 IAP技術(shù)關(guān)鍵點(diǎn)

        通過(guò)研究IAP技術(shù)實(shí)現(xiàn)用戶程序更新的過(guò)程,不難發(fā)現(xiàn),在更新過(guò)程中必須保證PC指針在Boot區(qū)移動(dòng),而不能隨意跳轉(zhuǎn)至常態(tài)存儲(chǔ)區(qū)?;谶@個(gè)要求,結(jié)合微控制器原理可以得出需要特別注意的幾個(gè)關(guān)鍵點(diǎn)。

        (1)禁止中斷

        毫無(wú)疑問(wèn),中斷會(huì)使得PC指針跳轉(zhuǎn)至中斷服務(wù)程序入口地址,因此,在進(jìn)入Boot區(qū)前需要禁止所有中斷。

        (2)禁用底層外圍接口

        對(duì)于有些外圍接口,比如當(dāng)采用ADC+DMA的方式進(jìn)行多通道A/D采樣時(shí),采樣過(guò)程會(huì)按照預(yù)先設(shè)置的通道順序進(jìn)行A/D采樣。若在PC指針跳轉(zhuǎn)至Boot區(qū)前沒(méi)有禁用,則更新完程序跳回常態(tài)存儲(chǔ)區(qū)時(shí),其存儲(chǔ)A/D通道值就可能發(fā)生錯(cuò)位的情況。

        (3)使用實(shí)時(shí)操作系統(tǒng)

        如果使用具有搶占式RTOS(即硬實(shí)時(shí)操作系統(tǒng)),則需要禁止所有任務(wù),并且屏蔽所有的信號(hào)量及郵箱,以防止激活某個(gè)任務(wù),導(dǎo)致PC指針跳轉(zhuǎn)至常態(tài)存儲(chǔ)區(qū)。

        (4)使用看門狗

        在考慮導(dǎo)致PC指針跳轉(zhuǎn)的原因時(shí),看門狗很容易被忽略,而且很多芯片的看門狗一旦使能就不能禁用,所以不能通過(guò)禁用的方法達(dá)到目的。最安全的方法是,在Boot區(qū)中也加入看門狗的喂狗指令。特別要注意的是,當(dāng)需要擦除、寫(xiě)入大量Flash數(shù)據(jù)時(shí),需要對(duì)其過(guò)程所需時(shí)間進(jìn)行定量的估計(jì),有必要時(shí)可以在這個(gè)過(guò)程中多次喂狗。

        (5)存儲(chǔ)空間分配

        Boot區(qū)以及常態(tài)存儲(chǔ)區(qū)的大小可以人為分配,一般而言,盡可能使常態(tài)存儲(chǔ)區(qū)最大化,因?yàn)楫a(chǎn)品的功能是在該區(qū)域得到體現(xiàn);而B(niǎo)oot區(qū)盡可能使其代碼簡(jiǎn)潔,避免使用中斷以及復(fù)雜的底層驅(qū)動(dòng)及算法。

        2.3 IAP技術(shù)實(shí)現(xiàn)

        (1)關(guān)閉相關(guān)中斷及禁用相關(guān)外圍接口

        如定時(shí)器中斷、SysTick中斷、A/D中斷、外部I/O中斷等。

        (2)設(shè)定跳轉(zhuǎn)地址

        (3)喂狗并執(zhí)行跳轉(zhuǎn)

        (4)IAP代碼(Boot區(qū)代碼)

        只需要驅(qū)動(dòng)用到的底層接口,盡量不使用中斷,盡可能少地占用存儲(chǔ)空間,同時(shí)需要適時(shí)地喂狗。另外對(duì)該系列Flash操作會(huì)有所不同,比如STM32F103ZE執(zhí)行擦除操作時(shí),一頁(yè)為2KB,而SMT32F103VC6等芯片一頁(yè)為1KB,使用其他型號(hào)芯片時(shí)需要具體查閱相關(guān)數(shù)據(jù)手冊(cè)。

        3 總 結(jié)

        本文從分析IAP技術(shù)原理入手,詳細(xì)論述了利用IAP技術(shù)實(shí)現(xiàn)用戶程序更新的要點(diǎn)。另外,可以想象,如果Boot區(qū)加入TCP/IP協(xié)議連入互聯(lián)網(wǎng),即可借助網(wǎng)絡(luò)對(duì)產(chǎn)品進(jìn)行在線升級(jí),既可提高系統(tǒng)的可維護(hù)性,又可降低產(chǎn)品的維護(hù)成本,必將在未來(lái)得到更為廣泛的應(yīng)用。

        [1]意法Cortex-M3微控制器重塑 MCU 市場(chǎng)[OL].(2007-06-12) [2011-08 ]. http://www. eccn. com/design _2007061215020077.htm.

        [2]彭剛,春志強(qiáng).基于ARM Cortex-M3的STM32系列嵌入式微控制器應(yīng)用實(shí)踐[M].北京:電子工業(yè)出版社,2011:320-325.

        猜你喜歡
        用戶程序微控制器指針
        變速箱控制系統(tǒng)Bootloader設(shè)計(jì)與實(shí)現(xiàn)
        偷指針的人
        嵌入式設(shè)備遠(yuǎn)程升級(jí)方案設(shè)計(jì)
        物聯(lián)網(wǎng)技術(shù)在微控制器實(shí)驗(yàn)教學(xué)中的應(yīng)用
        電子制作(2017年14期)2017-12-18 07:07:58
        為什么表的指針都按照順時(shí)針?lè)较蜣D(zhuǎn)動(dòng)
        基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
        C8051F410單片機(jī)BootLoader的實(shí)現(xiàn)
        Atmel針對(duì)新一代物聯(lián)網(wǎng)應(yīng)用發(fā)布全新32位微控制器
        最新STM32設(shè)計(jì)工具增加對(duì)混合信號(hào)微控制器的支持
        ARM Cortex—MO/MO+單片機(jī)的指針變量替換方法
        亚洲av中文无码乱人伦在线播放| 免费毛片一区二区三区女同 | 一区二区三区四区免费国产视频| 91在线视频在线视频| 国内精品视频在线播放不卡 | 久久久久久无中无码| 9l国产自产一区二区三区| 国产精品偷窥熟女精品视频| 国产精品无码久久久久| 欧美久久久久中文字幕| 日本一曲二曲三曲在线| 中文有码亚洲制服av片| 日本少妇被黑人xxxxx| 国产亚洲精品国产福利在线观看| 一区二区三区四区免费国产视频| 人人妻人人澡人人爽欧美一区| 国产97在线 | 免费| 国产成人av在线影院无毒| 在线观看亚洲视频一区二区| 亚洲中文字幕无码av永久 | 无码国产精品久久一区免费| av人摸人人人澡人人超碰小说| 国产av大片在线观看| 好看的日韩精品视频在线| 狠狠躁天天躁中文字幕| 久久久久成人亚洲综合精品| 中文字幕人妻少妇久久| 青青草精品视频在线播放| 97久久精品亚洲中文字幕无码 | av免费在线播放一区二区| 欧美精品一区二区精品久久| www插插插无码免费视频网站| 国产成人精品cao在线| 国产不卡在线观看视频| 国产无遮挡又黄又爽免费网站| 最新无码国产在线播放| 精品人妻av区二区三区| 无套内谢老熟女| 久久97精品久久久久久久不卡| 亚洲中文字幕黄色小视频| 在线免费观看黄色国产强暴av|