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

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

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

單獨(dú)下載可執(zhí)行文件到MM32F5微控制器

冬至子 ? 來(lái)源:靈動(dòng)MM32MCU ? 作者:靈動(dòng)MM32 ? 2023-05-24 17:24 ? 次閱讀

引言

使用Keil MDK或者IAR等使用圖形界面的開(kāi)發(fā)環(huán)境,可以在圖形界面環(huán)境下編譯源碼工程,并下載編譯生成的可執(zhí)行文件到目標(biāo)微控制器中。但若使用ARMGCC等命令行工具鏈,需要額外的下載工具,才能將編譯生成的可執(zhí)行文件下載到目標(biāo)微控制器中。

若使用SEGGER J-Link調(diào)試器,可以搭配SEGGER Ozone軟件或者J-FLASH、J-FLASH Lite實(shí)現(xiàn)單獨(dú)下載的功能。但J-Link調(diào)試器價(jià)格昂貴,并且老版本的J-LINK調(diào)試器無(wú)法支持更新的微控制設(shè)備。相比而言,開(kāi)源的DAP-Link方案更接地氣??梢赃m配DAP-Link的命令行工具有openocd、pyocd等,但這些工具對(duì)某些具體微控制器設(shè)備的兼容性并不是很好,時(shí)不時(shí)會(huì)出現(xiàn)不識(shí)別設(shè)備或者連接不上的情況,需要開(kāi)發(fā)者自行調(diào)試才能確保它們能夠正常工作。同時(shí),基于命令的操作方式,對(duì)于已經(jīng)習(xí)慣了在圖形界面環(huán)境下調(diào)試的開(kāi)發(fā)者而言,也不是很友好。不過(guò),若是需要搭建持續(xù)集成和自動(dòng)化測(cè)試系統(tǒng),這些基于命令行的工具仍是不可或缺的。

對(duì)于僅專(zhuān)注于微控制器端的軟件開(kāi)發(fā)者而言,希望能夠以最簡(jiǎn)單的方式解決單獨(dú)下載可執(zhí)行文件的問(wèn)題。本文將以下載MicroPython固件文件到靈動(dòng)MM32F5微控制器為例,總結(jié)了幾種簡(jiǎn)單易用的方法,專(zhuān)門(mén)針對(duì)使用DAP-Link調(diào)試器的情況,通過(guò)常用圖形界面工具,實(shí)現(xiàn)單獨(dú)下載可執(zhí)行文件的功能。

PS:針對(duì)MM32F5微控制器,不得不使用本文描述方法的原因,還在于一些主觀因素:

筆者手頭上的J-Link v8不再支持STAR-MC1(Arm Cortex-M33)內(nèi)核

筆者使用pyocd+DAP-Link的組合,經(jīng)過(guò)一段時(shí)間的調(diào)試,仍無(wú)法實(shí)現(xiàn)連接到MM32F5微控制器

使用DAP-Link在Keil中可以調(diào)試MM32F5微控制器

使用這些工具可以識(shí)別常用的可執(zhí)行文件類(lèi)型,例如bin、hex、axf、elf、s19等。用戶(hù)可根據(jù)需要嘗試。

借用Keil工程

Keil IDE實(shí)現(xiàn)下載功能的部分,相對(duì)于編譯過(guò)程,在內(nèi)部應(yīng)該也是一個(gè)獨(dú)立的小工具,這是筆者得以實(shí)現(xiàn)用Keil下載程序的關(guān)鍵。Keil沒(méi)有將內(nèi)部的下載工具獨(dú)立地開(kāi)放出來(lái),因此,筆者不得不創(chuàng)建一個(gè)不包含任何源碼的空工程,跳過(guò)編譯部分,僅使用其中下載程序的功能。具體操作步驟如下:

1 啟動(dòng)Keil IDE,創(chuàng)建新工程,并選定設(shè)備類(lèi)型為目標(biāo)微控制器設(shè)備。**

筆者實(shí)際在本機(jī)的d:\\_worksapce\\keil\\mm32f5目錄下,創(chuàng)建了mm32f5.uvprojx工程文件。

image.png

2options -> Output 選項(xiàng)卡中,指定將要下載的可執(zhí)行文件的路徑。

在樣例中,筆者在mm32f5目錄下,存放了micropython.hex文件。點(diǎn)擊Select Folder for Objects...按鈕,指定為mm32f5目錄,然后在Name of Executable:對(duì)應(yīng)的文本框中輸入了micropython.hex文件名。

image.png

從字面上看,這里指定的是編譯輸出的路徑和文件名,但實(shí)際上,下載過(guò)程是同編譯過(guò)程綁定的,編譯過(guò)程生成的可執(zhí)行文件,將被Keil自動(dòng)作為下載過(guò)程的輸入文件。

3 在主窗口的工具欄中,單擊LOAD按鈕,啟動(dòng)下載。

image.png

通過(guò) Build Output窗口可以查看到,當(dāng)前已經(jīng)擦除、下載并且校驗(yàn)成功。

4 使用Keil IDE也可以實(shí)現(xiàn)命令行式的下載操作。

此時(shí),可將使用Keil IDE創(chuàng)建的工程視作uv4.exe程序的配置文件,例如,在之前創(chuàng)建的mm32f5.uvprojx文件中,編輯OutputDirectoryOutputName字段,指定將要下載程序的路徑和文件名。

<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">

  <SchemaVersion>2.1<span class="hljs-name"SchemaVersion>

  <Header>### uVision Project, (C) Keil Software<span class="hljs-name"Header>

  <Targets>
    <Target>
      <TargetName>Target 1<span class="hljs-name"TargetName>
      <ToolsetNumber>0x4<span class="hljs-name"ToolsetNumber>
      <ToolsetName>ARM-ADS<span class="hljs-name"ToolsetName>
      <uAC6>1<span class="hljs-name"uAC6>
      <TargetOption>
        <TargetCommonOption>
          <Device>MM32F5277E9P<span class="hljs-name"Device>
          <Vendor>MindMotion<span class="hljs-name"Vendor>
          <PackID>MindMotion.MM32F5277E_DFP.0.0.3<span class="hljs-name"PackID>
          <PackURL>http://www.mindmotion.com.cn/Download/MDK_KEIL/<span class="hljs-name"PackURL>
          <Cpu>IRAM(0x30000000,0x1C000) IROM(0x08000000,0x40000) CPUTYPE("Cortex-M33") CLOCK(12000000) ELITTLE<span class="hljs-name"Cpu>
          <FlashUtilSpec><span class="hljs-name"FlashUtilSpec>
          <StartupFile><span class="hljs-name"StartupFile>
          <FlashDriverDll>UL2V8M(-S0 -C0 -P0 -FD30000000 -FC1000 -FN1 -FF0MM32F5270_256 -FS08000000 -FL040000 -FP0($$Device:MM32F5277E9P$Flash\\MM32F5270_256.FLM))<span class="hljs-name"FlashDriverDll>
        ...
          <OutputDirectory>.\\<span class="hljs-name"OutputDirectory>
          <OutputName>micropython.hex<span class="hljs-name"OutputName>
        ...

然后在Windows的命令行界面,輸入調(diào)用Keil下載代碼的命令:

uv4.exe -f "d:\\_workspace\\keil\\mm32f5\\mm32f5.uvprojx" -j0 -o "d:\\_workspace\\keil\\mm32f5\\download_log.txt"

image.png

使用命令行方式有一點(diǎn)不方便,命令行在后臺(tái)調(diào)用Keil執(zhí)行下載過(guò)程沒(méi)有任何用戶(hù)交互。命令行觸發(fā)執(zhí)行uv4.exe程序不是阻塞式的,所以無(wú)法通過(guò)程序是否返回判定下載過(guò)程已結(jié)束。雖然在命令中指定輸出log到指定文件中,但Keil并不是在下載結(jié)束后才創(chuàng)建輸出文件,而是逐條寫(xiě)入輸出文件。如果用戶(hù)在下載過(guò)程中打開(kāi)這個(gè)log輸出文件,將會(huì)看到已經(jīng)執(zhí)行的部分操作。因此,也不能通過(guò)是否創(chuàng)建log輸出文件判定已將下載成功。必須檢查log輸出文件的內(nèi)容,待其中包含下載成功并通過(guò)驗(yàn)證的記錄后,才能最終判定下載情況。

使用Ozone

常用J-Link調(diào)試器的開(kāi)發(fā)者對(duì)Ozone都不陌生。Ozone和J-Link都是SEGGER公司設(shè)計(jì)發(fā)布的面向調(diào)試和下載應(yīng)用的工具,Ozone是一套具有圖形界面的上位機(jī)工具,可以適配J-Link調(diào)試器,獨(dú)立下載可執(zhí)行文件到目標(biāo)微控制器并進(jìn)行調(diào)試。

但實(shí)際上,Ozone除了適配自家發(fā)售的J-Link調(diào)試器外,還提供了對(duì)開(kāi)源CMSIS-DAP(DAP-Link)的支持,即使用Ozone通過(guò)DAP-Link連接到目標(biāo)微控制器,也能夠?qū)崿F(xiàn)獨(dú)立下載而執(zhí)行文件并調(diào)試的功能。不過(guò),Ozone支持DAP-Link畢竟只是額外的福利,幾乎每個(gè)步驟都會(huì)彈窗提示,“這只是個(gè)試用功能,未經(jīng)過(guò)充分測(cè)試”。

使用Ozone適配DAP-Link的操作同使用J-Link的情況相同,具體步驟如下:

1 啟動(dòng)Ozone軟件,選擇目標(biāo)微控制器設(shè)備。

剛啟動(dòng)Ozone軟件時(shí),Ozone會(huì)自動(dòng)檢測(cè)到當(dāng)前電腦上已經(jīng)接入了DAP-Link調(diào)試器,然后提示警告“必須接受如下條款:

1 當(dāng)前軟件僅適用非商業(yè)用途或評(píng)估;

2 SEGGER官方不會(huì)提供技術(shù)支持”。選擇接受“Accpet”。

image.png

2 選擇目標(biāo)微控制器設(shè)備。

當(dāng)確認(rèn)目標(biāo)微控制器設(shè)備后,警告提示對(duì)話(huà)框會(huì)再次彈出。仍然是接受“Accept”。

image.png

3 在“連接配置”對(duì)話(huà)框中,可以看到已經(jīng)識(shí)別出來(lái)的DAP-Link了。

Ozone連接調(diào)試器的速度,在默認(rèn)情況下被配置成4MHz。筆者手上的DAP-Link方案中,使用的是低速USB接口,考慮穩(wěn)妥的情況,將速度改為1MHz。

image.png

4 選擇將要下載的可執(zhí)行文件

image.png

5 開(kāi)始下載。

再次彈出提示對(duì)話(huà)框。選擇接受“Accept”。

image.png

再次彈出提示對(duì)話(huà)框。選擇接受“Yes”。

image.png

6 下載成功

image.png

如果對(duì)頻繁彈出的警告對(duì)話(huà)框不喜,可勾選“不要重復(fù)彈出”復(fù)選框,有一定改善效果。

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

    關(guān)注

    48

    文章

    7571

    瀏覽量

    151630
  • ARM處理器
    +關(guān)注

    關(guān)注

    6

    文章

    361

    瀏覽量

    41806
  • 調(diào)試器
    +關(guān)注

    關(guān)注

    1

    文章

    305

    瀏覽量

    23773
  • Cortex-M33
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    1939
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【實(shí)用開(kāi)發(fā)工具】將BAT腳本打包成exe可執(zhí)行文件

    【實(shí)用開(kāi)發(fā)工具】將BAT腳本打包成exe可執(zhí)行文件
    的頭像 發(fā)表于 08-21 19:51 ?2.6w次閱讀
    【實(shí)用開(kāi)發(fā)工具】將BAT腳本打包成exe<b class='flag-5'>可執(zhí)行文件</b>

    C語(yǔ)言變成可執(zhí)行文件的四大步驟

    從C語(yǔ)言變成最終的可執(zhí)行文件,需要經(jīng)過(guò)四步。
    發(fā)表于 10-18 10:37 ?5644次閱讀

    寫(xiě)好的LabView程序怎么生成可執(zhí)行文件

    寫(xiě)好的LabView程序怎么生成可執(zhí)行文件,客戶(hù)端只要安裝可執(zhí)行文件就能操作運(yùn)行了,
    發(fā)表于 12-17 10:51

    【視頻分享】如何調(diào)試可執(zhí)行文件

    在LabVIEW中,經(jīng)常發(fā)現(xiàn)可執(zhí)行文件和源代碼執(zhí)行結(jié)果有出入。本視頻講解如何調(diào)試可執(zhí)行文件。在優(yōu)酷上面看到的關(guān)于如何調(diào)試可執(zhí)行文件視頻,感覺(jué)還是挺受益的,分享給大家!
    發(fā)表于 07-20 14:46

    LabVIEW可執(zhí)行文件作為后臺(tái)進(jìn)程運(yùn)行

    函數(shù), 如何從LabVIEW LabVIEW可執(zhí)行文件中退出而不必關(guān)閉它? 。否則,需要關(guān)閉Windows任務(wù)管理中的可執(zhí)行文件,或者以編程方式從另一個(gè)VI關(guān)閉應(yīng)用程序,如何以編程方式打開(kāi)和關(guān)閉
    發(fā)表于 03-18 21:15

    用MDK生成bin格式的可執(zhí)行文件

    用MDK 生成bin 文件1用MDK 生成bin 文件Embest 徐良平在RV MDK 中,默認(rèn)情況下生成*.hex 的可執(zhí)行文件,但是當(dāng)我們要生成*.bin 的可執(zhí)行文件時(shí)怎么辦呢
    發(fā)表于 08-02 10:52 ?71次下載

    基于LabVIEW的可執(zhí)行文件調(diào)用的研究與實(shí)現(xiàn)

    LabVIEW 是美國(guó)NI 公司推出的一種基于G 語(yǔ)言的虛擬儀器軟件開(kāi)發(fā)工具。在LabVIEW 開(kāi)發(fā)的軟件中,用戶(hù)可能需要調(diào)用.exe 可執(zhí)行文件。本文結(jié)合實(shí)例詳細(xì)介紹了三種調(diào)用方法:通過(guò)Call
    發(fā)表于 08-14 11:42 ?65次下載

    了解在Linux下可執(zhí)行文件格式

    Linux下面,目標(biāo)文件、共享對(duì)象文件、可執(zhí)行文件都是使用ELF文件格式來(lái)存儲(chǔ)的。程序經(jīng)過(guò)編譯之后會(huì)輸出目標(biāo)文件,然后經(jīng)過(guò)鏈接可以產(chǎn)生
    發(fā)表于 05-15 08:49 ?1932次閱讀

    Linux下可執(zhí)行文件格式

    Linux支持的可執(zhí)行文件主要有:Coff,elf,flat,類(lèi)似Windows的.exeCoff文件格式? Common Object File Format,最早與uclinux
    發(fā)表于 04-02 14:46 ?1598次閱讀

    CCES創(chuàng)建可執(zhí)行文件的操作流程

    本模塊將介紹用CrossCore? Embedded Studio (CCES)創(chuàng)建可執(zhí)行文件的整個(gè)流程。涉及的主題包括使用新項(xiàng)目向?qū)?、配置系統(tǒng)和工具選項(xiàng),以及構(gòu)建過(guò)程。
    的頭像 發(fā)表于 07-11 06:06 ?3436次閱讀

    使用Java語(yǔ)言編寫(xiě)戰(zhàn)機(jī)的設(shè)計(jì)報(bào)告和源代碼以及可執(zhí)行文件

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用Java語(yǔ)言編寫(xiě)戰(zhàn)機(jī)的設(shè)計(jì)報(bào)告和源代碼以及可執(zhí)行文件免費(fèi)下載導(dǎo)入eclipse即可運(yùn)行。
    發(fā)表于 11-05 08:00 ?0次下載
    使用Java語(yǔ)言編寫(xiě)戰(zhàn)機(jī)的設(shè)計(jì)報(bào)告和源代碼以及<b class='flag-5'>可執(zhí)行文件</b>

    C語(yǔ)言的源代碼文件和目標(biāo)文件可執(zhí)行文件的詳細(xì)介紹

    1、源代碼文件 存放程序代碼的文件,即我們編輯代碼的文件,稱(chēng)為源代碼文件。 C語(yǔ)言源程序文件的擴(kuò)展名為“.c”。源代碼
    的頭像 發(fā)表于 02-18 11:52 ?8730次閱讀

    【Python】如何將Python腳本打包成exe可執(zhí)行文件

    【Python實(shí)用技巧】如何將Python腳本打包成exe可執(zhí)行文件
    的頭像 發(fā)表于 08-18 12:40 ?1.8w次閱讀
    【Python】如何將Python腳本打包成exe<b class='flag-5'>可執(zhí)行文件</b>

    單獨(dú)下載可執(zhí)行文件MM32F5微控制器

    使用Keil MDK或者IAR等使用圖形界面的開(kāi)發(fā)環(huán)境,可以在圖形界面環(huán)境下編譯源碼工程,并下載編譯生成的可執(zhí)行文件目標(biāo)微控制器中。但若使用ARMGCC等命令行工具鏈,需要額外的
    的頭像 發(fā)表于 02-17 09:32 ?873次閱讀

    labview怎么生成可執(zhí)行文件

    生成可執(zhí)行文件(EXE)是LabVIEW程序開(kāi)發(fā)中的一個(gè)重要步驟,它允許用戶(hù)將LabVIEW項(xiàng)目打包成一個(gè)獨(dú)立的應(yīng)用程序,便于在沒(méi)有安裝LabVIEW的計(jì)算機(jī)上運(yùn)行。 1. 準(zhǔn)備工作 在開(kāi)始生成
    的頭像 發(fā)表于 09-04 17:07 ?1095次閱讀