五月色综合_娇妻卧室含辱迎接领导h_美女ppp_亚洲欧美aaa_天天在线综合_91午夜激情_裸体裸乳免费看_国产精品无码99re_日韩午夜视频在线观看_色爽 av_欧美大奶子视频_美女被爆操_国内久久_日本免费福利视频_苏语棠在线电视剧在线高清在线观看

【ARM】KEIL命令行的介紹與使用

一、文檔背景

Keil MDK在實(shí)際開發(fā)過程中,除了 GUI 操作,Keil 還支持命令行方式執(zhí)行各種任務(wù),如編譯、鏈接、燒錄、調(diào)試和工程管理等。命令行方式的優(yōu)勢在于能夠與自動化構(gòu)建系統(tǒng)、腳本工具(如 Batch、PowerShell、CMake)或 CI/CD(如 Jenkins、GitHub Actions)集成,實(shí)現(xiàn)無人值守的高效開發(fā)流程。

此外,通過Keil 命令行也能在資源受限或遠(yuǎn)程開發(fā)環(huán)境下(如Docker中)提供更靈活的控制方式。通過本文,可以掌握如何利用 Keil 命令行提高開發(fā)效率,實(shí)現(xiàn)基本的自動化構(gòu)建和調(diào)試流程。如圖1所示。

圖1

亦或者,可以搭配第三方軟件工具,比如:VS Code進(jìn)行代碼的編寫,然后調(diào)試時,在VS Code的終端輸入調(diào)試命令,來快速打開原生的KEIL進(jìn)行調(diào)試,詳情請見下方GIF_0。(注意:使用命令行調(diào)試,調(diào)試退出后,軟件也會自動退出。)



二、KEIL的命令行使用

(1)、Keil MDK 的命令行工具通過 UV4.exe 提供,支持多種命令和選項(xiàng),但是要想在CMD終端窗口中運(yùn)行Keil的命令行語句,首先需要我們?yōu)閁V4.exe這個可執(zhí)行程序提前設(shè)置好環(huán)境變量,否則我們將無法在任意目錄下使用Keil的命令行語句(不添加環(huán)境變量,就只可以在keil安裝目錄中的UV4文件夾下使用這些命令行語句),設(shè)置并添加環(huán)境變量的方法如圖2所示:


圖2


(2)接下來,是命令行的基本命令格式,如下代碼塊所示:

這個命令格式一共分為了4部分,逐個解析如下:

①UV4:在這里是命令的標(biāo)識符;

②command:是后面表中列出的命令之一。(如 -b 構(gòu)建、-c 清理)如果未指定命令,uVision 將以交互式構(gòu)建模式(這里交互式構(gòu)建模式的意思其實(shí)就是直接打開keil這個軟件)打開項(xiàng)目文件。

③projectfile:是 uVision 項(xiàng)目文件的名稱,帶有 .uvprojx 擴(kuò)展名;多項(xiàng)目文件的擴(kuò)展名為 .uvmpw。如果未指定項(xiàng)目文件,uVision 將打開最近的項(xiàng)目。

④options:是用于指定目標(biāo)名稱或輸出文件的附加參數(shù)。(如 -t 指定目標(biāo)、-o 輸出日志,后面也有一個對應(yīng)的命令表)。


(3)command參數(shù)可以使用的命令選項(xiàng):

命令描述
-b功能:編譯和構(gòu)建當(dāng)前目標(biāo)(target),構(gòu)建完成后自動退出。
應(yīng)用場景:可用于自動化構(gòu)建流程。例如,配合 CI/CD 工具(如 Jenkins)在每次代碼提交后進(jìn)行編譯驗(yàn)證。
示例:UV4 -b PROJECT1.uvprojx
-c功能:清除當(dāng)前目標(biāo)的構(gòu)建產(chǎn)物。(其實(shí)就是清理Objects和Listings文件夾)
應(yīng)用場景:清理舊文件,確保重新構(gòu)建時沒有殘留文件的干擾。
示例:UV4 -c PROJECT1.uvprojx
-cr功能:清理并重新構(gòu)建
應(yīng)用場景:清理完舊文件后,迅速進(jìn)行新的構(gòu)建用以調(diào)試等
示例:UV4 -cr PROJECT1.uvprojx
-d功能:在調(diào)試模式下啟動μVision。(調(diào)試還是要用IDE界面)
應(yīng)用場景:將此命令與調(diào)試初始化文件一起使用以執(zhí)行自動化測試過程。使用EXIT命令退出調(diào)試會話 。
示例:UV4 -d PROJECT1.uvprojx
-f功能:下載程序到 Flash,并在下載完成后退出。
應(yīng)用場景:生產(chǎn)線中的批量燒錄,或開發(fā)中的快速固件燒寫。
示例:UV4 -f PROJECT1.uvprojx
-r功能:僅重新編譯,并在構(gòu)建過程完成后退出。
應(yīng)用場景:修改某一模塊后,用以驗(yàn)證程序是否有誤
示例:UV4 -r PROJECT1.uvprojx
-5功能:將μVision 4 uvproj文件轉(zhuǎn)換為μVision 5 uvprojx文件。該命令的唯一有效選項(xiàng)是-l,用于寫入日志文件。
應(yīng)用場景:轉(zhuǎn)換舊項(xiàng)目到新格式,僅此而已。
示例:UV4 -5 myoldproject.uvproj -l log.txt
如果轉(zhuǎn)換失敗,將返回錯誤代碼20。
-et功能:導(dǎo)出目標(biāo)配置,將項(xiàng)目目標(biāo)導(dǎo)出到<projectName>.<targetName>.cprj文件。使用選項(xiàng)-t targetname可以指定要導(dǎo)出的目標(biāo),否則將使用當(dāng)前目標(biāo)。請注意, 帶有選項(xiàng)-t的-et命令不會更改項(xiàng)目中的當(dāng)前目標(biāo)配置。該命令不支持其他選項(xiàng)。
應(yīng)用場景:方便、快速的去移植目標(biāo)配置給其他的項(xiàng)目。比如跨團(tuán)隊(duì)共享配置,或作為備份模板。
示例:UV4 -et myProject.uvprojx
將myProject.uvprojx中的當(dāng)前目標(biāo)導(dǎo)出到myProject.<targetName>.cprj文件。
示例:UV4 -et myProject.uvprojx -t “my-target”
將myProject.uvprojx中的目標(biāo)“ my-target”導(dǎo)出到myProject.my-target.cprj文件。
(注意:這個選項(xiàng),沒有被成功調(diào)用)
-ep功能:將所有項(xiàng)目目標(biāo)導(dǎo)出到相應(yīng)的 <projectName>.<targetName>.cprj文件。
示例:UV4 -ep myProject.uvprojx
(注意:這個選項(xiàng),沒有被成功調(diào)用)
-X
功能:在當(dāng)前目標(biāo)的輸出文件夾中,生成預(yù)處理符號文件co-arm_<target_name
>.h/hpp 。

示例:UV4 -X myProject.uvprojx
UV4 -X myProject.uvprojx -T “Target 1”
請注意,生成過程可能需要一段時間。如果要查看進(jìn)度,請使用uvision.com而不是uv4.exe。
(注意:這個選項(xiàng),沒有被成功調(diào)用)
-X1功能:在所有目標(biāo)的輸出文件夾中,生成預(yù)處理符號文件
co-arm_<target_name>.h/hpp 。
示例:UV4 -X1 myProject.uvprojx
請注意,生成過程可能需要一段時間。如果要查看進(jìn)度,請使用uvision.com而不是uv4.exe。
(注意:這個選項(xiàng),沒有被成功調(diào)用)


(4)、option參數(shù)可以使用的命令選項(xiàng):


命令描述
-j0功能:隱藏 μVision GUI。消息將被抑制。此選項(xiàng)適用于批處理測試。
應(yīng)用場景:腳本化操作,避免彈窗干擾。
示例:UV4 -j0 PROJECT1.uvprojx
-i import_file.xml功能:使用 XML 文件中提供的數(shù)據(jù)創(chuàng)建新項(xiàng)目或更新現(xiàn)有項(xiàng)目。XML 文件需符合位于 ..UV4 目錄下的 project_import.xsd 模式。使用此選項(xiàng)時,GUI 將自動隱藏。
示例:
UV4 MyProject.uvprojx -i MyImport.xml
(注意:這個選項(xiàng),暫未經(jīng)過嘗試
-l logfile功能:將命令的輸出保存到指定的日志文件中。
應(yīng)用場景:方便隨時查看命令的輸出。
示例:
UV4 -5 myoldproject.uvproj -l log.txt
如果轉(zhuǎn)換失敗,將返回錯誤代碼 20。
-n device_name功能:使用指定的 device_name 創(chuàng)建新項(xiàng)目。使用此選項(xiàng)時,GUI 將自動隱藏。
應(yīng)用場景:快速創(chuàng)建指定芯片的項(xiàng)目。
示例:
UV4 MyProject.uvprojx -n Device1234
UV4 MyProject.uvprojx -i MyImport.xml -n Device5678 -t FlashDebug
-np device_name功能:如果項(xiàng)目不存在,則使用指定的 device_name 創(chuàng)建新項(xiàng)目。如果項(xiàng)目已經(jīng)存在,則更新所有目標(biāo)的設(shè)備選擇為指定的 device_name。使用此選項(xiàng)時,GUI 將自動隱藏。
應(yīng)用場景:快速創(chuàng)建指定芯片的項(xiàng)目,或快速更新現(xiàn)有目標(biāo)的芯片型號。
示例:
UV4 MyProject.uvprojx -np Device1234
-o outputfile功能:指定輸出日志文件。
應(yīng)用場景:記錄警告和錯誤,或者構(gòu)建歷史。
示例:
UV4 -r PROJECT1.uvprojx -o "listmake.prn"
UV4 -r "C:MyProjectsARMExample-mpw.uvmpw" -o "c:templog.txt"
-q功能:重建多項(xiàng)目文件中所選的目標(biāo)。確保每個目標(biāo)有獨(dú)立的對象輸出文件夾。可通過菜單 Projects - Options for Target - Output - Select Folder for Objects 進(jìn)行設(shè)置。
示例:
UV4 -r "C:MyProjectsARMExample-mpw.uvmpwx" -q -o "c:templog.txt"
(注意:這個選項(xiàng),暫未經(jīng)過嘗試
-s port功能:啟用 UV Socket 端口,并將其分配為指定的端口值。
示例:
UV4 MyProject.uvprojx -s 4328
(注意:這個選項(xiàng),暫未經(jīng)過嘗試
-t targetname功能: 指定目標(biāo)的名稱。如果未指定,則使用上一次已知的目標(biāo)。
應(yīng)用場景:多目標(biāo)工程中選擇特定構(gòu)建。
示例:
UV4 -r PROJECT1.uvprojx -t "MCB2100 Board"
-x啟用 DDE 模式并返回完整的命令輸出。此選項(xiàng)僅能與 -d 命令一起使用。
(注意:這個選項(xiàng),暫未經(jīng)過嘗試
-y啟用 DDE 模式并僅返回命令確認(rèn)。此選項(xiàng)僅能與 -d 命令一起使用。
(注意:這個選項(xiàng),暫未經(jīng)過嘗試
-z功能:重建項(xiàng)目或多項(xiàng)目文件的所有目標(biāo)。
應(yīng)用場景:確保每個目標(biāo)有獨(dú)立的對象輸出文件夾??赏ㄟ^菜單 Projects - Options for Target - Output - Select Folder for Objects 進(jìn)行設(shè)置。
示例:
UV4 -b PROJECT1.uvproj -z -o "c:templog.txt"
UV4 -b "C:MyProjectsARMExample-mpw.uvmpwx" -q -z -o "c:templog.txt"
-sg功能:禁用來自 uvguix 文件的用戶 GUI 布局。在整個會話期間將使用默認(rèn)的編輯和調(diào)試模式窗口布局,并在關(guān)閉項(xiàng)目時不會將布局修改存儲到 uvguix.<user> 文件中。
應(yīng)用場景:適用于以批處理模式運(yùn)行 μVision 時,避免對 uvguix 文件的非預(yù)期修改。
示例:
UV4 -sg myProject.uvproj

(5)

實(shí)戰(zhàn)示例1:

UV4 -b "E:18、文檔預(yù)研新建文件夾STM32_ProjectTest0102.uvprojx"

-b構(gòu)建項(xiàng)目,如果項(xiàng)目里的c文件等沒有改動,生成文件也不會改動。(注意,會彈一下keil軟件然后立馬關(guān)閉)如GIF_1所示:(因?yàn)闆]有需要構(gòu)建的文件,所以很快,一閃而過)


實(shí)戰(zhàn)示例2:

UV4 -r "E:18、文檔預(yù)研新建文件夾STM32_ProjectTest0102.uvprojx"

-r 重構(gòu)項(xiàng)目,所有的文件都會被重新構(gòu)建一遍。(注意,會彈一下keil軟件然后立馬關(guān)閉)如GIF_2所示:(因?yàn)樾枰匦聵?gòu)建,所以會顯示一堆正在編譯的文件,現(xiàn)象較GIF_1更明顯)

實(shí)戰(zhàn)示例3:

UV4 -r "E:18、文檔預(yù)研新建文件夾STM32_ProjectTest0102.uvprojx" -o "C:newtest.txt"

-r 重構(gòu)項(xiàng)目,并且-o把構(gòu)建輸出的結(jié)果顯示在txt文件中。(注意,會彈一下keil軟件然后立馬關(guān)閉)如GIF_3所示:(重新構(gòu)建后,將構(gòu)建窗口中的內(nèi)容都輸出到文本中進(jìn)行記錄,現(xiàn)象較GIF_2更明顯)



實(shí)戰(zhàn)示例4:

UV4 -j0 -sg -r "E:18、文檔預(yù)研新建文件夾STM32_ProjectTest0102.uvprojx" -o "C:newtest.txt"

-j0隱藏μVision GUI界面,-r重構(gòu)項(xiàng)目,并且不會彈keil軟件(加不加-sg其實(shí)都沒事,因?yàn)楦揪蜎]打開IDE),并且-o把構(gòu)建輸出的結(jié)果顯示在txt文件中。如GIF_4所示:(重新構(gòu)建后,將構(gòu)建窗口中的內(nèi)容都輸出到文本中進(jìn)行記錄,且相比于GIF_3,不會再彈出μVision GUI界面,效果會更好一些)


實(shí)戰(zhàn)示例5:

UV4 -d "E:18、文檔預(yù)研新建文件夾STM32_ProjectTest0102.uvprojx"

-d是調(diào)試,其實(shí)這里有些失去了命令行的意義,因?yàn)榻K究還是打開了μVision GUI界面,但如果場景是搭配VS Code,那么確實(shí)可以在VS Code調(diào)一下該命令,借助原生IDE對內(nèi)核進(jìn)行調(diào)試,調(diào)試退出后原生IDE會自動關(guān)閉,也很省心,其實(shí)也可以。如GIF_5所示:


實(shí)戰(zhàn)示例6:

UV4 -f "E:18、文檔預(yù)研新建文件夾STM32_ProjectTest0102.uvprojx"

-f是燒錄,預(yù)先配置好軟件內(nèi)的燒錄選項(xiàng),(或者搭配外部的批量燒錄工具,進(jìn)行固件的批量燒錄);如GIF_6所示:



三、討論分析

問:都有什么應(yīng)用場景?

答:

①自動化編譯與構(gòu)建:在團(tuán)隊(duì)開發(fā)中,需要頻繁編譯代碼并驗(yàn)證是否通過。這時,我們就可以通過命令行工具,可以將構(gòu)建過程集成到腳本中。

②批量處理與多項(xiàng)目管理:需要同時清理或構(gòu)建多個項(xiàng)目或目標(biāo),如:同時編譯 Debug 和 Release 版本,或者一次生成10個、甚至100個版本的固件(比如Flash燒寫算法,就可以使用該命令行,一次性生成各個Flash大小的FLM文件,不必再逐個、按Flash大小、去生成)。

③在服務(wù)器上的Docker中使用,即使沒有GUI界面,也可以依靠此命令行,完成工程的編譯,緩解本地資源。

④批量燒錄,在生產(chǎn)線上結(jié)合硬件,通過命令行批量燒錄固件。


四、結(jié)論

Keil 命令行工具的核心價值,我覺得其實(shí)在于自動化和可集成性,如:①對于繁雜的大型項(xiàng)目,這無疑能提升效率,減少重復(fù)手動操作;②進(jìn)行規(guī)?;幚?,比如批量編譯、測試或部署;③跨平臺協(xié)作,在服務(wù)器或無 GUI 環(huán)境中運(yùn)行。

掌握這些場景后,我們可以根據(jù)實(shí)際需求,再進(jìn)而去設(shè)計更高效的開發(fā)流程,甚至探索與其他工具(如靜態(tài)分析工具、硬件測試框架)的深度集成,都是有一定可行性的路線。

主站蜘蛛池模板: 广元市| 玛纳斯县| 昆明市| 平江县| 德兴市| 神池县| 赤水市| 浦东新区| 广河县| 乐陵市| 景谷| 汝南县| 正宁县| 万安县| 从江县| 兴化市| 潮州市| 巴楚县| 肇州县| 桂东县| 科技| 张家港市| 株洲市| 喜德县| 北京市| 乾安县| 新蔡县| 炉霍县| 久治县| 芮城县| 修水县| 安阳市| 万宁市| 黔西县| 石嘴山市| 苏尼特右旗| 盐源县| 北安市| 龙江县| 庆安县| 高淳县|