【概述】
本文將介紹廣芯微的8位MCU的IAP實現介紹及使用說明,通過IAP實驗演示如何通過IAP 更新用戶程序的流程步驟等。
【什么是IAP?】
IAP即為 In Application Programming(在應用中編程)。可以簡單理解為:在程序運行的過程中進行編程(升級程序,更新固件)。IAP是用戶自己的程序在運行過程中對User Flash的部分區域進行燒寫,目的是為了在產品發布后可以方便地通過預留的通信口對產品中的固件程序進行更新升級。
IAP的通信口有許多種:UART串口、I2C、SPI......等。按理說只要能傳輸數據的通信口都能實現IAP的功能。本文所使用的是UART方式的IAP。
【IAP實現介紹】
本文實驗以UM8004為例,flash大小為16K。UM8004的中斷向量表以及IAP固件程序存放到0x0000-0x1400區域,在之后的更新中不會對以該區域空間進行擦寫。用戶APP應用程序存放在從0x1400-0x3FFF的空間。每次需要更新升級時,將這段空間進行擦寫,替換成更新的應用程序代碼。
使用IAP的上位機,通過IAP程序的處理函數,即可實現應用程序的更新升級。整個IAP的實現流程如下圖所示:
圖1 IAP功能流程圖
【IAP使用說明】
開發套件
IAP開發套件包含:
硬件開發板
軟件開發包
軟件開發包
軟件開發包中包含IAP工程、用戶APP應用程序例子程序、IAP使用說明、以及一些工具、上位機等等。
軟件開發包中的內容如下:
UM800Y_IAP:800Y的IAP工程。
UM800Y_APP:用戶應用程序示例Demo。
UM800Y_IAP使用說明.doc:IAP實現和使用的說明文檔。
UNIC_IAPTool.exe: IAP上位機。
UNIC_BootTool.exe:Bootloader的用戶下載工具。
Sscom5.13.1.exe:串口調試助手。
Hex2bin.exe:hex文件轉換bin文件工具。
JFlash.exe :合并bin或hex文件。
硬件環境
硬件環境如圖1所示:
硬件開發板和USB連接線
電腦(編譯代碼,下載程序代碼)
圖 2 硬件連接示意圖 軟件環境
Keil C51
工程說明
下面對本次實驗的工程進行簡單說明。 IAP工程:
(1) 需要在Target選項卡里設置我們IAP程序的起始地址與大小,如:
圖3 設置IAP程序的起始地址與大小
這里的IAP程序起始地址設為0x0000,大小設為0x1400,即IAP所需的FLASH空間為5KB。其中IAP所占空間的大小可根據IAP的實際大小進行修改。
(2) 設置IAP_Proc函數(IAP更新處理程序)的入口地址,用絕對地址定位的方法設置在某個固定的地址,下面以設置地址為0x0200為例。點開keil C51中的Options for Target,勾選下圖所示的地方。
圖4 勾選Use ExtendedLinker(LX51) instead of BL51
之后在下圖所示位置填入“?PR?IAP_PROC?IAP(C:0x0200)”, 如圖5,最后點擊ok。
圖5 設置IAP_Proc函數的地址為0x0200
(3) IAP源碼說明
圖6 IAP部分代碼
IAP源碼主要功能是當UART收到上位機的請求更新幀時,執行IAP_Proc()函數,實現應用程序的更新下載。
用戶APP工程:
(1)需要在Target選項卡里設置用戶應用APP程序的起始地址與大小,如:
圖7 設置IAP程序的起始地址與大小
這里的APP應用程序起始地址設為0x1400,由于UM8004的flash大小為16K,
用戶APP應用程序最大尺寸大小 = 16KB – IAP程序大小=0x2C00。
(2)用戶APP程序中需要添加用于檢查更新的函數。
本例程使用UART0的回調函數調用IAP處理函數去更新升級應用程序(UART0的波特率需和IAP程序的一致)。調用IAP處理函數的方法如下,根據5的配置來設置的IAP入口地址值(IAP函數的地址為0x0200)在用戶APP程序的檢查更新函數中,定義一個函數指針,指向該地址,當UART收到請求更新信息時用于跳轉,設置如圖8所示。
圖8 app程序中設置IAP處理函數跳轉
如需詳細代碼和程序移植可參考軟件開發包的工程以及說明文檔。
【IAP實驗】
IAP實驗說明
本次實驗使用UM8004進行演示,通過IAP 將原本Lptimer功能的用戶應用程序更新為ADC功能的用戶應用程序。
IAP實驗步驟
(1) 將IAP程序和用戶應用程序進行打包
首先打開J-Flash工具。點擊open data file,打開用戶app程序的bin或者hex文
件。這里選擇軟件開發包里UM800Y_APP文件夾中的Lptimer工程中的bin文件。(可通過hex2bin工具將hex轉換成bin文件)
圖 9 J-Flash工具
打開成功后點擊軟件左上角File,點擊Merge data file…
圖 10 J-Flash工具
然后選擇IAP工程的bin或者hex文件。
打開成功后,選擇是,將兩個文件合并打包。
圖 11 J-Flash工具合并文件
打包成功后。點擊軟件左上角File,選擇Save data file as..將打包好的程序進行保存,保存的格式為bin或者hex。
圖 12J-Flash工具保存合并文件
圖 13 J-Flash工具保存合并文件
(2)使用UNIC_BootTool_V2.0下載合并后的文件
使用UNIC_BootTool_V2.0工具下載程序流程如下:
①芯片類型選擇UM800Y,選擇115200波特率
②點擊Browse選擇剛剛打包好的程序
③打開文件后點擊Open,復位芯片,芯片進入到Boot模式。
④點擊Auto Download,將程序下載到UM8004。
圖 14 Bootloader的用戶下載工具 由于本例子將IAP程序和LPTIMER程序打包合并后下載,在程序下載成功后,打開串口助手會看到LPTIMER計數功能。
圖 15 lptimer定時計數
(3)使用UNIC_IAPTool_V1.3更新程序
通過使用UNIC_IAPTool_V1.3上位機,可以讓IAP程序引導更新用戶應用程序。
圖 16IAPTool上位機說明
使用UNIC_IAPTool_V1.3上位機更新具體操作流程如下
①打開上位機選擇串口號以及波特率,選擇芯片型號為UM8004。
②打開需要更新的用戶應用程序的bin或者hex文件。打開后會顯示該文件的CRC值。
③點擊OPEN
④點擊一鍵下載
⑤點擊一鍵下載后,等待更新過程,更新成功后會提示“下載完成”,否則會提示下載失敗。
圖 17 IAPTool上位機更新成功
⑥之后會運行用戶的程序。(可以通過串口工具打印信息看到,通過IAP升級更新已將原來打包時的Lptimer應用程序更換為ADC功能應用程序。)
圖 18 IAP更新用戶程序為ADC功能程序
最終通過IAP已更新升級了用戶的應用程序。
【總結】
感謝大家參與學習廣芯微MCU進階篇1:8位MCU IAP實現,讓我們期待后續的文章更新。
【關于廣芯微】
廣芯微電子(廣州)股份有限公司專注于低功耗物聯網芯片的研發、設計與銷售,為客戶提供面向個人與家庭、工業與商業物聯網應用領域,以低功耗為差異化的8位/32位微控制器芯片、無線射頻收發器芯片、數字電源管理芯片和傳感與信號調理專用芯片等。
廣芯微秉持客戶第一、技術創新和市場領先的理念,以國際領先的技術為基礎,為客戶提供一流的產品與技術,打造值得信賴的集成電路設計品牌企業。公司獨有的低功耗芯片設計方法、輕量化人工智能算法、大功率的PD協議控制以及多樣性無線連接技術整合而成的低成本高收益的集成電路設計,在健康醫療電子、消費電子、智慧家庭、工業控制、傳感器與表計等領域已經得到了廣泛的應用。廣芯微低功耗微處理器芯片與射頻芯片具有超低睡眠功耗與更低的工作電流,有效地幫助電子設備降低能耗,積極助力節能減排。
審核編輯 :李倩
-
mcu
+關注
關注
146文章
17148瀏覽量
351186 -
uart
+關注
關注
22文章
1235瀏覽量
101387 -
IAP
+關注
關注
2文章
163瀏覽量
24285 -
廣芯微電子
+關注
關注
0文章
33瀏覽量
191
原文標題:廣芯微MCU進階篇1:8位MCU IAP實現
文章出處:【微信號:廣芯微電子,微信公眾號:廣芯微電子】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論