一般只能通過三種方式下載程序到單片機中:1.JTAG 2.ISP 3.IAP 1.JTAG 要使用JTAG方式下載程序,不管是使用J-LINK、ULINK、ST-LINK,只需要把單片機上相應的程序下載留出來,然后和編程器連接上就可以下載程序了。 2.ISP 要通過ISP方式下載程序,需要用到單片機內部自帶的Bootloader,這個Bootloader是預制在單片機內部的,出廠自帶的,它在出廠后就不能修改或擦除。因此首先要將BOOT1=0 BOOT0=1,讓單片機從系統存儲器啟動,然后使用ISP下載軟件就可以下載程序了。STM32使用的ISP下載軟件是mcuisp。ISP可以有很多種方式,比如串口、USB、CAN。 引用下面: “ STM32根據FLASH主存儲塊容量、頁面的不同,系統存儲器的不同,分為小容量、中容量、大容量、互聯型,共四類產品。 小容量產品主存儲塊1-32KB,每頁1KB。系統存儲器2KB。
中容量產品主存儲塊64-128KB,每頁1KB。系統存儲器2KB。
大容量產品主存儲塊256KB以上,每頁2KB。系統存儲器2KB。
互聯型產品主存儲塊256KB以上,每頁2KB。系統存儲器18KB。
對于具體一個產品屬于哪類,可以查數據手冊,或根據以下簡單的規則進行區分:
STM32F101xx、STM32F102xx 、STM32F103xx產品,根據其主存儲塊容量,一定是小容量、中容量、大容量產品中的一種,STM32F105xx、STM32F107xx是互聯型產品。
互聯型產品與其它三類的不同之處就是BootLoader的不同,小中大容量產品的BootLoader只有2KB,只能通過USART1進行ISP,而互聯型產品的BootLoader有18KB,能通過USAT1、4、CAN等多種方式進行ISP。小空量產品、中容量產品的BootLoader與大容量產品相同。 ” 3.IAP 引用正點原子《STM32 不完全手冊》的介紹 IAP(In Application Programming)即在應用編程,IAP 是用戶自己的程序在運行過程中對User Flash 的部分區域進行燒寫,目的是為了在產品發布后可以方便地通過預留的通信口對產品中的固件程序進行更新升級。 通常實現IAP 功能時,即用戶程序運行中作自身的更新操作,需要在設計固件程序時編寫兩個項目代碼,第一個項目程序不執行正常的功能操作,而只是通過某種通信方式(如USB、USART)接收程序或數據,執行對第二部分代碼的更新;第二個項目代碼才是真正的功能代碼。這兩部分項目代碼都同時燒錄在User Flash 中,當芯片上電后,首先是第一個項目代碼開始運行,它作如下操作:
1)檢查是否需要對第二部分代碼進行更新
2)如果不需要更新則轉到4)
3)執行更新操作
4)跳轉到第二部分代碼執行
第一部分代碼必須通過其它手段,如JTAG 或ISP 燒入;第二部分代碼可以使用第一部分代碼IAP 功能燒入,也可以和第一部分代碼一起燒入,以后需要程序更新時再通過第一部分IAP代碼更新。
我們將第一個項目代碼稱之為Bootloader 程序,第二個項目代碼稱之為APP 程序,他們存放在STM32 FLASH 的不同地址范圍,一般從最低地址區開始存放Bootloader,緊跟其后的就是APP 程序(注意,如果FLASH 容量足夠,是可以設計很多APP 程序的,本章我們只討論一個APP 程序的情況)。這樣我們就是要實現2 個程序:Bootloader 和APP。STM32 的APP 程序不僅可以放到FLASH 里面運行,也可以放到SRAM 里面運行
|