前言
IAP 是 In Application Programing 的首字母縮寫(xiě),在應(yīng)用編程,即在程序運(yùn)行的過(guò)程中進(jìn)行編程(升級(jí)程序, 更新固件)。IAP 是用戶自己的程序在運(yùn)行過(guò)程中對(duì) Flash 部分區(qū)域進(jìn)行燒寫(xiě),目的是為了在產(chǎn)品發(fā)布后可以方便地通過(guò) 預(yù)留的通信口對(duì)產(chǎn)品中的固件程序進(jìn)行更新升級(jí)。
1
功能實(shí)現(xiàn)
IAP 功能的實(shí)現(xiàn),一般將程序分為兩個(gè)部分,即:Bootloader 和 APP。Bootloader 程序用于上電時(shí)判斷程 序是進(jìn)入 IAP 升級(jí)流程還是進(jìn)入 APP 應(yīng)用程序執(zhí)行過(guò)程。其一般放置在 FLASH 的開(kāi)始部分,如下圖示:
CW32F030 的 Flash 起始地址為 0x00000000,劃分 0x00000000 ~ 0x00001FFFF 這 8Kbyte 的空間用于存放 Bootloader 程序,APP 的起始地址選擇為 0x00002000。
CW32F030 采用 ARM? Cortex?-M0+ 內(nèi)核,具有向量表偏移寄存器 VTOR,故其從 Bootloader 中實(shí)現(xiàn)向 APP 中跳轉(zhuǎn)較為簡(jiǎn)單,僅設(shè)置向量表偏移即可。
本應(yīng)用中 Bootloader 采用 UART1 作為 IAP 的通訊接口,以 Ymodem 協(xié)議進(jìn)行文件的傳輸。APP 程序通過(guò) SYSTICK 定時(shí)器計(jì)時(shí),并通過(guò)中斷的方式每 200ms 對(duì)口線 PB09 翻轉(zhuǎn)一次,驅(qū)動(dòng) LED1 閃爍。
2
Bootloader 程序設(shè)計(jì)
2.1參考代碼
2.2程序編譯
以 MDK-ARM 為例,編譯時(shí)注意如下選項(xiàng):
1. 設(shè) 置 Bootloader 程 序 的 起 始 地 址 和 占 用 ROM(FLASH) 空 間 的 大 小, 本 例 中 Bootloader 從 地 址 0x00000000 處執(zhí)行,占用 7.46Kbyte 的空間,故分配 8Kbyte(size=0x2000)的 FLASH 空間保留給 bootloader。如下圖:
2. 鏈接時(shí),使用 IDE 的對(duì)話框配置,如下圖:
3
APP 程序設(shè)計(jì)
APP 程序可以先按正常程序的設(shè)計(jì)流程進(jìn)行設(shè)計(jì)和調(diào)試,等調(diào)試測(cè)試通過(guò)后,需要進(jìn)行如下的修改:
1. 在對(duì)系統(tǒng)初始化時(shí),修改中斷向量表的偏移地址
如下圖將 VECT_TAB_OFFSET 修改為 0x00002000,這個(gè)偏移量就是用戶的程序準(zhǔn)備在 FLASH 中存放 的地址,本例設(shè)置為 0x00002000。這樣用戶程序的中斷向量表就被重定位到 0x00002000 處,與 ARM? Cortex?-M0+ 內(nèi)核默認(rèn)的中斷向量表地址 0x00000000 相區(qū)分。
2. 修改編譯配置
如下圖,START 填入的值,即為 APP 程序在 FLASH 中存放的起始地址,也是中斷向量表需要偏移的位置。
3. 鏈接時(shí),使用 IDE 的對(duì)話框配置,如下圖:
4
演示
上 位 機(jī) 采 用 Windows 的 超 級(jí) 終 端, 設(shè) 置 串 口 波 特 率 為 115200bps,8 位 數(shù) 據(jù) 位,1 位 停 止 位。下 位 機(jī) CW32F030C8T6 StarKit 復(fù)位后,按下 KEY1 后,超級(jí)終端將有如下顯示:
屏幕不斷顯示字符“C”,提示下位機(jī)準(zhǔn)備接受文件。選擇“傳送”-“發(fā)送文件”,如下圖:
在出現(xiàn)的對(duì)話框中選取用戶的 APP 文件,并將協(xié)議選擇為“Ymodem”,并點(diǎn)擊“發(fā)送”,如下圖:
程序傳輸完成后,屏幕將有如下提示:
此時(shí),CW32F030C8T6 StarKit 板上的 LED1 將以 200ms 的間隔閃爍,說(shuō)明用戶程序已正常運(yùn)行。
-
微控制器
+關(guān)注
關(guān)注
48文章
7542瀏覽量
151311 -
單片機(jī)
+關(guān)注
關(guān)注
6035文章
44554瀏覽量
634614 -
mcu
+關(guān)注
關(guān)注
146文章
17123瀏覽量
350975 -
IAP
+關(guān)注
關(guān)注
2文章
163瀏覽量
24279
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論