日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stm32F1使用SD卡实现IAP

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32F1使用SD卡实现IAP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在做一個項目,想使用uSD卡來實現在應用編程,首先需要一些知識

  我所使用的單片機是STM32F103ZE,內部flash,超始地址為0x8000000,大小為0x80000(0x80000/1024也就是512kByte)要實現IAP,那么我需要一個bootloader,什么是bootloader呢,其實可以理解為我們PC的引導程序,我們需要在flash中為這個引導程序分配一個空間,起始于flash的起始地址(0x80000000)結束于0x80007F00,這樣就分配了32KByte的空間,注意這個空間的分配一定要大于等于bootloader所占用的flash空間的大小。可以用stlink Utility來確定實際大小,也可以用編譯工具編譯結束后輸出的信息。

  除了bootloader還有最終單片機需要跑的用戶應用程序。這個程序就可以分配在bootloader之后的空間里,從0x80008000開始,到0x80080000全部可用。

了解了上面的信息,那么可以知道它的實現原理:單片機上電,運行bootloader,檢查某一個按鈕是否按下,如果按下,就做一些初始化的工作,比如SDIO,FATFS,完成后讀取SD卡中指定的BIN文件,并轉移到開始地址為0x80008000的FLASH中。如果按鈕沒有按下,bootloader去檢查0x80008000為首的FLASH區域是否有應用程序,如果有就執行。

else//未檢測到按鈕 {/*檢查用戶應用程序的起始地址是否有正確的內容*/if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20000000){/* Jump to user application */JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4);JumpToApplication = (pFunction) JumpAddress;/* Initialize user application's Stack Pointer */__set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);JumpToApplication();}}

?

PS:

  BIN文件的生成

在調試好應用程序之后,方可生成BIN文件拷貝到SD卡中,那么如何生成這個文件呢,還是MDK ARM工具 OPTION->USER->Run #1 打勾,填入

E:\Keil\ARM\ARMCC\bin\fromelf.exe --bin -o .\STM3210E_EVAL\STM3210E_EVAL.bin .\STM3210E_EVAL\STM3210E_EVAL.axf

以上具體的路徑根據自己的實際情況更改,只不過生志的BIN文件和AXF文件需要和MDK工程名一致這點要注意。

  更改生成文件的超始地址:

Option->Target->IROM1 的起始地址是否為0x80008000。

還有最重要的一點,用戶應用程序在調試好之后生成BIN文件之前,需要更改中斷向量表的偏移,使用STM32 HAL庫的情況下,找到system_stm32f1xx.c這個文件,修改宏定義:

#define VECT_TAB_OFFSET 0x0 /*!< Vector Table base offset field.
                  This value must be a multiple of 0x200. */

以上是默認值,這里需要更改為你所設置的偏移量,在這里就是用戶應用程序相對于基址0x80000000的偏移,用戶應用的基址是0x80008000,那么偏移量為0x8000所以這里改成:

#define VECT_TAB_OFFSET 0X8000

轉載于:https://www.cnblogs.com/jackweibe/p/5623670.html

總結

以上是生活随笔為你收集整理的stm32F1使用SD卡实现IAP的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。