單擊“嵌入式大雜燴”,然后單擊“確定”。
上方,然后選擇“頂級(jí)公共帳戶”第一次查看編程說明!上一個(gè)注釋共享:STM32串行端口IAP共享。
其中,下載IAP程序是使用ISP下載。
這里的ISP是什么?在ISP模式下下載程序的原理ISP:在系統(tǒng)編程中,STM32F10xxx中有三種啟動(dòng)方法可用于在系統(tǒng)中進(jìn)行編程:在ISP模式下下載程序時(shí),需要將STM32的BOOT0引腳和BOOT1引腳設(shè)置為0,即從系統(tǒng)存儲(chǔ)(系統(tǒng)內(nèi)存)啟動(dòng)。
從系統(tǒng)內(nèi)存啟動(dòng)時(shí),為什么可以使用串行端口下載程序?這是因?yàn)镾T官員在芯片出廠之前已將引導(dǎo)加載程序(BootLoader程序)固化到該存儲(chǔ)區(qū)中。
對(duì)于STM32F103ZET6,系統(tǒng)存儲(chǔ)器的起始地址為0x1FFFF000,可在芯片手冊(cè)的存儲(chǔ)器映射中找到:它通過串行端口接收數(shù)據(jù)并將其寫入用戶閃存的起始地址(0x08000000)。
只能將其編程到該地址。
如果在keil中設(shè)置的地址不是該地址,則編譯后的文件將無法成功編程。
用戶閃存(即用戶閃存)同時(shí)也稱為主閃存。
該BootLoader程序的源代碼不是開源的,用戶無法對(duì)其進(jìn)行修改。
在上一筆記的IAP實(shí)驗(yàn)中,IAP程序是通過FlyMCU軟件刻錄的,刻錄的地址為0x08000000。
注意:STM32固化的BootLoader的不同系列和不同型號(hào)是不同的,即所使用的通信接口是不同的。
例如,STM32F1xxx系列僅支持USART1:STM32F4xxx系列僅支持USART1,USART3,CAN2和其他接口:有關(guān)其他類型的BootLoader支持的接口,請(qǐng)參考AN2606文檔,鏈接:https://www.st.com/內(nèi)容/ ccc /資源/技術(shù)/document/application_note/b9/9b/16/3a/12/1e/40/0c/CD00167594.pdf/files/CD00167594.pdf/jcr:content/translations/en.CD00167594.pdf此處,數(shù)據(jù)協(xié)議的內(nèi)容不是“開始討論”,有興趣的朋友可以做自己的研究。
IAP和ISP有什么區(qū)別?從基本功能的角度來看,IAP程序和ISP程序似乎做相同的事情,它們都是引導(dǎo)加載程序,因此Internet上有很多文章將IAP程序和ISP程序都稱為BootLoader程序。
注意區(qū)別。
但是,ISP和IAP仍然有些不同。
STM32內(nèi)部閃存分為兩部分,系統(tǒng)閃存和用戶閃存。
引導(dǎo)引腳用于控制上電后執(zhí)行Flash中的哪個(gè)程序。
ST正式編譯的Bootloader程序(ISP程序)存儲(chǔ)在System Flash中,我們無法對(duì)其進(jìn)行更改。
User Flash是我們可以使用的Flash空間,我們編寫的代碼將刻錄到User Flash中。
我們可以將用戶Flash分為兩部分。
第一部分用于編寫我們編寫的IAP程序,而第二部分用于編寫我們編寫的應(yīng)用程序。
其中,IAP程序用于更新我們的應(yīng)用程序。
ISP程序用于更新我們寫到地址0x08000000的程序。
如果我們產(chǎn)品中的程序具有IAP程序+應(yīng)用程序,則存儲(chǔ)在地址0x08000000的程序是IAP程序。
ISP程序,IAP程序和應(yīng)用程序之間的關(guān)系的示意圖如下:如果我們產(chǎn)品中的程序只是應(yīng)用程序,則存儲(chǔ)在地址0x08000000的程序就是應(yīng)用程序。
ISP程序和應(yīng)用程序之間的關(guān)系示意圖如下:結(jié)束:以上是這次共享的注釋,如有錯(cuò)誤,歡迎您!如果此說明對(duì)您有所幫助,請(qǐng)收集,轉(zhuǎn)發(fā)并觀看它?我想您會(huì)喜歡:“ STM32串行端口IAP共享”; C語言代碼優(yōu)化的一些技術(shù)(4)[RT-Thread]線程的基本知識(shí)“替換串行端口打印,嵌入式中打印調(diào)試的另一種方法”我的個(gè)人博客:https://zhengnianli.github.io