人妻蜜と1~4中文字幕月野定规 ,国产精品成人va在线播放,色优久久久久综合网鬼色,WWW插插插无码视频网站

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

一、文檔背景

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

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

圖1

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



二、KEIL的命令行使用

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


圖2


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

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

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

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

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

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


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

命令描述
-b功能:編譯和構(gòu)建當(dāng)前目標(biāo)(target),構(gòu)建完成后自動(dòng)退出。
應(yīng)用場(chǎng)景:可用于自動(dò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)用場(chǎng)景:清理舊文件,確保重新構(gòu)建時(shí)沒(méi)有殘留文件的干擾。
示例:UV4 -c PROJECT1.uvprojx
-cr功能:清理并重新構(gòu)建
應(yīng)用場(chǎng)景:清理完舊文件后,迅速進(jìn)行新的構(gòu)建用以調(diào)試等
示例:UV4 -cr PROJECT1.uvprojx
-d功能:在調(diào)試模式下啟動(dòng)μVision。(調(diào)試還是要用IDE界面)
應(yīng)用場(chǎng)景:將此命令與調(diào)試初始化文件一起使用以執(zhí)行自動(dòng)化測(cè)試過(guò)程。使用EXIT命令退出調(diào)試會(huì)話 。
示例:UV4 -d PROJECT1.uvprojx
-f功能:下載程序到 Flash,并在下載完成后退出。
應(yīng)用場(chǎng)景:生產(chǎn)線中的批量燒錄,或開(kāi)發(fā)中的快速固件燒寫(xiě)。
示例:UV4 -f PROJECT1.uvprojx
-r功能:僅重新編譯,并在構(gòu)建過(guò)程完成后退出。
應(yīng)用場(chǎng)景:修改某一模塊后,用以驗(yàn)證程序是否有誤
示例:UV4 -r PROJECT1.uvprojx
-5功能:將μVision 4 uvproj文件轉(zhuǎn)換為μVision 5 uvprojx文件。該命令的唯一有效選項(xiàng)是-l,用于寫(xiě)入日志文件。
應(yīng)用場(chǎng)景:轉(zhuǎn)換舊項(xiàng)目到新格式,僅此而已。
示例:UV4 -5 myoldproject.uvproj -l log.txt
如果轉(zhuǎn)換失敗,將返回錯(cuò)誤代碼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)。請(qǐng)注意, 帶有選項(xiàng)-t的-et命令不會(huì)更改項(xiàng)目中的當(dāng)前目標(biāo)配置。該命令不支持其他選項(xiàng)。
應(yīng)用場(chǎ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文件。
(注意:這個(gè)選項(xiàng),沒(méi)有被成功調(diào)用)
-ep功能:將所有項(xiàng)目目標(biāo)導(dǎo)出到相應(yīng)的 <projectName>.<targetName>.cprj文件。
示例:UV4 -ep myProject.uvprojx
(注意:這個(gè)選項(xiàng),沒(méi)有被成功調(diào)用)
-X
功能:在當(dāng)前目標(biāo)的輸出文件夾中,生成預(yù)處理符號(hào)文件co-arm_<target_name
>.h/hpp 。

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


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


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


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

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

-r 重構(gòu)項(xiàng)目,所有的文件都會(huì)被重新構(gòu)建一遍。(注意,會(huì)彈一下keil軟件然后立馬關(guān)閉)如GIF_2所示:(因?yàn)樾枰匦聵?gòu)建,所以會(huì)顯示一堆正在編譯的文件,現(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文件中。(注意,會(huì)彈一下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)目,并且不會(huì)彈keil軟件(加不加-sg其實(shí)都沒(méi)事,因?yàn)楦揪蜎](méi)打開(kāi)IDE),并且-o把構(gòu)建輸出的結(jié)果顯示在txt文件中。如GIF_4所示:(重新構(gòu)建后,將構(gòu)建窗口中的內(nèi)容都輸出到文本中進(jìn)行記錄,且相比于GIF_3,不會(huì)再?gòu)棾靓蘓ision GUI界面,效果會(huì)更好一些)


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

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

-d是調(diào)試,其實(shí)這里有些失去了命令行的意義,因?yàn)榻K究還是打開(kāi)了μVision GUI界面,但如果場(chǎng)景是搭配VS Code,那么確實(shí)可以在VS Code調(diào)一下該命令,借助原生IDE對(duì)內(nèi)核進(jìn)行調(diào)試,調(diào)試退出后原生IDE會(huì)自動(dòng)關(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所示:



三、討論分析

問(wèn):都有什么應(yīng)用場(chǎng)景?

答:

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

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

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

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


四、結(jié)論

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

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