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