色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于DfuSe工具從APP跳轉到DFU模式

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

1

前言

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

2

分析

基于DfuSe工具從APP跳轉到DFU模式

?Figure1 BOOT與APP在內部FLASH中的關系

?如上圖所示,在MCU內部FLASH中,BOOT與APP同時存在,BOOT為DFU模式,負責對固件進行升級,而APP(Run-time模式)為客戶的應用程序。當APP運行時,通過某個事件觸發(DFU_DETACH)程序從APP跳轉到BOOT中從而進入到DFU模式中。

基于DfuSe工具從APP跳轉到DFU模式

Figure 2 reconfiguration phase

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

基于DfuSe工具從APP跳轉到DFU模式

Figure 3 DfuSe Demo

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

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

基于DfuSe工具從APP跳轉到DFU模式

Figure 4 DfuSeDemo_A

當運行在APP模式下時如下所示:

基于DfuSe工具從APP跳轉到DFU模式

?Figure5 APP模式

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

3

制作APP

我們基于之前DFU培訓時使用的STM32F072-Discovery板來實現此APP。

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

Pinout如下所示:

Figure 6 pinout

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

基于DfuSe工具從APP跳轉到DFU模式

Figure 7 clock configuration

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

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

基于DfuSe工具從APP跳轉到DFU模式

然后找到CUSTOM_HID_OutEvent_FS函數,修改為:

基于DfuSe工具從APP跳轉到DFU模式

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

當MCU收到SetFeature指令后,往備份域寄存器寫入0x32F2作為進入DFU模式的標志,然后重啟切換到BOOT,接下來在BOOT內如果程序檢測到備份域寄存器的標志時則進入到DFU模式。整個過程如圖2所示。

當然,APP還需要修改FLASH中的偏移位置,通過工具燒錄到0x0800 7000的位置,這個在之前DFU培訓時已經講述過如何操作了,這里就不具體再重復了,有興趣的同學可以查看此文檔附件內的APP源碼。

接下來我們再來看看BOOT程序中檢測跳轉標志的過程:

基于DfuSe工具從APP跳轉到DFU模式

如上代碼所示,只有當

jump2App ==JUMP_FLAG_APP時程序才會跳轉到APP中運行,否則進入到DFU模式。

4

總結

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • usb
    usb
    +關注

    關注

    60

    文章

    7936

    瀏覽量

    264484
  • 上位機
    +關注

    關注

    27

    文章

    941

    瀏覽量

    54790

原文標題:教您如何通過DfuSe工具控制程序跳進DFU模式

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    psoc6在M0中設置好XIP模式后再跳轉到M4中,M4可以直接運行于XIP模式嗎?

    SMIF的中斷應該配置在M0還是M4? 第二:基于DFU情況下,APP0運行于內部FLASH,APP1全部運行于外部FLASH,那我在APP0 設置XIP
    發表于 02-19 08:01

    TC387無法bootloader跳轉到APP運行怎么解決?

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

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

    我們在使用STM32F103VET6開發一款產品中遇到了問題。使用DFU通過USB升級固件,但是產品中并沒有按鍵可以用來切換進入DFU模式,剛好看到ST官網中資料有可以通過DFU
    發表于 03-08 07:21

    STM32H743APP跳轉到bootloader不成功怎么解決?

    各位大神好,遇到一個奇怪的問題,我APP跳轉到bootloader不成功,但是bootloader升級沒有問題,重新上電也可以運行,但是就是無法跳轉成功,源代碼如下,希望有人能解答下
    發表于 04-01 08:12

    【CANNON試用體驗】STM32 DFU下載與 DFU生成工具

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

    TM4C129程序跳轉:請問如何boot跳轉到App

    dear TI staff,現在在用TM4C129做升級功能,采用Boot/App架構,boot放置在flash0x0~0x10000,則App起始地址為0x10000,現在想請問下如何boot
    發表于 08-17 07:06

    DFU模式下的STM設備無法被DfuSe演示應用程序識別

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

    切換到DFU模式有問題

    捕獲一些數據。4.嘗試iNEMO Suit選項進入DFU模式。 - 它顯示設備已切換到DFU模式的消息,但程序''STDFU Tester
    發表于 09-17 11:47

    F28377d的bootloader無法跳轉到APP

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

    stm32如何進入dfu模式

    DFU類協議進行產品固件的加載或更新。關于STM32產品的DFU程序下載和升級,ST官方有相關的資料文檔。搜索DFUse下載相關資料。有個用戶手冊UM0412詳細介紹了如何利用ST官方軟件工具
    發表于 08-09 08:09

    STM32 IAP - Boot跳轉到APP的方法

    APP,則直接跳轉到APP并運行。本文僅介紹如何Bootloader跳轉到APP,以下為
    發表于 01-27 06:16

    使用的是Windows 10 Pro 64位,DFUse應用程序找不到設備怎么解決?

    我正在使用基于 STM32L476 的 STLKT01V1 SensorTile。由于 STLKT01V1 無法選擇硬件的 DFU 更新,在我的固件中,我實現了一個跳轉到嵌入式引導加載程序的功能,如
    發表于 01-16 08:11

    ---GD32F450---bootloader跳轉到app無法運行

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

    STM32 IAP - Boot跳轉到APP

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

    APM32F003X6_TMR_Bootloader跳轉到APP,TMR4

    APM32F003X6_TMR_Bootloader跳轉到APP,TMR4
    發表于 11-09 21:03 ?0次下載
    APM32F003X6_TMR_<b class='flag-5'>從</b>Bootloader<b class='flag-5'>跳轉到</b><b class='flag-5'>APP</b>,TMR4
    主站蜘蛛池模板: 国内偷拍夫妻av| 苍井空a 集在线观看网站| 亚洲A片不卡无码久久尤物| 欧美久久综合网| 麻豆文化传媒一区二区| 久久丫线这里只精品| 精品人妻伦九区久久AAA片69| 国产亚洲精品线视频在线| 国产喷水1区2区3区咪咪爱AV| 成人在无码AV在线观看一| 成人免费看片又大又黄| 九九免费的视频| 久久婷婷五月综合色情| 三级网址在线播放| 特级做A爰片毛片免费看108| 我和妽妽在厨房里的激情区二区 | 久久欧洲AV无码精品色午夜麻豆| 欧洲最大无人区免费高清完整版| 拍戏被CAO翻了H| 一天不停的插BB十几次| 一品道门免费视频韩国| 丰满艳妇亲伦| 国产亚洲综合视频| 人妻免费久久久久久久了| 区久久AAA片69亚洲| 一个人在线观看免费视频| 国产 在线 亚洲 欧美 动漫| 国产三级精品三级男人的天堂| 免费视频亚洲| 婷婷激情综合色五月久久竹菊影视 | 国产精品爽爽久久久久久蜜桃| 国产免费人成在线看视频| 欧美性狂猛AAAAAA| 曰批视频免费40分钟不要钱| 99re 这里只有精品| 抽插的日日液液H| 精品视频免费在线| 午夜勾魂曲| 中文字幕人成人乱码亚洲影视 | 国产精品久久久久久免费播放 | 999久久国产精品免费人妻|