天天看點

STM32F40x/STM32F41x in-application programming using the USART中文版

我是第一次翻譯英文手冊,知道自己有很多地方翻譯的很稀爛,希望高手可以給與指導,謝謝!

AN3965

應用手冊

STM32F40x/STM32F41x 使用USART在應用程式設計

1.簡介

當大多數閃存存儲器系統被安裝在終端産品裡時,都要求有更新固件的能力。這種能力就叫做在應用程式設計能力。本應用手冊的目的就是為開發IAP應用程式提供一般指導方法。

STM32F4xx微控制器能夠運作使用者特定固件來執行嵌入在微控制器的閃存存儲器中的IAP。這種操作的特征是允許使用任何類型的通信協定來實作重程式設計過程。在本應用手冊中将使用USART來作為例子介紹。

2.IAP 概述

在意法半導體公司的STM324xG-EVAL 評估闆上實作了STM32F4xx 裝置。

2.1 原理

你應該通過JTAG/SWD接口,使用選擇好的開發工具鍊或者使用出廠嵌入到系統存儲區域的啟動加載程式來把IAP驅動程式程式設計到存儲存儲器基位址處。

IAP驅動需要使用USART的目的是:

l 從超級終端下載下傳二進制檔案到STM32F4xx的内部閃存存儲器中。

l 上傳STM32F4xx内部閃存存儲器内容到一個二進制檔案中。

l 執行使用者程式

2.2 IAP驅動說明

IAP驅動包括以下源檔案:

l main.c:在這裡USART序列槽初始化和RCC 電源初始化,然後,在menu.c檔案中 執行主菜單。

l menu.c:這個檔案包括主菜單程式。該主菜單提供了一些下載下傳新的二進制檔案的可   

選項,上載到内部閃存存儲器,執行已經下載下傳好的二進制檔案和失能使用者下載下傳他的二進制檔案頁的寫保護(如果他們寫保護了)。

l flash_if.c:這個檔案包含寫,擦除和失能内部閃存存儲器函數寫保護。

l common.c:這個檔案包含一些與從USART序列槽外設讀寫或者讀寫到USART串 口外設有關的函數。

l ymodem.c: 這個檔案通過YMODEM協定,從超級終端應用程式中接收和發送 資料,并且還要接收和發送資料到超級終端中。為了防止接收資料失敗,“接收文 件失敗”的錯誤資訊要顯示出來。如果資料能成功接收,這個資料要從合适的位址 程式設計到内部閃存存儲器中。為了檢查資料的完整性,需要在内部資料存儲器和閃存 存儲器之間做一個對比。如果有任何資料的不符,“驗證失敗”的錯誤資訊會顯示 出來。當圖像檔案的尺寸比允許的存儲器空間大時,或者當使用者中止這個任務時, 其它的錯誤資訊也同樣會顯示出來。

l STM32F4xx 标準外設庫。

使用者可以執行使用者應用程式,也可以按下連接配接某個引腳的按鈕執行IAP來實作重程式設計目的:

l 不按下複位按鈕:切換到使用者應用程式。

l 按下複位按鈕:顯示IAP主菜單。

參考Table 1: STM32F4xx IAP implementation 來擷取更多有關STM32F4xG-EVAL 開發闆上用來進入IAP模式的操作按鈕。

圖1是IAP流程圖。

STM32F40x/STM32F41x in-application programming using the USART中文版

3. 運作IAP驅動

3.1 配置超級終端

使用者需要使用一個PC端的超級終端或者其他支援ymodem 協定的終端程式,才能運作IAP。在這個文檔中使用超級終端。圖2是配置超級終端。

STM32F40x/STM32F41x in-application programming using the USART中文版

                                           圖2是COM端口屬性

    上圖以115200bps波特率作為例子。

使用者一定要注意系統時鐘頻率。為了保證序列槽通信成功,終端應用中的系統時鐘頻率一定要保證波特率為115200bps。

3.2 執行IAP驅動

作為示範例子,在本應用手冊裡是按下一個與引腳連接配接的按鈕來啟動IAP驅動。

通過按下複位按鈕,使用者可以運作IAP驅動來給STM32F4xx的内部閃存存儲器重程式設計。使用按鈕不是強制性的;使用者也可以為這個有效引腳提供一個信号。 表1 : STM3 2 F4 x x IAP 實作。;

4.IAP 驅動菜單

在window超級終端上面運作IAP顯示下面的菜單。

STM32F40x/STM32F41x in-application programming using the USART中文版

                              圖3  IAP在STM32F4xx閃存存儲器沒有受保護時的驅動菜單

4.1 下載下傳鏡像到内部閃存存儲器中

通過以下步驟,使用超級終端向STM32F4xx的内部閃存存儲器下載下傳二進制檔案。

       1. 按下鍵盤1選擇菜單下載下傳鏡像到STM32F4xx内部閃存中。

       2. 在傳輸菜單中選擇發送檔案。

       3. 在檔案名地方,選擇你想要下載下傳的二進制檔案的名字和路徑。

       4. 在協定清單中選擇Ymodem協定。

       5. 點選發送按鈕。

這樣,IAP驅動從已經定義好的基位址加載二進制檔案到STM32F4xx的内部閃存存儲器中,并且,在超級終端上顯示二進制檔案的名字和大小。更多有關基位址設定的内容可以參考第 6章,使用者變成條件。

4.2 從内部閃存存儲器上載鏡像

通過以下步驟,從使用者應用程式位址開始上載一個内部閃存存儲器的拷貝。

1.按下鍵盤2選擇菜單從上載STM32F4xx的内部閃存的鏡像。

2.選擇傳輸菜單接收檔案。

3.選擇儲存二進制檔案的檔案夾。

4.從協定清單中選擇Ymodem協定。

5.點選接收按鈕。

4.3 執行新程式

一旦新程式被加載,按下鍵盤3選擇菜單執行新程式,和執行這段代碼。

4.4 失能寫保護

當IAP啟動時,它會檢查閃存存儲器頁,使用者程式會被加載到那裡處理是否有任

何寫保護。如果有,菜單會顯示圖4

STM32F40x/STM32F41x in-application programming using the USART中文版

                         圖4 當STM32F4xx的内部閃存存儲器寫保護時的IAP驅動菜單

在下載下傳新程式之前,必須要失能寫保護。可以按下鍵盤4來做到這個。失能寫保護和重載新的選項位元組值時,一定要系統複位。從複位恢複後,如果按下了這個按鈕,圖3中的菜單就會顯示。

注意:在這個應用中,不支援讀保護,使用者需要驗證這個閃存存儲器沒有讀保護。

5.STM32F4xx IAP實作總結

表1 做了一個STM32F4xx IAP實作總結

                             表1  STM32F4xx IAP實作

STM32F40x/STM32F41x in-application programming using the USART中文版

1.在檔案flash_if.h中定義了使用者應用字單元位址: #define APPLICATION_ADDRESS 

0x8004000 。可以修改這個預設值為自己想要的值。

STM32F4xx IAP 程式包裡有以下内容:

l 源檔案和IAP程式預配置項目(在路徑Project\STM32F4xx_IAP的檔案夾下)

l 源檔案和預配置項目,這些項目可以使用IAP把建立好的應用加載到閃存存儲器中(在路徑Project\STM32F4xx_IAP\binary_template的檔案夾下)。

 在程式包中的Readme.txt檔案說明了怎樣一步步地實作這個IAP應用。

繼續閱讀