stm32数据手册boot_STM32的ISP下载的原理是什么呢?
點擊上方「嵌入式大雜燴」,選擇「置頂公眾號」第一時間查看編程筆記!
上一篇筆記分享了:STM32串口IAP分享。其中,下載IAP程序是用ISP的方式進行下載。這里的ISP又是什么呢?
ISP方式下載程序原理
ISP:In System Programing,在系統中編程
在STM32F10xxx里有三種啟動方式:
以ISP方式下載程序時需要把STM32的BOOT0引腳置1、BOOT1引腳置0,即從系統存儲區(System Memory)啟動。
為什么設置從System Memory啟動就可以使用串口來下載我們的程序呢?那是因為在芯片出廠前ST官方已經把一段自舉程序(BootLoader程序)固化到這一塊存儲區。
對于STM32F103ZET6來說,System Memory的起始地址為0x1FFFF000,可在芯片手冊的內存映射圖里找到:
其通過串口來接收數據并燒寫到用戶閃存存儲器的起始地址(0x08000000)。只能燒寫到這個地址,若keil里設置的地址不是這個地址,則編譯出來的文件將燒錄不成功。
用戶閃存,即User Flash,同時也稱為Main Flash。
這一段BootLoader程序源碼是沒有開源出來的,用戶是不可修改的。我們在上一篇筆記的IAP實驗中,IAP程序通過FlyMCU軟件進行燒錄,燒錄的地址就是0x08000000。
注意:不同系列不同型號的STM32固化的BootLoader是不同的,即使用的通訊接口是不同的。如STM32F1xxx系列只支持USART1:
STM32F4xxx系列只支持USART1、USART3、CAN2等接口:
其他型號的BootLoader支持的接口可查看AN2606文檔,鏈接:
https://www.st.com/content/ccc/resource/technical/document/application_note/b9/9b/16/3a/12/1e/40/0c/CD00167594.pdf/files/CD00167594.pdf/jcr:content/translations/en.CD00167594.pdf這里,關于數據協議的內容不展開討論,有興趣的朋友可自行研究。
IAP與ISP有什么不同?
從基本功能來看,IAP程序與ISP程序所做的事情好像是一樣的,都是引導加載程序,所以網上有很多文章把IAP程序與ISP程序都稱為BootLoader程序,要注意區分。
但是,ISP與IAP還是有點區別的。
STM32內部Flash分為兩部分,System Flash和User Flash。上電之后執行哪個Flash里的程序有boot腳來控制。
System Flash內存放的是ST官方編寫的自舉程序(ISP程序),我們是沒有辦法改變的。
User Flash是我們可以使用的Flash空間,我們編寫的代碼就是要燒錄到User Flash中。
我們可以把User Flash分為兩部分,前面一部分空間用于燒寫我們編寫的IAP程序,后面一部分用于燒寫我們編寫的應用程序。其中,IAP程序用于更新我們的應用程序。
ISP程序用于把我們編寫的程序更新到0x08000000地址上,如果我們的產品中的程序有IAP程序+應用程序,則此時0x08000000地址存放的程序就是IAP程序。ISP程序、IAP程序、應用程序的關系示意圖如下:
如果我們的產品中的程序只有應用程序,則此時0x08000000地址存放的程序就是應用程序。ISP程序、應用程序的關系示意圖如下:
End:以上就是本次的筆記分享,如有錯誤,歡迎之處!如果這篇筆記對你有幫助的話,歡迎收藏、轉發、在看~
猜你喜歡:
《STM32串口IAP分享》
C語言代碼優化的一些技巧(四)
【RT-Thread】線程的基本知識
《替代串口打印,嵌入式中另一種打印調試的方法》
我的個人博客:
https://zhengnianli.github.io
總結
以上是生活随笔為你收集整理的stm32数据手册boot_STM32的ISP下载的原理是什么呢?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: worknc的后处理如何安装_UG NX
- 下一篇: ef 数据迁移mysql_07116.3