一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

【工具使用】Keil5軟件使用-進階工程配置篇

 清涼茶 2023-12-27 發(fā)布于江西

一、概述

????本文面向已經(jīng)懂得軟件基本操作的職業(yè)老手,如果是未使用過該軟件的小鮮肉,請移步基礎篇。這里以STM32芯片為例對工具進行講解,其他品牌的芯片在工程配置上可能存在差異。

二、軟件說明

????Keil提供了包括C編譯器、宏匯編、鏈接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(μVision)將這些部分組合在一起。
????目前軟件對中文的支持不友好,不建議安裝網(wǎng)上的一些漢化包之類的。另外建立的工程文件路徑也盡量不要存在中文,否則可能會出現(xiàn)一些異常。
演示版本:5.24a

三、軟件使用

1、設備選擇(Device)

  1. 通過圖中1位置的"search"框可以輸入芯片名稱,快速找到對應的芯片。
  2. 在圖中2的位置芯片結(jié)構(gòu)圖里也可以選擇芯片,這里芯片是按廠家區(qū)分的。
  3. 選擇完芯片后,在圖中3的位置可以查看芯片簡介,一般主頻、Flash、Ram大小都會在這里有所介紹。
  4. 選擇完芯片后,在圖中4的位置,可以查看當前芯片包的版本。(有些舊的軟件包可能存在Bug,最好及時更新到最新版本)

在這里插入圖片描述

2、目標設置(Target)

  • 使用RTX操作系統(tǒng)

????RTX(Real Time eXecutive)是ARM公司針對ARM7,ARM9,cortex-m內(nèi)核推出的一款嵌入式實時操作系統(tǒng)。RTX的源碼跟Keil-MDK綁定在一起,安裝了Keil-MDK之后,可以在 Keil\ARM\RL\RTX\SRC文件夾下找到源碼。
????所以在Keil上移植RTX操作系統(tǒng)十分方便。
????第一步此選項選擇"RTX kernel"。
在這里插入圖片描述
????第二步添加RTX系統(tǒng)的配置文件,配置文件在MDK的安裝目錄C:\Keil_v474\ARM\RL\RTX\Config下面,文件名RTX_Conf_CM.c
在這里插入圖片描述
????注意:工程里面不能有SysTick,PendSV和SVC三個系統(tǒng)中斷的使用,因為RTX系統(tǒng)要使用這三個中斷。
????其他的移植事項這里就不多贅述了,如果有興趣,可以單獨出一篇RTX的移植。

  • 選擇編譯器

????在"Code Generation"中的"ARM Compiler"下拉選項框中可以選擇不同的編譯器版本。選擇不同編譯器版本時,工程配置的一些選項會有相應的變化,這里我們一般默認選用"Use defalut compiler version 5"即可。如果是全新的工程,可以試下V6的編譯器,速度更快,但缺點就是跟現(xiàn)在大部分主流工程不兼容,因為使用的編譯器完全不一樣。
在這里插入圖片描述

  • 設置晶振頻率

????在Xtal(MHz)后面可以填寫當前使用的開發(fā)板上芯片系統(tǒng)使用的晶振頻率。這個只會在仿真調(diào)試中使用,如果直接用開發(fā)板在線調(diào)試,這個可以不用管。
在這里插入圖片描述

  • 跨模塊優(yōu)化選項

????勾選"Use Cross-Module Optimization"選擇跨模塊優(yōu)化,此選項可在編譯鏈接后對文件鏈接再進一步進行優(yōu)化,從而減少一些開銷。選擇此功能時,可能會導致編譯時間變長,但同樣的可以使得編譯后所使用的空間減少。
在這里插入圖片描述

  • 微庫選項

????勾選"Use MicroLIB"可選擇使用標準缺省庫,勾選這個會導致很多庫函數(shù)用不了,但換來的是節(jié)省了大量的空間。
在這里插入圖片描述

  • 硬件浮點單元(FPU)

????如果是M3、M4內(nèi)核,且芯片硬件有浮點計算單元,可通過勾選"Floating Point Hardware"打開硬件浮點計算功能。
在這里插入圖片描述

  • ROM區(qū)設置

????注意這里有IROM和ROM的區(qū)別,IROM是指片內(nèi)集成的ROM(上面也有一行小字寫了on-chip),也就是查芯片手冊上規(guī)定好的內(nèi)部Flash的地址段。先講IROM,一般選好芯片后,工程會默認有一套配置,比如現(xiàn)在選的STM32F302RBTx,其片上Flash是0x8000000開始,大小是128K,也就是這里的0x20000字節(jié)。這前后有兩個選項,“default"可以勾選啟動時是否對此段ROM空間進行初始化。而"Startup"則可以勾選當前程序是要在哪個Flash段開始啟動。
????舉個簡單的例子,像正常的只用一段App程序的情況下,只要設置一段ROM即可,起始即為片內(nèi)Flash起始地址,默認勾選"default”,也就是程序燒錄時,會把此段Flash進行初始化,并且程序從此地址開始運行。那如果此時我有兩段程序呢?也就是現(xiàn)在常用的一種方式,程序分兩段,一段作為引導程序boot,另一段是實際運行的App程序,那么boot應設置在片內(nèi)起始地址段,大小根據(jù)boot實際占用空間大小來定義。App接在boot地址段后面,此時"Startup"應勾選在boot段。
在這里插入圖片描述

  • RAM區(qū)設置

????注意這里有IRAM和RAM的區(qū)別,IRAM是指片內(nèi)集成的RAM(上面也有一行小字寫了on-chip),也就是查芯片手冊上規(guī)定好的內(nèi)部ram的地址段。
在這里插入圖片描述

注:對于ROM跟RAM的設置,光靠這個界面設置并不全面,最直觀的就是這里IRAM/IROM只有兩段,而STM32H7B0光IRAM就有三段,根本不足以設置。所以想要設置全面,應該使用.sct文件,這個后面會講到。

  • 系統(tǒng)視圖文件

????在"System Viewer File"選項中勾選"Use Custom File",可以自主選擇芯片的視圖文件?,F(xiàn)在國產(chǎn)化芯片越來越多,不同廠家芯片支持的視圖可能不同。如果使用ST的芯片,這里不用改,使用默認文件即可。
在這里插入圖片描述

3、輸出設置(Output)

  • 輸出文件路徑和輸入文件名稱

????在"Select Folder for Objects"里可以設置輸出文件的路徑,在"Name of Executable"后面可以設置輸出的文件名。這個輸出文件路徑和文件名也是Keil工程燒錄和調(diào)試獲取文件的依據(jù)。
????比如這里輸出路徑設置為/Out,文件名為TestPro,那燒錄時,Keil會去查找當前工程路徑下/Out路徑下是否存在TestPro.axf這個文件,有就燒錄,沒有就報錯。如果要使用.Hex文件燒錄,則文件名這里填寫TestPro.Hex。
在這里插入圖片描述

注:調(diào)試只能使用.axf文件,因為.Hex文件不帶調(diào)試信息。

  • 生成.Hex可執(zhí)行文件

????勾選"Create HEX File"即可在編譯后生成.hex文件。

  • 生在.Lib封裝庫文件

????當需要封裝模塊或打包SDK包時,可以勾選"Create Library"這個選項,該選項與"Create Executable"互斥,選擇生成.lib文件而不是完整的可執(zhí)行.axf文件。這種一般是用于提供二次開發(fā)的軟件包使用。

  • 生成.bat編譯執(zhí)行腳本

????勾選"Create Batch File"即可在編譯后生成.bat的編譯執(zhí)行腳本,即可以不用打開Keil工程,只需要執(zhí)行編譯執(zhí)行腳本即可編譯工程軟件。

  • 調(diào)試信息

????勾選"Debug Infomation"可以選擇是否生成調(diào)試信息,注意去掉此勾選項時,無法打斷點調(diào)試。

  • 瀏覽信息

????勾選"Browse Infomation"可以選擇是否生成瀏覽信息,有這個瀏覽信息時,可以在Keil里索引函數(shù)或變量的定義,調(diào)用等,沒有這個信息就無法把這些信息關聯(lián)起來。如果不用Keil作為代碼編輯器的小伙伴,去掉這個勾選項,可以減少編譯的時間。
在這里插入圖片描述

4、生成列表設置(Listing)

在這里插入圖片描述

  • 設置鏈接文件輸出路徑

Select Folder for Listings…:選擇列表文件的輸出路徑。
Page Width:定義列表文件每行字符數(shù)量。
Page Length:定義列表文件每頁字符數(shù)量。
這兩個基本都用不著,按默認設置即可。
在這里插入圖片描述

  • 生成鏈接文件

Assembler Listing: .\Listings*.lst:為匯編源文件創(chuàng)建列表文件,對應產(chǎn)生源文件名.lst 的文件。
Cross Reference:列出有關符號的交叉引用信息,包括它們的定義位置以及宏的內(nèi)部和外部的使用位置。
在這里插入圖片描述

  • 生成過程文件

C Compiler Listing: .\Listings*.txt:為 C 源文件創(chuàng)建列表文件,對應產(chǎn)生 源文件名.txt 的文件 和 源文件名.lst 的文件。
C Preprocessor Listing: .\Listings*.i:指示編譯器生成預處理文件。 宏調(diào)用將被展開并且注釋將被刪除 對應產(chǎn)生 源文件名.i 的文件。
在這里插入圖片描述

  • 生成Map文件

Linker Listing: .\Listings\TestPro.map:主要是用來生成代碼詳細信息的map文件,用于后面的代碼分析。這里面有選項建議全部勾選上。
Memory Map:包含一個內(nèi)存映射,其中包含鏡像中每個加載區(qū),執(zhí)行區(qū)和輸入節(jié)的地址和大小,包括調(diào)試和鏈接器生成的輸入節(jié)。
Callgraph:以HTML格式創(chuàng)建函數(shù)的靜態(tài)調(diào)用圖文件。調(diào)用圖給出了鏡像中所有函數(shù)的定義和參考信息。
Symbols:列出本地,全局和鏈接器生成的符號以及符號值。
Cross Reference:列出輸入節(jié)之間的所有交叉引用。
Size Info:給出鏡像中每個輸入對象和庫成員的代碼和數(shù)據(jù)(RO數(shù)據(jù),RW數(shù)據(jù),ZI數(shù)據(jù)和調(diào)試數(shù)據(jù))大小的列表。
Totals Info:提供輸入對象和庫的代碼和數(shù)據(jù)(RO數(shù)據(jù),RW數(shù)據(jù),ZI數(shù)據(jù)和調(diào)試數(shù)據(jù))大小的總和。
Unused Sections Info:列出從鏡像中刪除的所有未使用的部分。
Veneers Info:提供鏈接器生成的Thumb/ARM膠合代碼的詳細信息。
在這里插入圖片描述

5、用戶選項(User)

  • 編譯前后執(zhí)行腳本設置

Before Compile C/C++ File:編輯文件之前
Before Build/Rebuild:編譯工程之前
After Build/Rebuild:編譯工程之后
用戶配置界面

????一般編譯完會生成.axf文件,如果要生成.bin文件,可以在編譯后調(diào)用keil安裝路徑下/ARM/ARMCC/bin/fromelf.exe這個工具,提取.axf文件里的.bin文件。為了把這個操作集成在Keil里,這里可以在"After Build/Rebuild"下面的"Run #1"里添加

$K/ARM/ARMCC/bin/fromelf --bin -o "$L@L.bin" "!L"

????勾選前面的選項框就可以在編譯后執(zhí)行。有時候如果不想執(zhí)行該命令,可以把勾選去掉。
另外"Before Compile C/C++ File"和"Before Build/Rebuild"這兩個也同理,只是執(zhí)行腳本命令的時間不同而已,這個根據(jù)實際想要的效果來定。因為這里只有兩個選項,所以如果要執(zhí)行的腳本有很多,建議自己在外面寫個批處理調(diào)用其他腳本,然后這里只調(diào)用那個批處理即可。
常用的幾個語法如下:
$:擴展為指定文件的路徑名
@ :表示 Output -> Name of Exectable:定義的工程名,比如test1
!:表示當前目錄下的擴展路徑
!L:表示編譯(Build)后,就是 .\obj\xx.axf文件
K:keil develop chaintool 工具鏈(fromelf.exe)
L:Linker output file,比如工程名為test1,L.bin 編譯后,生成的就是最終的test1.bin文件
$K:表示當前Keil安裝的根目錄
$L:是指axf的文件路徑,不含文件名。
@L:是指axf的文件名,不含axf的后綴。

需要知道所有用法的,可以參考官方手冊http://www./support/man/docs/uv4/uv4_ut_keysequence.htm

Run “After Build” conditionally:After Build/Rebuild的執(zhí)行條件。沒整明白這個有什么用
Beep When Complete:編譯完成發(fā)出聲音。勾選時在編譯完成時會響一下。
Start Debugging:啟動調(diào)試程序。沒整明白這個有什么用
用戶配置勾選項

6、C/C++設置(C/C++)

C/C++設置視圖

  • 預處理符號(PreProcessor Symbols)

Define:用于做一些工程全局宏定義。
在這里插入圖片描述

注:在這里修改宏定義時,需要全編譯才可生效,局部編譯是不生效的哦

  • 語言/代碼規(guī)則設置

在這里插入圖片描述
Execute-only Code:只生成執(zhí)行代碼,生成執(zhí)行代碼防止編譯器生成任何數(shù)據(jù)訪問代碼部分。
Optimization:優(yōu)化等級,這個會比較常用,當項目工程較大,對芯片空間比較吃緊時,可以考慮提升優(yōu)化等級。ST的芯片這里有0~3,4個等級可選。
-O0應用最小優(yōu)化:
大多數(shù)優(yōu)化都被關閉,生成的代碼具有最佳的調(diào)試視圖。
-O1應用受限優(yōu)化:
例如,刪除未使用的內(nèi)聯(lián)函數(shù)和未使用的靜態(tài)函數(shù)。在這個優(yōu)化級別,編譯器還應用自動優(yōu)化,例如刪除冗余代碼和重新排序指令以避免互鎖情況。生成的代碼經(jīng)過合理優(yōu)化,具有良好的調(diào)試視圖。
-O2應用高優(yōu)化(這是默認設置):
在此級別應用的優(yōu)化利用了ARM對處理器體系結(jié)構(gòu)的深入了解,利用給定目標的特定于處理器的行為。它生成優(yōu)化良好的代碼,但有限調(diào)試視圖。
-O3應用最積極的優(yōu)化:
優(yōu)化符合用戶的-Ospace / -Otime選擇。默認情況下,多文件編譯時啟用,這會導致更長的編譯時間,但會提供最高級別的優(yōu)化。
目前就使用經(jīng)驗來看,優(yōu)化等級2節(jié)省的空間最多,具體原理還沒去細究。
在這里插入圖片描述

注:提升優(yōu)化等級后,對代碼的規(guī)范嚴格度提升,調(diào)試的友好程度會降低,請適當使用。

Optimize for Time:按時間性能優(yōu)化,一般對代碼執(zhí)行時間比較敏感的,可以勾選這個選項,但勾選后為了提升時間性能,編譯后可能會增加一部分空間占用。(魚與熊掌不可兼得呀)

Split Load and Store Multiple:加載和儲存多個分裂;非對其數(shù)據(jù)采用多次訪問方式,當LMD/STM指令有4個以上產(chǎn)生時,則分裂LMD和指令,以減小中斷延遲。

One ELF Section per Function:優(yōu)化每一段函數(shù)ELF段(建議都勾選);每個函數(shù)都會產(chǎn)生一個ELF段,勾選該功能允許優(yōu)化每個ELF,可以減少潛在的共享地址、數(shù)據(jù)和函數(shù)之間的字符串;直白說就是可以減少代碼量ROM的大小(內(nèi)存RAM不會減少)

Strict ANSI C:標準(嚴格)的ANSI C;即編譯時嚴格按照標準的ANSI C進行檢查。為了養(yǎng)成良好的編程習慣,寫出更具移植性的代碼,建議勾選。

Enum Container always int:枚舉時成員變量總為int型。如果空間吃緊,這里就不建議勾選了。

Plain Char is Signed(看情況選擇):字符類型為有符號變量。這個不得不說曾經(jīng)踩過的坑,原本有個項目,從C51平臺移植到ST的平臺,發(fā)現(xiàn)怎么跑都不對勁,后面發(fā)現(xiàn)代碼里很多8位的變量定義用的是char,在C51平臺編譯器編譯成無符號類型,到ST平臺就變成有符號類型。所以很多教材里說signed這個關鍵字可以省略,不適用于所有情況。為了可移植性,最好都寫上,或者IDE里有類似這種選項時,要多留個心眼。

Read-Only Position Independent:為常量生成獨立的代碼空間;比如我們可以將字庫變量定義為常量,勾選該功能后會將這些字庫變量放在獨立的代碼空間中。

Read-Write Position Independent:為可讀寫代碼生成獨立的代碼空間。

Warnings(建議All Warnings):No Warning:不會有警告提示和輸出;All Warnings:所有警告提示和輸出。建議選All Warnings,很多告警都不是空穴來風,檢查下好點。
在這里插入圖片描述

Thumb Mode(注意:在工程中該模式為默認,即無法選擇):Thumb模式;指定設置文件或文件夾(組)為Thumb模式。

No Auto Includes(一般不勾選):不自動添加頭文件;不勾選該項則編譯器會在Keil安裝路徑下尋找工程中的 .h 文件。如果使用了標準庫,勾選后Keil只會在工程路徑下找?guī)旌瘮?shù)的頭文件,如果沒自己加進來一般是找不到的。

C99 Mode(看情況選擇):C99模式,勾選選擇啟用C99標準,如不勾選,則按C89標準來。為了高移植性,不建議勾選。
在這里插入圖片描述

  • 環(huán)境設置及配置

Include Paths:包含路徑,Keil編譯時查找頭文件,除了Keil本身安裝路徑下和自身工程路徑,還有一個就是這里添加的路徑。

Misc Controls:多功能控件,比如這里添加–gnu,可以使用gnu編程規(guī)范。

Compiler control string:編譯器控制字符串,這個只是用來看當前的一些編譯器設置,通過上面不同的勾選設置,這里會有不同的顯示。如果沒有Keil這種界面化工具,自己想要給編譯器設置,就可以使用該窗口中的這些指令。
在這里插入圖片描述

7、匯編設置(Asm)

在這里插入圖片描述
這一部分基本可以參考上文C/C++的設置,只不是這里是對匯編進行設置。

Conditional Assembly Control Symbols(有條件的裝配控制符號)
Define:定義,指定匯編條件。

Language/Code Generation(語言代碼生成)
Read-Only Position Independent:為常量生成獨立的代碼空間。
Read-Write Position Independent:為可讀寫代碼生成獨立的代碼空間。
Thurmb Mode:Thumb模式;指定設置文件或文件夾(組)為Thumb模式。
No Warnings:無警告,勾選后不會有warning警告提示。
Split Load and Store Multiple:加載和存儲多個分裂。
Execute-only Code:只生成執(zhí)行代碼。
No Auto Includes:不自動添加頭文件(一般不勾選)。
Include Paths:頭文件包含路徑。
Misc Controls:多功能控件。
Assembler control string:編譯器控制字符串。

8、鏈接設置(Linker)

鏈接器設置
Use Memory Layout from Target Dialog:使用分散文件加載對話框Target頁面,這個需要配置"Scatter File"一起使用。當勾選時,其ROM和RAM的設置使用的是前文提到的Target里ROM、RAM的設置。當不勾選時,需要在Scatter File里打開對應的sct文件進行編輯。

Make RW Sections Position Independent:使RW段獨立。
啟用時:變量區(qū)域(包含RW和ZI)具有獨立地址。
禁用時:變量區(qū)域(包含RW和ZI)位于絕對的內(nèi)存地址。
Make RO Sections Position Independent:使RO段獨立。
啟用時:常量和代碼區(qū)域(RO)具有獨立地址。
禁用時:常量和代碼區(qū)域(RO)位于絕對的內(nèi)存地址。

一般這兩項都是禁用狀態(tài),即程序所有編譯出來的函數(shù)、變量等,都使用絕對地址,在Map文件中查看到的都是一個絕對地址,燒入板子中即可使用。那什么時候會把它開啟呢?當有需要用到多個App,且App起始地址不固定時,就要使用此功能了。這個有興趣可以單獨開一篇詳細討論下。

Don’t Search Standard Libraries:不搜索標準庫。

Report 'might fail’ Conditions as Errors:報告’might fail’條件認為是錯誤。

X/O Base:X/O基地址
R/O Base:R/O基地址
R/W Base:R/W基地址
disable Warnings:禁止告警命令
在這里插入圖片描述

Misc controls:多功能控件。
Linker control string:鏈接器控制字符串。
在這里插入圖片描述

9、調(diào)試設置(Debug)

通過單選"Use Simulator"和"Use XXX"選擇是用模擬仿真還是在線仿真
在這里插入圖片描述

1. 在線仿真

Use ST-Link Debugger:選擇燒錄器類型
在這里插入圖片描述

  • 啟動位置設置

Load Application at Startup:從啟動文件開始加載。不勾選時,在進入調(diào)試時,不會重新從啟動開始執(zhí)行,但不勾選時,需要手動添加.ini文件,把.axf的調(diào)試信息放到Keil里,不然進入調(diào)試時無法打斷點,也無法追蹤到當前程序位置。這點在網(wǎng)上查“如何不復位進入調(diào)試”很多會提到這個勾選項,但很少有提及這個.ini的事情,有也是一帶而過。

Initlalization File:初始化文件,承接上文,只要新建一個XXX.ini文件(文件名隨意),點擊…按鈕,添加該文件,點旁邊的"Edit"按鈕,在文件中添加 “LOAD %L INCREMENTAL” 這一句即可。

LOAD %L INCREMENTAL

Run to main():跑進main函數(shù),進入調(diào)試后,會在main里停止,相當于是在main的第一行打了第一個斷點。如果不勾選時,一進入調(diào)試就全速跑。
在這里插入圖片描述

  • 復位調(diào)試會話設置(Restore Debug Session Settings)

使用上一次調(diào)試過程對Breakpoints,Watchpoints,Memory Display和Toolbox(如果這些項被選中的話)
Breakpoints:斷點。
Watch Windows:變量調(diào)試窗口。
Memory Display:查看內(nèi)存的窗口。
Toolbox:工具欄。
System Viewer:系統(tǒng)視圖。
在這里插入圖片描述

  • 動態(tài)庫設置

Driver DLL:驅(qū)動動態(tài)庫文件,后面Parameter是其對應參數(shù)。
Dialog DLL:會話框動態(tài)庫文件,后面Parameter是其對應參數(shù)。
這些是仿真的時候需要用到的動態(tài)庫,一般不用修改,使用默認值就行,這些動態(tài)庫在Keil的安裝路徑下了可以找得到。
在這里插入圖片描述

  • Settings:設置,對選擇的燒錄器進行設置。這里以ST-Link為例(不同燒錄器設置界面不同)。
Debug:調(diào)試選項欄

在這里插入圖片描述

  • 調(diào)試適配器(Debug Adapter)

Unit:當前連接的燒錄器設備,當同時連有多個設備時,這里可以切換選擇。如果這里沒有可選設備,說明當前電腦未識別到燒錄器設備。
Serial:設備
Version FW:固件版本
HW:硬件版本號
在這里插入圖片描述

  • 目標通信(Target Com)

Port :端口類型,可以選擇SW或JTAG接口,如果用的是Nucleo開發(fā)板,這里選SW接口。
Clock:時鐘設置,可以設置調(diào)試的速度。
Req:請求頻率
Selected:實際頻率
在這里插入圖片描述

  • 調(diào)試設置(Debug)

連接跟復位設置(Connect & Reset Options)
Connect:連接設置,Normal
Reset:復位設置
Reset after Connect:連接后復位,不勾選時可以在進入調(diào)試時不中斷當前設備運行。
緩存設置(Cache Options)
Cache Code:緩存代碼,通知調(diào)試器已經(jīng)下載的程序代碼不會改變,選中的話uVision將不會從目標系統(tǒng)讀取程序代碼。
Cache Memory:緩存內(nèi)存,決定調(diào)試程序期間程序停止運行的時候,是否更新存儲器顯示。
下載設置(Download Options)
Verify Code Download:下載時檢驗代碼。比較目標存儲器和調(diào)試器上的應用程序的內(nèi)容。
Download to Flash:下載至Flash。將代碼下載到所有的存儲器區(qū)域,如果不選中,調(diào)試器不會把代碼下載到Flash Download Setup中指定的存儲器地址范圍。

在這里插入圖片描述

  • 實際SW連接的設備(SW Device)

SWDIO:通過SWD接口連接的設備列表,其中IDCODE為連接的設備ID,Device Name為連接的設備名稱。如果當前燒錄器跟芯片之間沒有正常連接,此處不顯示設備名稱。
在這里插入圖片描述

Trace:追蹤選項欄

在這里插入圖片描述

Core Clock:核心時鐘頻率。設置跟當前板子相同的時鐘頻率,可以在調(diào)試時按實際運行時間進行追蹤調(diào)試。
Trace Enable:使能追蹤功能。

Flash Download:Flash下載選項欄

在這里插入圖片描述

  1. 下載動作設置(Download Function)

Erase Full Chip:擦除整片
Erase Sectors:擦除部分
Do not Erase:不擦除
勾選Erase Full Chip時,每次下載時,都會對整片F(xiàn)lash進行擦除操作。勾選Erase Sectors時,下載時只會擦除使用到的扇區(qū)。勾選Do not Erase時,則下載時不擦除原本代碼。
Program:燒錄
Verify:校驗
Reset and Run:復位并運行
勾選Program時,下載時才會把代碼寫入Flash,否則不寫入。勾選Verify時,則在燒錄代碼后,對代碼進行校驗。某些場合下不能檢驗,比如代碼段跟數(shù)據(jù)段分開下載,代碼里不包含數(shù)據(jù)部分,而工程里配置的代碼段又包含數(shù)據(jù)段時,此時如果進行校驗,可能會因為數(shù)據(jù)內(nèi)容不一致導致校驗失敗。勾選Reset and Run時,則在下載完成后立即復位運行代碼,不勾選時則需要手動復位運行。
在這里插入圖片描述

  1. 燒錄算法

RAM for Algorithm:給燒錄算法的RAM空間,Start和Size分別設置對應Ram空間的起始地址和大小,這個一般選擇完芯片后按默認就行,不用修改,如果有需要直接燒寫的片外Flash的,可能需要自己寫燒寫算法的,此時就需要關注這個Ram空間是否容得下自己編寫的燒錄算法大小,需要做適當?shù)恼{(diào)整。
在這里插入圖片描述
Programming Algorithm:燒錄算法選擇,一般選擇完芯片后,這里都會自動選擇對應的燒錄算法,如果不顯示則需要手動添加,不然會導致燒錄失敗。如果是使用國產(chǎn)芯片,也需要手動添加燒錄算法。添加方式很簡單,把對應的算法文件(后綴是FLM)放到Keil安裝根目錄Keil_v5/ARM/Flash路徑下,點Add按鈕,選擇對應的文件即可。
在這里插入圖片描述

2. 離線模擬仿真

????基本設置跟在線是一樣的,多了一個"Limit Speed to Real-Time"的選項,意思是把速度限制到實際時間。但Keil怎么知道實際速度是怎么樣的呢?所以這里還需要設置一個運行頻率,即前文說到,在Target里有個頻率設置。勾選此選項后,在離線仿真時,代碼執(zhí)行速度就是按設定的運行頻率來跑,接近實際板子的速度。如果不勾選,那就直接起飛了(按電腦頻率來跑,有多快跑多快)。
在這里插入圖片描述
在這里插入圖片描述

10、實用程序(Utilities)

在這里插入圖片描述

  • 配置FLASH菜單命名(Configure Flash Menu Command)

Use Target Driver for Flash Programming:使用跟調(diào)試一致的燒錄器進行Flash下載。
Use Debug Driver:使用調(diào)試設備,即下載和調(diào)試使用同一種燒錄器設備。
Update Target before Debugging:在調(diào)試前更新代碼,勾選后一般是只有在剛打開工程或編譯后,第一次進入調(diào)試時,會把當前代碼燒錄進目標板再進行調(diào)試。不勾選則進入調(diào)試時不更新代碼。

Use External Tool for Flash Programming:使用第三方的工具進行Flash下載。
Command:要使用的Flash燒寫工具的命令文件(通常是一個.exe文件)。
Arguments:傳遞給Flash燒寫工具的參數(shù)。
Run Independent:當選中的時候,uVision不等待Flash燒寫完成。不選中的時候uVision要等待Flash燒寫完成并且在輸出窗口顯示燒寫結(jié)果。

  • 配置圖像文件的處理(Configure Image File Processing(FCARM))

通過在編譯過程中調(diào)用FCARM,輸入配置映像文件處理(FCARM)的選項。這將把鏡像文件轉(zhuǎn)換成c源代碼。其中Output File為輸出的c文件名,Add Output File to Group這個默認不需要修改,Image Files Root Folder填寫需要轉(zhuǎn)換的鏡像文件

四、注意事項

  1. 部分工程配置后差異化編譯是不會識別進去的,需要全編譯才能生效,所以改了工程配置后,建議都全編譯一下。
  2. 使用sct文件的情況下,需要注意sct文件和前面ROM、RAM配置二者選一,通過"Use Memory Layout from Target Dialog"勾選是否使用sct文件。(不勾選時使用sct文件)。

五、相關知識

????STM32、RTX、FPU、SVD、Hex、Bin、axf、Lib、sct、燒錄算法、啟動文件、Map文件。
相關文章:Keil5軟件使用-基礎使用篇Keil5軟件使用-進階調(diào)試篇Keil軟件包-知識寶藏庫

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    99久久成人精品国产免费| 偷拍美女洗澡免费视频| 高清免费在线不卡视频| 国产白丝粉嫩av在线免费观看| 亚洲品质一区二区三区| 97人摸人人澡人人人超碰| 中文字幕人妻一区二区免费 | 欧美在线视频一区观看| 东京热男人的天堂社区| 色综合久久六月婷婷中文字幕| 91天堂素人精品系列全集| 亚洲精品中文字幕一二三| 四季av一区二区播放| 香蕉网尹人综合在线观看| 国产亚洲系列91精品| 91麻豆视频国产一区二区| 91后入中出内射在线| 免费亚洲黄色在线观看| 欧美大粗爽一区二区三区| 黄色日韩欧美在线观看| 国内女人精品一区二区三区| 亚洲色图欧美另类人妻| 日本欧美视频在线观看免费| 亚洲性生活一区二区三区| 视频一区二区黄色线观看| 91精品视频全国免费| 亚洲精品国产主播一区| 国产精品不卡一区二区三区四区| 欧美人妻一区二区三区| 国产肥妇一区二区熟女精品| 日本大学生精油按摩在线观看| 日韩丝袜诱惑一区二区| 熟女白浆精品一区二区| 国产一级内射麻豆91| 日本二区三区在线播放| 亚洲中文在线男人的天堂| 日韩专区欧美中文字幕| 精品人妻一区二区四区| 丁香七月啪啪激情综合| 大香伊蕉欧美一区二区三区| 熟女白浆精品一区二区|