新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > stm32 IAP 實現

        stm32 IAP 實現

        作者: 時間:2016-11-13 來源:網絡 收藏
        在對STM32存儲器結構及相關知識了解后,我們就可以進行IAP的設計了。

        在上一篇筆記中,進行了一個簡單的IAP程序結構,以及和User App程序的相互聯系的系統設計。

        本文引用地址:http://www.104case.com/article/201611/316280.htm

        本篇對IAP實現的細節進行了較為詳細的論述,包括源碼結構的設計;我們從上位機(PC—C#)和下位機(MCU—C)共同描述IAP功能的實現過程。

        1 STM32的IAP實現平臺

        IAP功能的實現需要兩個方面(上位機和STM32上的IAP程序)的密切合作。因此,我們除了需要知道STM32芯片上的IAP程序結構,我們還需要了解上位機的程序結構,這樣才能使上位機和STM32很好的相互工作。

        下位機(指的是STM32構成的單片機系統):

        本下位機系統使用C語言進行編程,項目功能是實現IAP(In Application Programming);

        下位機使用IAR Embedded Workbench for ARM 6.10 Kick start開發環境;

        使用STM32F103C8-PKT開發板進行調試和驗證;

        上位機(指的是PC構成的PC系統):

        本上位機系統使用C#語言進行編程,項目功能是配合下位機實現IAP;

        上位機使用Visual Studio 2008開發環境;

        使用一般的PC機進行調試和驗證;

        上位機和下位機通訊(串口通訊):

        上下位機之間通過串口進行通訊;

        上位及通訊一定的通訊協議將需要更新的程序通過串口傳輸給IAP程序,再由IAP程序將數據寫到用戶的Flash區域;從而達到IAP功能,如圖所示:

        2 STM32和上位機的通訊協議

        如何將更新程序的bin文件數據傳輸到STM32系統內部?

        如何將串口接收到的一連串數據給解析出來,進行有效數據的寫Flash?

        如何得知數據傳輸的開始?

        又如何得知數據傳輸的結束?

        ……

        以上的種種疑惑,都是我們必須要關心的問題;而這些問題都隱藏著一樣的本質——如何獲取PC端有用的信息?

        對于如何獲取有用信息,有幾個問題需要考慮:

        通過何種方式獲取?——我們采用USART;

        何種數據才是有用的?——我們指定一個簡單的協議;

        又是如何實現IAP程序和APP程序的切換的;

        在硬件上,USART的實現較為簡單;我們重點在于協議的設計和理解;

        3 STM32—IAP程序的實現

        1、IAP通過USART和上位機通訊,實現數據的下發和在應用編程;如圖:

        2、上位機和STM32系統USART之間通過一個簡單的協議進行連接;

        當連續收到4次0xBB后,表示開始接收用戶代碼;

        當連續收到4次0xEE后,表示結束接收用戶代碼;如圖:

        3、IAP程序位于Flash啟動的起始地點,判斷相應標志,是更新程序,或是運行用戶程序;IAP程序更新之后,設定標志,跳轉到用戶程序區去,完成IAP,實現新的用戶功能;如圖:

        4 STM32—上位機程序的實現

        如圖,為一個簡單的上位機界面:

        上位機主要分為兩個部分:

        1、串口配置部分:

        選擇端口、波特率,和數據類型,點擊USART Open按鈕;

        2、串口通訊部分:

        通訊部分,可以通過三步進行一次IAP功能的實現;

        A、發送起始字節——0xBBBBBBBB

        B、發送用戶代碼——通過轉換Hex文件獲取

        C、發送結束字節——0xEEEEEEEE

        5上位機和STM32實現IAP功能的注意

        1、上位機和STM32系統需要有相對應符合的通訊協議;

        2、上位機和STM32系統的設計,要考慮到程序處理時間;防止時間的因素而無法響應;

        3、為提高可靠性和安全性,需要設計更為友好的通訊協議;

        至此,關于《STM32實現IAP(上位機和IAP程序設計)》知識已經結束;

        至此,關于STM32存儲器知識等三篇筆記都已經結束。

        完成STM32存儲器知識過程中,一共參考了以下官方文檔:

        《RM0008 Reference manual》

        《Cortex-M3技術參考手冊》

        《PM0042 Programming manual:STM32F10xxx Flash programming》

        《AN2557 Application note:STM32F10x in-application programming using the USART》

        等等;

        另外也參考了很多無私網友的奉獻,在此感謝。

        關于我的STM32存儲器知識共有三篇文章,分別是:

        stm32的存儲器》

        《STM32存儲器知識的相關應用(IAP、Bit Banding)》

        《STM32實現IAP(上位機和IAP程序設計)》



        關鍵詞: stm32IA

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 镇赉县| 钟祥市| 凭祥市| 延川县| 象州县| 巴彦淖尔市| 蛟河市| 富顺县| 赞皇县| 海宁市| 监利县| 惠东县| 峨眉山市| 潞西市| 策勒县| 彝良县| 和静县| 屏东县| 赤峰市| 吉木萨尔县| 天气| 太保市| 西昌市| 泗洪县| 固原市| 济宁市| 包头市| 理塘县| 吴桥县| 定日县| 德清县| 封开县| 晋州市| 绥芬河市| 山西省| 桦川县| 澄江县| 长武县| 石景山区| 明水县| 汶上县|