引言
使用Keil MDK或者IAR等使用圖形界面的開發(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)試器無法支持更新的微控制設(shè)備。相比而言,開源的DAP-Link方案更接地氣。可以適配DAP-Link的命令行工具有openocd、pyocd等,但這些工具對(duì)某些具體微控制器設(shè)備的兼容性并不是很好,時(shí)不時(shí)會(huì)出現(xiàn)不識(shí)別設(shè)備或者連接不上的情況,需要開發(fā)者自行調(diào)試才能確保它們能夠正常工作。同時(shí),基于命令的操作方式,對(duì)于已經(jīng)習(xí)慣了在圖形界面環(huán)境下調(diào)試的開發(fā)者而言,也不是很友好。不過,若是需要搭建持續(xù)集成和自動(dòng)化測(cè)試系統(tǒng),這些基于命令行的工具仍是不可或缺的。
對(duì)于僅專注于微控制器端的軟件開發(fā)者而言,希望能夠以最簡單的方式解決單獨(dú)下載可執(zhí)行文件的問題。本文將以下載MicroPython固件文件到靈動(dòng)MM32F5微控制器為例,總結(jié)了幾種簡單易用的方法,專門針對(duì)使用DAP-Link調(diào)試器的情況,通過常用圖形界面工具,實(shí)現(xiàn)單獨(dú)下載可執(zhí)行文件的功能。
PS:針對(duì)MM32F5微控制器,不得不使用本文描述方法的原因,還在于一些主觀因素:
筆者手頭上的J-Link v8不再支持STAR-MC1(Arm Cortex-M33)內(nèi)核
筆者使用pyocd+DAP-Link的組合,經(jīng)過一段時(shí)間的調(diào)試,仍無法實(shí)現(xiàn)連接到MM32F5微控制器
使用DAP-Link在Keil中可以調(diào)試MM32F5微控制器
使用這些工具可以識(shí)別常用的可執(zhí)行文件類型,例如bin、hex、axf、elf、s19等。用戶可根據(jù)需要嘗試。
借用Keil工程
Keil IDE實(shí)現(xiàn)下載功能的部分,相對(duì)于編譯過程,在內(nèi)部應(yīng)該也是一個(gè)獨(dú)立的小工具,這是筆者得以實(shí)現(xiàn)用Keil下載程序的關(guān)鍵。Keil沒有將內(nèi)部的下載工具獨(dú)立地開放出來,因此,筆者不得不創(chuàng)建一個(gè)不包含任何源碼的空工程,跳過編譯部分,僅使用其中下載程序的功能。具體操作步驟如下:
1啟動(dòng)Keil IDE,創(chuàng)建新工程,并選定設(shè)備類型為目標(biāo)微控制器設(shè)備。
筆者實(shí)際在本機(jī)的`d:\_worksapcekeilmm32f5`目錄下,創(chuàng)建了`mm32f5.uvprojx`工程文件。
圖1 在Keil IDE中創(chuàng)建新工程
2在`options` -> `Output` 選項(xiàng)卡中,指定將要下載的可執(zhí)行文件的路徑。
在樣例中,筆者在`mm32f5`目錄下,存放了`micropython.hex`文件。點(diǎn)擊`Select Folder for Objects...`按鈕,指定為`mm32f5`目錄,然后在`Name of Executable:`對(duì)應(yīng)的文本框中輸入了`micropython.hex`文件名。
圖2 在Keil工程中指定下載文件的路徑及文件名
從字面上看,這里指定的是編譯輸出的路徑和文件名,但實(shí)際上,下載過程是同編譯過程綁定的,編譯過程生成的可執(zhí)行文件,將被Keil自動(dòng)作為下載過程的輸入文件。
3在主窗口的工具欄中,單擊LOAD按鈕,啟動(dòng)下載。
圖3 在Keil工程中下載可執(zhí)行文件到微控制器
通過 `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`文件中,編輯`OutputDirectory`和`OutputName`字段,指定將要下載程序的路徑和文件名。
2.1 ###uVisionProject,(C)KeilSoftware Target1 0x4 ARM-ADS 1 MM32F5277E9P MindMotion MindMotion.MM32F5277E_DFP.0.0.3 http://www.mindmotion.com.cn/Download/MDK_KEIL/ IRAM(0x30000000,0x1C000)IROM(0x08000000,0x40000)CPUTYPE("Cortex-M33")CLOCK(12000000)ELITTLE UL2V8M(-S0-C0-P0-FD30000000-FC1000-FN1-FF0MM32F5270_256-FS08000000-FL040000-FP0($$Device:MM32F5277E9P$FlashMM32F5270_256.FLM)) .... micropython.hex ...
然后在Windows的命令行界面,輸入調(diào)用Keil下載代碼的命令:
uv4.exe-f"d:\_workspacekeilmm32f5mm32f5.uvprojx"-j0-o"d:\_workspacekeilmm32f5download_log.txt"
使用命令行方式有一點(diǎn)不方便,命令行在后臺(tái)調(diào)用Keil執(zhí)行下載過程沒有任何用戶交互。命令行觸發(fā)執(zhí)行`uv4.exe`程序不是阻塞式的,所以無法通過程序是否返回判定下載過程已結(jié)束。雖然在命令中指定輸出log到指定文件中,但Keil并不是在下載結(jié)束后才創(chuàng)建輸出文件,而是逐條寫入輸出文件。如果用戶在下載過程中打開這個(gè)log輸出文件,將會(huì)看到已經(jīng)執(zhí)行的部分操作。因此,也不能通過是否創(chuàng)建log輸出文件判定已將下載成功。必須檢查log輸出文件的內(nèi)容,待其中包含下載成功并通過驗(yàn)證的記錄后,才能最終判定下載情況。
使用Ozone
常用J-Link調(diào)試器的開發(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ì)開源CMSIS-DAP(DAP-Link)的支持,即使用Ozone通過DAP-Link連接到目標(biāo)微控制器,也能夠?qū)崿F(xiàn)獨(dú)立下載而執(zhí)行文件并調(diào)試的功能。不過,Ozone支持DAP-Link畢竟只是額外的福利,幾乎每個(gè)步驟都會(huì)彈窗提示,“這只是個(gè)試用功能,未經(jīng)過充分測(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”。
圖4 啟動(dòng)Ozone
2選擇目標(biāo)微控制器設(shè)備。
當(dāng)確認(rèn)目標(biāo)微控制器設(shè)備后,警告提示對(duì)話框會(huì)再次彈出。仍然是接受“Accept”。
圖5 在Ozone中選擇目標(biāo)設(shè)備
3在“連接配置”對(duì)話框中,可以看到已經(jīng)識(shí)別出來的DAP-Link了。
Ozone連接調(diào)試器的速度,在默認(rèn)情況下被配置成4MHz。筆者手上的DAP-Link方案中,使用的是低速USB接口,考慮穩(wěn)妥的情況,將速度改為1MHz。
圖6 Ozone顯示識(shí)別出的DAP-Link調(diào)試器
4選擇將要下載的可執(zhí)行文件
圖7 選擇將要下載的可執(zhí)行文件
5開始下載。
再次彈出提示對(duì)話框。選擇接受“Accept”。
再次彈出提示對(duì)話框。選擇接受“Yes”。
圖8 啟動(dòng)下載確認(rèn)第二次警告
6下載成功
圖9 使用Ozone下載成功
如果對(duì)頻繁彈出的警告對(duì)話框不喜,可勾選“不要重復(fù)彈出”復(fù)選框,有一定改善效果。
審核編輯:湯梓紅
-
微控制器
+關(guān)注
關(guān)注
48文章
7496瀏覽量
151083 -
keil
+關(guān)注
關(guān)注
68文章
1212瀏覽量
166701 -
調(diào)試器
+關(guān)注
關(guān)注
1文章
300瀏覽量
23694 -
J-Link
+關(guān)注
關(guān)注
0文章
83瀏覽量
22119 -
MM32F5
+關(guān)注
關(guān)注
0文章
12瀏覽量
527
原文標(biāo)題:靈動(dòng)微課堂 (第243講)|單獨(dú)下載可執(zhí)行文件到MM32F5微控制器
文章出處:【微信號(hào):MindMotion-MMCU,微信公眾號(hào):靈動(dòng)MM32MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論