国产成人av人人爽人人澡-亚洲国产日韩欧美一区-好吊日视频这里只有精品-日本高清精品视频在线

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當(dāng)前位置:首頁 >> 品牌中心 >> ST/意法 >> 利用USB DFU實(shí)現(xiàn)IAP功能之演示講解

利用USB DFU實(shí)現(xiàn)IAP功能之演示講解

關(guān)鍵字:USBDFUIAP 作者: 來源: 發(fā)布時(shí)間:2019-01-03  瀏覽:25

前言
伴隨著固件升級(jí)需求的增加,STM32提供了靈活的升級(jí)方式。本文一步一步介紹如何利用USBDFU Class以及ST提供的DfuSedemo軟件工具實(shí)現(xiàn)IAP(InApplication Program)功能,但并不涉及到DFU class移植。

一、 實(shí)現(xiàn)環(huán)境
開發(fā)板:STM32F746G-DISCO
開發(fā)庫:STM32CubeF7v1.3.0
集成開發(fā)環(huán)境:IAR v7.70.1.11486
MDK-ARM Plus v5.20.0.0

(只需兩者中一種)


優(yōu)化級(jí)別:High (IAR)
Level 3 (-O3) (MDK-ARM)
DFU演示軟件:Dfu file manager v3.0.5
DfuSeDemo v3.0.5

實(shí)現(xiàn)過程在STM32F7系列上展開,但USB DFU實(shí)現(xiàn)的IAP功能并不只局限于STM32F7系列,可以通過用戶手冊(cè)判斷所采用微控制器型號(hào)是否支持USB以及IAP功能。STM32Cube開發(fā)庫為各系列STM32提供了齊全的USBDFU例程可供參考。


二、 IAP介紹
IAP(In application program)主要為使用者提供了一種更加靈活的固件升級(jí)方式,可以根據(jù)應(yīng)用需要定義何時(shí)、何種情況發(fā)生時(shí)進(jìn)行固件升級(jí)。在介紹步驟前,需要對(duì)IAP原理有一定認(rèn)識(shí)。結(jié)合下圖(僅供參考,IAP實(shí)際應(yīng)用方式更加靈活),IAP的應(yīng)用中,用戶程序與IAP驅(qū)動(dòng)程序位于不同的存儲(chǔ)區(qū)域。在應(yīng)用過程中,利用IAP驅(qū)動(dòng)程序?qū)⒂脩艄碳虞d到固定位置,完成升級(jí)。更多關(guān)于IAP應(yīng)用介紹請(qǐng)參考AN3965。
其中,IAP驅(qū)動(dòng)程序首先燒錄固化,并不會(huì)隨著用戶程序的升級(jí)而改變。用戶固件升級(jí)完畢后,在IAP驅(qū)動(dòng)程序引導(dǎo)下,跳轉(zhuǎn)到用戶固件對(duì)應(yīng)Flash位置,執(zhí)行用戶程序。

1

三 、實(shí)現(xiàn)步驟
3.1 DFU工具安裝
安裝DFUdemo工具DfuSe v3.0.5,主要提供了驅(qū)動(dòng)、Dfufile manager 和DfuSeDemo。關(guān)于DfuSe的詳細(xì)內(nèi)容(安裝步驟、使用介紹)請(qǐng)參考UM0412。
3.2 IAP驅(qū)動(dòng)固件生成與裝載
利用STM32CubeF7v1.3.0開發(fā)庫提供的USB DFU例程生成IAP驅(qū)動(dòng)固件(文件夾路徑:…\ STM32Cube_FW_F7_V1.3.0\Projects\STM32746G-Discovery\Applications\USB_Device\DFU_Standalone)。
利用燒錄工具燒錄到開發(fā)板中。本例程實(shí)現(xiàn)重啟后,如果板上User按鍵按下或者沒有有效的用戶應(yīng)用程序,則進(jìn)入U(xiǎn)SB DFU模式,等待升級(jí);否則,進(jìn)入用戶應(yīng)用。
下面是摘取的部分例程。

@usbd_conf.h
/* The first sector(32 KB) is reserved for DFU code */
#defineUSBD_DFU_APP_DEFAULT_ADD 0x08008000

@usbd_dfu.c
USBD_DFU_Init(…)
{

hdfu->data_ptr =USBD_DFU_APP_DEFAULT_ADD;

}

@main.c
/* Test if user code is programmed startingfrom USBD_DFU_APP_DEFAULT_ADD address */
if(((*(__IOuint32_t*)USBD_DFU_APP_DEFAULT_ADD) & 0x2FFE0000 ) == 0x20000000)
{
/* Jump to userapplication */
JumpAddress = *(__IOuint32_t*) (USBD_DFU_APP_DEFAULT_ADD + 4);
JumpToApplication =(pFunction) JumpAddress;

/* Initialize userapplication's Stack Pointer */
__set_MSP(*(__IOuint32_t*) USBD_DFU_APP_DEFAULT_ADD);
JumpToApplication();
}

用戶固件對(duì)應(yīng)的首地址被定義在0x08008000。用戶也可以自定義地址,需要注意如下幾點(diǎn):

1.禁止定義在0x08008000地址前(STM32F7系列,0x0~0x0800FFFF屬于Sector0,已經(jīng)開辟為IAP驅(qū)動(dòng)程序區(qū)域)。
2.自定義地址所屬Sector在升級(jí)時(shí)會(huì)全部擦除,即使定義地址并不位于對(duì)應(yīng)Sector的首地址。
3.自定義地址需要保持512-byte對(duì)齊。
4.自定義地址需要與用戶固件對(duì)應(yīng)的裝載地址以及用戶中斷向量表地址保持一致。
在實(shí)現(xiàn)跳轉(zhuǎn)到用戶程序的代碼中,將用戶中斷向量表中第一個(gè)4字節(jié)指向的棧首地址分配給MSP。第二個(gè)4字節(jié)為復(fù)位中斷向量,指向執(zhí)行首地址。
在開發(fā)IAP驅(qū)動(dòng)程序時(shí),需要避免PC指針跳到用戶程序區(qū)域。同時(shí),充分考慮Stack & Heap大小,避免出現(xiàn)USB DFU正常識(shí)別,但不能正常工作情況,如下圖所示。

2

3.3 用戶固件生成
本文采用STM32CubeF7v1.3.0開發(fā)庫中TIM_TimeBase例程作為用戶程序(文件夾路徑:STM32Cube_FW_F7_V1.3.0\Projects\STM32746G-Discovery\Examples\TIM\TIM_TimeBase)。
IAP升級(jí)所需用戶固件,主要有兩處需要變動(dòng):
1. 在鏈接工具中,程序裝載地址
2. 中斷向量表首地址
上述兩種變動(dòng)需要保持一致,并且與IAP中定義的用戶區(qū)域首地址保持一致。
本IAP驅(qū)動(dòng)程序中,用戶固件裝載地址相對(duì)于0x08000000偏移地址為0x8000。
在MDK中,改動(dòng)前后比較如下圖所示。

3

在IAR中,更改步驟如下所示:

4

修改完畢后,生成hex文件(STM32746G_DISCOVERY.hex)。


3.4 用戶固件轉(zhuǎn)換與升級(jí)
打開Dfufile manager工具,點(diǎn)擊OK,進(jìn)入轉(zhuǎn)換工具主界面。

5

按照下圖步驟,首先載入生成的HEX文件(STM32746G_DISCOVERY.hex);然后在TargetID、Target Name、Device properties中自定義內(nèi)容,這部分內(nèi)容在DfuSe Demo工具中選擇.dfu文件時(shí)會(huì)予以顯示,并不影響燒錄文件內(nèi)容。最后,點(diǎn)擊Generate完成HEX文件àDFU文件轉(zhuǎn)換。

6

為STM32F746G-DISCO板供電,通過USB線將板上USB_FS接口與電腦相連。由于STDiscovery板已經(jīng)加載了IAP應(yīng)用程序,并且沒有有效的用戶應(yīng)用程序,因此在IAP應(yīng)用程序中,直接進(jìn)入U(xiǎn)SB DFU模式,以供電腦識(shí)別USBDFU器件。正常識(shí)別情況如左下圖。
右下圖情況是由于沒有正確裝載Driver導(dǎo)致,可以通過右擊“DFU in FS Mode”選擇更新驅(qū)動(dòng)程序軟件\瀏覽計(jì)算機(jī)以查找驅(qū)動(dòng)程序軟件(驅(qū)動(dòng)文件位于DfuSe v3.0.5安裝目錄\DfuSe v3.0.5\Bin\ Driver)。

7

打開DfuSeDemo,結(jié)合下圖步驟,點(diǎn)擊’Choose’加載之前轉(zhuǎn)換的.dfu文件;選擇配置;點(diǎn)擊’Update’完成擦除與下載;另外,可以通過點(diǎn)擊’Verify’驗(yàn)證是否下載成功。更多關(guān)于DfuSe內(nèi)容,請(qǐng)參考UM0412。

8

用戶固件升級(jí)完成。重啟后,正常進(jìn)入用戶應(yīng)用。如果重啟過程中,板上USER鍵按下,進(jìn)入U(xiǎn)SB DFU模式,等待升級(jí)。


四 小結(jié)
介紹了利用USBDFU實(shí)現(xiàn)IAP過程,以及實(shí)現(xiàn)過程中注意事項(xiàng)。在DfuSev3.0.5安裝目錄中包含了必要的文檔,介紹如何使用DfuSe工具,以及如何開發(fā)基于STMicroelectronicsDFU方案的上位機(jī)應(yīng)用。

更多內(nèi)容請(qǐng)移步:

STM32單片機(jī)中文官網(wǎng)
意法半導(dǎo)體/ST/STM

編輯:admin  最后修改時(shí)間:2019-01-03

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號(hào)-4

色婷婷久久五月中文字幕| 国产欧美亚洲精品自拍| 手机在线不卡国产视频| 国产女高清在线看免费观看| 搡老妇女老熟女一区二区| 黄色国产精品一区二区三区| 日本欧美一区二区三区就| 欧美亚洲三级视频在线观看| 精品午夜福利无人区乱码| 亚洲精品国产福利在线| 日韩日韩欧美国产精品| 国产超薄黑色肉色丝袜| 亚洲国产精品国自产拍社区| 精品日韩国产高清毛片| 国产高清三级视频在线观看| 精品欧美日韩一区二区三区 | 日本国产欧美精品视频| 超薄肉色丝袜脚一区二区| 99精品国产一区二区青青| 91精品蜜臀一区二区三区| 色婷婷在线精品国自产拍 | 99秋霞在线观看视频| 欧美精品二区中文乱码字幕高清| 国产色一区二区三区精品视频| 日韩午夜福利高清在线观看| 熟女高潮一区二区三区| 国产精品一区二区视频成人| 日韩高清中文字幕亚洲| 亚洲精品一二三区不卡| 大尺度激情福利视频在线观看| 国产精品午夜一区二区三区 | 狠狠干狠狠操亚洲综合| 国产一区二区熟女精品免费| 午夜精品麻豆视频91| 在线一区二区免费的视频| 一区二区三区日韩在线| 大香蕉大香蕉手机在线视频| 国产精品涩涩成人一区二区三区| 国产精品99一区二区三区| 熟女乱一区二区三区四区| 熟女白浆精品一区二区|