在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于DfuSe工具從APP跳轉(zhuǎn)到DFU模式

STM32單片機(jī) ? 來源:工程師曾玲 ? 2019-02-02 17:41 ? 次閱讀

1

前言

??我們之前經(jīng)常有講到過如何通過USB的DFU方式來對(duì)固件進(jìn)行升級(jí),在示例中我們通常是通過一個(gè)按鍵來觸發(fā)APP跳轉(zhuǎn)到BOOT從而進(jìn)入到DFU升級(jí)模式。但是也有一種情況,客戶的環(huán)境是沒有任何按鍵或者其它觸發(fā)條件,只有一個(gè)USB口連接運(yùn)行Windows操作系統(tǒng)上位機(jī)。這不,前不久就碰到這么個(gè)客戶,下位機(jī)MCU端僅僅只有一個(gè)USB口連接上位機(jī),且MCU端與上位機(jī)之間的USB是常連的,并不能通過USB的拔插操作來觸發(fā)APP的跳轉(zhuǎn),在此情況下,我們又該如何來實(shí)現(xiàn)客戶的需求?

2

分析

基于DfuSe工具從APP跳轉(zhuǎn)到DFU模式

?Figure1 BOOT與APP在內(nèi)部FLASH中的關(guān)系

?如上圖所示,在MCU內(nèi)部FLASH中,BOOT與APP同時(shí)存在,BOOT為DFU模式,負(fù)責(zé)對(duì)固件進(jìn)行升級(jí),而APP(Run-time模式)為客戶的應(yīng)用程序。當(dāng)APP運(yùn)行時(shí),通過某個(gè)事件觸發(fā)(DFU_DETACH)程序從APP跳轉(zhuǎn)到BOOT中從而進(jìn)入到DFU模式中。

基于DfuSe工具從APP跳轉(zhuǎn)到DFU模式

Figure 2 reconfiguration phase

??這個(gè)DFU_DETACH的操作在這里我們可以通過PC端軟件DfuSe Demo來觸發(fā)。

基于DfuSe工具從APP跳轉(zhuǎn)到DFU模式

Figure 3 DfuSe Demo

??在進(jìn)入到DFU模式時(shí),DfuSe Demo軟件的運(yùn)行界面如上所示,上圖界面中有一個(gè)“Leave DFU Mode”的按鍵,通過它可以使運(yùn)行在MCU的程序從DFU模式切換到APP中。同時(shí)我們也發(fā)現(xiàn),在按鍵“Leave DFU Mode”的左邊有一個(gè)灰色按鍵“Enter DFU Mode/HID Detach”,從字面就可以知道,它應(yīng)該是進(jìn)入到DFU模式的按鍵,在APP模式下此按鍵應(yīng)該是激活的,但是,在進(jìn)入到APP模式后,此界面就檢測不到DFU設(shè)備了,此軟件將不再可用。那么我們又將如何來激活這個(gè)“Enter DFU Mode/HID Detach”按鍵呢?

從幫助文檔可知,在APP模式時(shí),當(dāng)DfuSe Demo這個(gè)軟件識(shí)別到一個(gè)特定的HID設(shè)備時(shí),“Enter DFU Mode/HID Detach”按鍵將激活,通過進(jìn)一步了解,我們知道此時(shí)DfuSe Demo這個(gè)軟件是需要使能此項(xiàng)功能才可以,所幸地是,我們已經(jīng)有了此軟件,在與此文對(duì)應(yīng)的附件中,可以找到一個(gè)名為DfuSeDemo_A.exe的可執(zhí)行程序,將它拷貝到DfuSeDemo的安裝目錄下,如下圖所示:

基于DfuSe工具從APP跳轉(zhuǎn)到DFU模式

Figure 4 DfuSeDemo_A

當(dāng)運(yùn)行在APP模式下時(shí)如下所示:

基于DfuSe工具從APP跳轉(zhuǎn)到DFU模式

?Figure5 APP模式

如上圖所示,在APP模式下時(shí),當(dāng)程序檢測到有效的HID設(shè)備時(shí),DfuSe Demo的”Available DFU Device”下拉框中會(huì)顯示這個(gè)HID設(shè)備,并且“Enter DFU Mode/HID Detach”按鍵激活。當(dāng)按下此鍵時(shí),MCU會(huì)重啟并進(jìn)入到DFU模式。當(dāng)然此APP是需要實(shí)現(xiàn)一個(gè)符合某種要求的HID設(shè)備才行。下面我們通過制作這樣一個(gè)APP來講解。

3

制作APP

我們基于之前DFU培訓(xùn)時(shí)使用的STM32F072-Discovery板來實(shí)現(xiàn)此APP。

打開STM32CubeMX軟件新建一個(gè)基于STM32F072RB的工程,使能USB和RTC外設(shè),RTC我們主要用它的備份域寄存器,用來保存跳進(jìn)入到DFU模式的標(biāo)志。

Pinout如下所示:

Figure 6 pinout

使用HSI48作為系統(tǒng)時(shí)鐘源,同時(shí)給USB提供48M時(shí)候,這樣可以省一個(gè)外部晶振,RTC就使用LSI時(shí)鐘源,我們不要求它的時(shí)間精確度,只求備份域寄存器可用。

基于DfuSe工具從APP跳轉(zhuǎn)到DFU模式

Figure 7 clock configuration

然后我們將USB類選擇“Custom Human Interface Device(HID)”,USB中斷等級(jí)設(shè)置為1,堆為0x500,棧大小設(shè)置為0x2000,然后生成工程。

打開usbd_custom_hid_if.c文件,找到CUSTOM_HID_ReportDesc_FS,修改報(bào)告描述符為:

基于DfuSe工具從APP跳轉(zhuǎn)到DFU模式

然后找到CUSTOM_HID_OutEvent_FS函數(shù),修改為:

基于DfuSe工具從APP跳轉(zhuǎn)到DFU模式

如上代碼所示,只有當(dāng)PC端軟件DfuSeDemo檢測到具有這個(gè)報(bào)告描述符的HID設(shè)備后才會(huì)認(rèn)可其為滿足要求的HID設(shè)備,并將其顯示在設(shè)備列表中,按鍵“Enter DFU Mode/HID Detach”激活。當(dāng)用戶按下此按鍵后,DfuSeDemo會(huì)向HID設(shè)備發(fā)送一條SetFeature指令。

當(dāng)MCU收到SetFeature指令后,往備份域寄存器寫入0x32F2作為進(jìn)入DFU模式的標(biāo)志,然后重啟切換到BOOT,接下來在BOOT內(nèi)如果程序檢測到備份域寄存器的標(biāo)志時(shí)則進(jìn)入到DFU模式。整個(gè)過程如圖2所示。

當(dāng)然,APP還需要修改FLASH中的偏移位置,通過工具燒錄到0x0800 7000的位置,這個(gè)在之前DFU培訓(xùn)時(shí)已經(jīng)講述過如何操作了,這里就不具體再重復(fù)了,有興趣的同學(xué)可以查看此文檔附件內(nèi)的APP源碼。

接下來我們?cè)賮砜纯碆OOT程序中檢測跳轉(zhuǎn)標(biāo)志的過程:

基于DfuSe工具從APP跳轉(zhuǎn)到DFU模式

如上代碼所示,只有當(dāng)

jump2App ==JUMP_FLAG_APP時(shí)程序才會(huì)跳轉(zhuǎn)到APP中運(yùn)行,否則進(jìn)入到DFU模式。

4

總結(jié)

使用此方法畢竟在APP中實(shí)現(xiàn)了一套HID,如果不是必要的話,建議還是使用按鍵的方式來觸發(fā)從APP跳轉(zhuǎn)到DFU模式,除非遇到像本文中客戶的情況,或者APP本身就需要實(shí)現(xiàn)某個(gè)USB類的功能,此時(shí)可以做成USB復(fù)合設(shè)備,其中一個(gè)HID設(shè)備就是本文中的HID設(shè)備,這樣PC端的軟件DfuSe Demo也可以識(shí)別。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    8151

    瀏覽量

    271243
  • 上位機(jī)
    +關(guān)注

    關(guān)注

    27

    文章

    961

    瀏覽量

    55642

原文標(biāo)題:教您如何通過DfuSe工具控制程序跳進(jìn)DFU模式

文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    psoc6在M0中設(shè)置好XIP模式后再跳轉(zhuǎn)到M4中,M4可以直接運(yùn)行于XIP模式嗎?

    SMIF的中斷應(yīng)該配置在M0還是M4? 第二:基于DFU情況下,APP0運(yùn)行于內(nèi)部FLASH,APP1全部運(yùn)行于外部FLASH,那我在APP0 設(shè)置XIP
    發(fā)表于 02-19 08:01

    TC387無法bootloader跳轉(zhuǎn)到APP運(yùn)行怎么解決?

    最近在開發(fā)TC387的bootloader軟件,在使用__asm("ja (0xA0030000)")指令跳轉(zhuǎn)到APP程序的入口地址時(shí),程序會(huì)進(jìn)入debug,此處
    發(fā)表于 03-06 06:38

    基于DfuSe工具APP跳轉(zhuǎn)到DFU工具附件()無法下載的原因?

    我們?cè)谑褂肧TM32F103VET6開發(fā)一款產(chǎn)品中遇到了問題。使用DFU通過USB升級(jí)固件,但是產(chǎn)品中并沒有按鍵可以用來切換進(jìn)入DFU模式,剛好看到ST官網(wǎng)中資料有可以通過DFU
    發(fā)表于 03-08 07:21

    STM32G431bootloader跳轉(zhuǎn)到APPlication無法運(yùn)行怎么解決?

    點(diǎn) 讓他跳轉(zhuǎn)到 APP,發(fā)現(xiàn)運(yùn)行不了 在bootloader 的跳轉(zhuǎn)代碼: if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1) == GPIO_PIN_RESET
    發(fā)表于 03-12 07:44

    【CANNON試用體驗(yàn)】STM32 DFU下載與 DFU生成工具

    STM32支持DFU模式,可以通過USB下載固件,一切搞定。DFU是通過STM32的USB下載的,所以STM32的USB接口得引出。1. 下載安裝ST的DFU下載
    發(fā)表于 04-23 22:19

    TM4C129程序跳轉(zhuǎn):請(qǐng)問如何boot跳轉(zhuǎn)到App

    dear TI staff,現(xiàn)在在用TM4C129做升級(jí)功能,采用Boot/App架構(gòu),boot放置在flash0x0~0x10000,則App起始地址為0x10000,現(xiàn)在想請(qǐng)問下如何boot
    發(fā)表于 08-17 07:06

    DFU模式下的STM設(shè)備無法被DfuSe演示應(yīng)用程序識(shí)別

    大家好, 我使用iNemo應(yīng)用程序以DFU模式進(jìn)入設(shè)備(STM32F103RE),但是當(dāng)我打開應(yīng)用程序DfuSe演示時(shí),它未列在可用設(shè)備列表中。 在設(shè)備管理器中,我可以看到它有一個(gè)條目:STM32
    發(fā)表于 09-17 12:53

    切換到DFU模式有問題

    捕獲一些數(shù)據(jù)。4.嘗試iNEMO Suit選項(xiàng)進(jìn)入DFU模式。 - 它顯示設(shè)備已切換到DFU模式的消息,但程序''STDFU Tester
    發(fā)表于 09-17 11:47

    F28377d的bootloader無法跳轉(zhuǎn)到APP

    指令,初始化flash api,然后接收bin文件寫入flash。寫入完成后flash讀出進(jìn)行一個(gè)簡單的校驗(yàn),若校驗(yàn)通過則跳轉(zhuǎn)到APP 3、若5秒鐘沒有收到can升級(jí)指令,直接跳轉(zhuǎn)
    發(fā)表于 09-18 09:32

    stm32如何進(jìn)入dfu模式

    DFU類協(xié)議進(jìn)行產(chǎn)品固件的加載或更新。關(guān)于STM32產(chǎn)品的DFU程序下載和升級(jí),ST官方有相關(guān)的資料文檔。搜索DFUse下載相關(guān)資料。有個(gè)用戶手冊(cè)UM0412詳細(xì)介紹了如何利用ST官方軟件工具
    發(fā)表于 08-09 08:09

    STM32 IAP - Boot跳轉(zhuǎn)到APP的方法

    APP,則直接跳轉(zhuǎn)到APP并運(yùn)行。本文僅介紹如何Bootloader跳轉(zhuǎn)到APP,以下為
    發(fā)表于 01-27 06:16

    使用的是Windows 10 Pro 64位,DFUse應(yīng)用程序找不到設(shè)備怎么解決?

    我正在使用基于 STM32L476 的 STLKT01V1 SensorTile。由于 STLKT01V1 無法選擇硬件的 DFU 更新,在我的固件中,我實(shí)現(xiàn)了一個(gè)跳轉(zhuǎn)到嵌入式引導(dǎo)加載程序的功能,如
    發(fā)表于 01-16 08:11

    ---GD32F450---bootloader跳轉(zhuǎn)到app無法運(yùn)行

    ,但是在跳轉(zhuǎn)到app程序后,app重新將系統(tǒng)時(shí)鐘初始化,如圖,系統(tǒng)重新使用了內(nèi)部時(shí)鐘,由于系統(tǒng)時(shí)鐘較高(GD32450時(shí)鐘為200M,ST的4系列頻率低,所以不會(huì)出現(xiàn)這種現(xiàn)象),在還沒有切換成功時(shí)就...
    發(fā)表于 12-02 14:36 ?16次下載
    ---GD32F450---bootloader<b class='flag-5'>跳轉(zhuǎn)到</b><b class='flag-5'>app</b>無法運(yùn)行

    STM32 IAP - Boot跳轉(zhuǎn)到APP

    更新APP,則直接跳轉(zhuǎn)到APP并運(yùn)行。本文僅介紹如何Bootloader跳轉(zhuǎn)到APP,以下為
    發(fā)表于 12-03 14:21 ?13次下載
    STM32 IAP - Boot<b class='flag-5'>跳轉(zhuǎn)到</b><b class='flag-5'>APP</b>

    APM32F003X6_TMR_Bootloader跳轉(zhuǎn)到APP,TMR4

    APM32F003X6_TMR_Bootloader跳轉(zhuǎn)到APP,TMR4
    發(fā)表于 11-09 21:03 ?1次下載
    APM32F003X6_TMR_<b class='flag-5'>從</b>Bootloader<b class='flag-5'>跳轉(zhuǎn)到</b><b class='flag-5'>APP</b>,TMR4
    主站蜘蛛池模板: 最近2018中文字幕免费看手机 | 视频h在线| 我被黑人巨大开嫩苞在线观看 | 欧美69色| 久久精品免费 | 国产特级 | 美女脱裤子屁屁视频 | 天天天干 | 成人看的一级毛片 | 国产精品漂亮美女在线观看 | 黄在线网站 | 国产亚洲欧美日本一二三本道 | 35qao强力打造免费上线高清 | 九九热免费在线观看 | 在线观看免费xx高清视频 | 成人欧美一区二区三区视频不卡 | 午夜视频播放 | 流不尽奶水的大乳h | 午夜刺激爽爽视频免费观看 | 久久久午夜精品理论片 | 亚洲综合日韩欧美一区二区三 | 久久福利网 | yy肉戏多纯黄的小说 | 天堂-bt种子| 波多野结衣在线视频免费观看 | 男女那啥的视频免费 | 国产欧美日韩va | 亚洲一区二区三区精品视频 | www.久久精品视频 | 国产精品久久久久久久久kt | 性生大片免费观看无遮挡 | 婷婷丁香在线 | 四虎永久影院永久影库 | 成人男女啪啪免费观看网站 | 国产精品嫩草影院一二三区入口 | 欧美在线区 | 欧美一级第一免费高清 | 亚洲69视频| 免费大片看黄在观看 | 亚洲欧美视频一区二区 | 国产精品主播在线观看 |