<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è) > 嵌入式系統 > 設計應用 > 基于IAP的STM32程序更新技術(shù)

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

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

引言

本文引用地址:http://dyxdggzs.com/article/170603.htm

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

1 背景綜述

1.1 主要程序更新方式

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

(1) Bootloader技術(shù)

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

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

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

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

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

1.2 STM32系列簡(jiǎn)介

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

2 IAP技術(shù)

2.1 IAP技術(shù)原理

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

圖1 通過(guò)PC指針讀取程序指令 圖2 更新存儲區代碼


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

關(guān)鍵詞: 更新 新技 程序 STM32 IAP 基于

評論


相關(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>