STM32實(shí)現(xiàn)IAP“>STM32存儲(chǔ)器 — STM32實(shí)現(xiàn)IAP
在上一篇筆記中,進(jìn)行了一個(gè)簡(jiǎn)單的IAP程序結(jié)構(gòu),以及和User App程序的相互聯(lián)系的系統(tǒng)設(shè)計(jì)。
本文引用地址:http://m.butianyuan.cn/article/201611/322624.htm本篇對(duì)IAP實(shí)現(xiàn)的細(xì)節(jié)進(jìn)行了較為詳細(xì)的論述,包括源碼結(jié)構(gòu)的設(shè)計(jì);我們從上位機(jī)(PC—C#)和下位機(jī)(MCU—C)共同描述IAP功能的實(shí)現(xiàn)過(guò)程。
1 STM32的IAP實(shí)現(xiàn)平臺(tái)
IAP功能的實(shí)現(xiàn)需要兩個(gè)方面(上位機(jī)和STM32上的IAP程序)的密切合作。因此,我們除了需要知道STM32芯片上的IAP程序結(jié)構(gòu),我們還需要了解上位機(jī)的程序結(jié)構(gòu),這樣才能使上位機(jī)和STM32很好的相互工作。
下位機(jī)(指的是STM32構(gòu)成的單片機(jī)系統(tǒng)):
本下位機(jī)系統(tǒng)使用C語(yǔ)言進(jìn)行編程,項(xiàng)目功能是實(shí)現(xiàn)IAP(In Application Programming);
下位機(jī)使用IAR Embedded Workbench for ARM 6.10 Kick start開(kāi)發(fā)環(huán)境;
使用STM32F103C8-PKT開(kāi)發(fā)板進(jìn)行調(diào)試和驗(yàn)證;
上位機(jī)(指的是PC構(gòu)成的PC系統(tǒng)):
本上位機(jī)系統(tǒng)使用C#語(yǔ)言進(jìn)行編程,項(xiàng)目功能是配合下位機(jī)實(shí)現(xiàn)IAP;
上位機(jī)使用Visual Studio 2008開(kāi)發(fā)環(huán)境;
使用一般的PC機(jī)進(jìn)行調(diào)試和驗(yàn)證;
上位機(jī)和下位機(jī)通訊(串口通訊):
上下位機(jī)之間通過(guò)串口進(jìn)行通訊;
上位及通訊一定的通訊協(xié)議將需要更新的程序通過(guò)串口傳輸給IAP程序,再由IAP程序?qū)?shù)據(jù)寫(xiě)到用戶(hù)的Flash區(qū)域;從而達(dá)到IAP功能,如圖所示:
2 STM32和上位機(jī)的通訊協(xié)議
如何將更新程序的bin文件數(shù)據(jù)傳輸?shù)絊TM32系統(tǒng)內(nèi)部?
如何將串口接收到的一連串?dāng)?shù)據(jù)給解析出來(lái),進(jìn)行有效數(shù)據(jù)的寫(xiě)Flash?
如何得知數(shù)據(jù)傳輸?shù)拈_(kāi)始?
又如何得知數(shù)據(jù)傳輸?shù)慕Y(jié)束?
……
以上的種種疑惑,都是我們必須要關(guān)心的問(wèn)題;而這些問(wèn)題都隱藏著一樣的本質(zhì)——如何獲取PC端有用的信息?
對(duì)于如何獲取有用信息,有幾個(gè)問(wèn)題需要考慮:
通過(guò)何種方式獲取?——我們采用USART;
何種數(shù)據(jù)才是有用的?——我們指定一個(gè)簡(jiǎn)單的協(xié)議;
又是如何實(shí)現(xiàn)IAP程序和APP程序的切換的;
在硬件上,USART的實(shí)現(xiàn)較為簡(jiǎn)單;我們重點(diǎn)在于協(xié)議的設(shè)計(jì)和理解;
3 STM32—IAP程序的實(shí)現(xiàn)
1、IAP通過(guò)USART和上位機(jī)通訊,實(shí)現(xiàn)數(shù)據(jù)的下發(fā)和在應(yīng)用編程;如圖:
2、上位機(jī)和STM32系統(tǒng)USART之間通過(guò)一個(gè)簡(jiǎn)單的協(xié)議進(jìn)行連接;
當(dāng)連續(xù)收到4次0xBB后,表示開(kāi)始接收用戶(hù)代碼;
當(dāng)連續(xù)收到4次0xEE后,表示結(jié)束接收用戶(hù)代碼;如圖:
評(píng)論