我是第一次翻譯英文手冊,知道自己有很多地方翻譯的很稀爛,希望高手可以給與指導,謝謝!
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流程圖。
3. 運行IAP驅動
3.1 配置超級終端
用戶需要使用一個PC端的超級終端或者其他支持ymodem 協議的終端程序,才能運行IAP。在這個文檔中使用超級終端。圖2是配置超級終端。
圖2是COM端口屬性
上圖以115200bps波特率作爲例子。
用戶一定要注意系統時鐘頻率。爲了保證串口通信成功,終端應用中的系統時鐘頻率一定要保證波特率爲115200bps。
3.2 執行IAP驅動
作爲演示例子,在本應用手冊裏是按下一個與引腳連接的按鈕來啓動IAP驅動。
通過按下復位按鈕,用戶可以運行IAP驅動來給STM32F4xx的內部閃存存儲器重編程。使用按鈕不是強制性的;用戶也可以爲這個有效引腳提供一個信號。 表1 : STM3 2 F4 x x IAP 實現。;
4.IAP 驅動菜單
在window超級終端上面運行IAP顯示下面的菜單。
圖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
圖4 當STM32F4xx的內部閃存存儲器寫保護時的IAP驅動菜單
在下載新程序之前,必須要失能寫保護。可以按下鍵盤4來做到這個。失能寫保護和重載新的選項字節值時,一定要系統復位。從復位恢復後,如果按下了這個按鈕,圖3中的菜單就會顯示。
注意:在這個應用中,不支持讀保護,用戶需要驗證這個閃存存儲器沒有讀保護。
5.STM32F4xx IAP實現總結
表1 做了一個STM32F4xx IAP實現總結
表1 STM32F4xx IAP實現
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應用。