一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

第三十章 MDK的編譯過程及文件類型

W55MH32 ? 來源:W55MH32 ? 作者:W55MH32 ? 2025-05-26 08:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

單芯片解決方案,開啟全新體驗(yàn)——W55MH32 高性能以太網(wǎng)單片機(jī)

W55MH32是WIZnet重磅推出的高性能以太網(wǎng)單片機(jī),它為用戶帶來前所未有的集成化體驗(yàn)。這顆芯片將強(qiáng)大的組件集于一身,具體來說,一顆W55MH32內(nèi)置高性能Arm? Cortex-M3核心,其主頻最高可達(dá)216MHz;配備1024KB FLASH與96KB SRAM,滿足存儲(chǔ)與數(shù)據(jù)處理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP協(xié)議棧、內(nèi)置MAC以及PHY,擁有獨(dú)立的32KB以太網(wǎng)收發(fā)緩存,可供8個(gè)獨(dú)立硬件socket使用。如此配置,真正實(shí)現(xiàn)了All-in-One解決方案,為開發(fā)者提供極大便利。

在封裝規(guī)格上,W55MH32 提供了兩種選擇:QFN100和QFN68。

W55MH32L采用QFN100封裝版本,尺寸為12x12mm,其資源豐富,專為各種復(fù)雜工控場(chǎng)景設(shè)計(jì)。它擁有66個(gè)GPIO、3個(gè)ADC、12通道DMA、17個(gè)定時(shí)器、2個(gè)I2C、5個(gè)串口、2個(gè)SPI接口(其中1個(gè)帶I2S接口復(fù)用)、1個(gè)CAN、1個(gè)USB2.0以及1個(gè)SDIO接口。如此豐富的外設(shè)資源,能夠輕松應(yīng)對(duì)工業(yè)控制中多樣化的連接需求,無論是與各類傳感器、執(zhí)行器的通信,還是對(duì)復(fù)雜工業(yè)協(xié)議的支持,都能游刃有余,成為復(fù)雜工控領(lǐng)域的理想選擇。 同系列還有QFN68封裝的W55MH32Q版本,該版本體積更小,僅為8x8mm,成本低,適合集成度高的網(wǎng)關(guān)模組等場(chǎng)景,軟件使用方法一致。更多信息和資料請(qǐng)進(jìn)入http://www.w5500.com/網(wǎng)站或者私信獲取。

此外,本W(wǎng)55MH32支持硬件加密算法單元,WIZnet還推出TOE+SSL應(yīng)用,涵蓋TCP SSL、HTTP SSL以及 MQTT SSL等,為網(wǎng)絡(luò)通信安全再添保障。

為助力開發(fā)者快速上手與深入開發(fā),基于W55MH32L這顆芯片,WIZnet精心打造了配套開發(fā)板。開發(fā)板集成WIZ-Link芯片,借助一根USB C口數(shù)據(jù)線,就能輕松實(shí)現(xiàn)調(diào)試、下載以及串口打印日志等功能。開發(fā)板將所有外設(shè)全部引出,拓展功能也大幅提升,便于開發(fā)者全面評(píng)估芯片性能。

若您想獲取芯片和開發(fā)板的更多詳細(xì)信息,包括產(chǎn)品特性、技術(shù)參數(shù)以及價(jià)格等,歡迎訪問官方網(wǎng)頁:http://www.w5500.com/,我們期待與您共同探索W55MH32的無限可能。

wKgZPGgbOfaANhwzACodXd3sVzg463.png

第三十章 MDK的編譯過程及文件類型

相信您已經(jīng)非常熟練地使用MDK創(chuàng)建應(yīng)用程序了,平時(shí)使用MDK編寫源代碼,然后編譯生成機(jī)器碼,再把機(jī)器碼下載到STM32芯片上運(yùn)行, 但是這個(gè)編譯、下載的過程MDK究竟做了什么工作?它編譯后生成的各種文件又有什么作用?本章節(jié)將對(duì)這些過程進(jìn)行講解, 了解編譯及下載過程有助于理解芯片的工作原理,這些知識(shí)對(duì)制作IAP(bootloader)以及讀寫控制器內(nèi)部FLASH的應(yīng)用時(shí)非常重要。

1 編譯過程

首先我們簡(jiǎn)單了解下MDK的編譯過程,它與其它編譯器的工作過程是類似的, 該過程見下圖:

wKgZPGgxLFmAQ3_bAALPmXrEsBU415.png

編譯過程生成的不同文件將在后面的小節(jié)詳細(xì)說明,此處先抓住主要流程來理解。

(1) 編譯,MDK軟件使用的編譯器是armcc和armasm, 它們根據(jù)每個(gè)c/c++匯編源文件編譯成對(duì)應(yīng)的以“.o”為后綴名的對(duì)象文件(Object Code,也稱目標(biāo)文件), 其內(nèi)容主要是從源文件編譯得到的機(jī)器碼,包含了代碼、數(shù)據(jù)以及調(diào)試使用的信息;

(2) 鏈接, 鏈接器armlink把各個(gè).o文件及庫文件鏈接成一個(gè)映像文件“.axf”或“.elf”;

(3) 格式轉(zhuǎn)換,一般來說Windows或Linux系統(tǒng)使用鏈接器直接生成可執(zhí)行映像文件elf后,內(nèi)核根據(jù)該文件的信息加載后, 就可以運(yùn)行程序了,但在單片機(jī)平臺(tái)上,需要把該文件的內(nèi)容加載到芯片上, 所以還需要對(duì)鏈接器生成的elf映像文件利用格式轉(zhuǎn)換器fromelf轉(zhuǎn)換成“.bin”或“.hex”文件,交給下載器下載到芯片的FLASH或ROM中。

2 程序的組成、存儲(chǔ)與運(yùn)行

2.1 CODE、RO、RW、ZI Data域及堆??臻g

在工程的編譯提示輸出信息中有一個(gè)語句“Program Size:Code=xx RO-data=xx RW-data=xx ZI-data=xx”, 它說明了程序各個(gè)域的大小,編譯后,應(yīng)用程序中所有具有同一性質(zhì)的數(shù)據(jù)(包括代碼)被歸到一個(gè)域,程序在存儲(chǔ)或運(yùn)行的時(shí)候, 不同的域會(huì)呈現(xiàn)不同的狀態(tài),這些域的意義如下:

Code:即代碼域,它指的是編譯器生成的機(jī)器指令,這些內(nèi)容被存儲(chǔ)到ROM區(qū)。

RO-data:Read Only data,即只讀數(shù)據(jù)域,它指程序中用到的只讀數(shù)據(jù),這些數(shù)據(jù)被存儲(chǔ)在ROM區(qū),因而程序不能修改其內(nèi)容。 例如C語言中const關(guān)鍵字定義的變量就是典型的RO-data。

RW-data:Read Write data,即可讀寫數(shù)據(jù)域,它指初始化為“非0值”的可讀寫數(shù)據(jù),程序剛運(yùn)行時(shí),這些數(shù)據(jù)具有非0的初始值, 且運(yùn)行的時(shí)候它們會(huì)常駐在RAM區(qū),因而應(yīng)用程序可以修改其內(nèi)容。例如C語言中使用定義的全局變量,且定義時(shí)賦予“非0值”給該變量進(jìn)行初始化。

ZI-data:Zero Initialie data,即0初始化數(shù)據(jù),它指初始化為“0值”的可讀寫數(shù)據(jù)域, 它與RW-data的區(qū)別是程序剛運(yùn)行時(shí)這些數(shù)據(jù)初始值全都為0, 而后續(xù)運(yùn)行過程與RW-data的性質(zhì)一樣,它們也常駐在RAM區(qū),因而應(yīng)用程序可以更改其內(nèi)容。例如C語言中使用定義的全局變量, 且定義時(shí)賦予“0值”給該變量進(jìn)行初始化(若定義該變量時(shí)沒有賦予初始值,編譯器會(huì)把它當(dāng)ZI-data來對(duì)待,初始化為0);

ZI-data的??臻g(Stack)及堆空間(Heap):在C語言中,函數(shù)內(nèi)部定義的局部變量屬于??臻g,進(jìn)入函數(shù)的時(shí)候從向??臻g申請(qǐng)內(nèi)存給局部變量, 退出時(shí)釋放局部變量,歸還內(nèi)存空間。而使用malloc動(dòng)態(tài)分配的變量屬于堆空間。在程序中的??臻g和堆空間都是屬于ZI-data區(qū)域的, 這些空間都會(huì)被初始值化為0值。編譯器給出的ZI-data占用的空間值中包含了堆棧的大小(經(jīng)實(shí)際測(cè)試,若程序中完全沒有使用malloc動(dòng)態(tài)申請(qǐng)堆空間, 編譯器會(huì)優(yōu)化,不把堆空間計(jì)算在內(nèi))。

綜上所述,以程序的組成構(gòu)件為例,它們所屬的區(qū)域類別見下表:

程序組件 所屬類別
機(jī)器代碼指令 Code
常量 RO-data
初值非 0 的全局變量 RW-data
初值為 0 的全局變量 ZI-data
局部變量 ZI-data ??臻g
使用 malloc 動(dòng)態(tài)分配的空間 ZI-data 堆空間

2.2 程序的存儲(chǔ)與運(yùn)行

RW-data和ZI-data它們僅僅是初始值不一樣而已,為什么編譯器非要把它們區(qū)分開?這就涉及到程序的存儲(chǔ)狀態(tài)了,應(yīng)用程序具有靜止?fàn)顟B(tài)和運(yùn)行狀態(tài)。 靜止態(tài)的程序被存儲(chǔ)在非易失存儲(chǔ)器中,如STM32的內(nèi)部FLASH,因而系統(tǒng)掉電后也能正常保存。但是當(dāng)程序在運(yùn)行狀態(tài)的時(shí)候,程序常常需要修改一些暫存數(shù)據(jù), 由于運(yùn)行速度的要求,這些數(shù)據(jù)往往存放在內(nèi)存中(RAM),掉電后這些數(shù)據(jù)會(huì)丟失。因此,程序在靜止與運(yùn)行的時(shí)候它在存儲(chǔ)器中的表現(xiàn)是不一樣的, 見下圖:

wKgZO2gxLFmASwcEAAPGdXAbht4862.png

圖中的左側(cè)是應(yīng)用程序的存儲(chǔ)狀態(tài),右側(cè)是運(yùn)行狀態(tài),而上方是RAM存儲(chǔ)器區(qū)域,下方是ROM存儲(chǔ)器區(qū)域。

程序在存儲(chǔ)狀態(tài)時(shí),RO節(jié)(RO section)及RW節(jié)都被保存在ROM區(qū)。當(dāng)程序開始運(yùn)行時(shí),內(nèi)核直接從ROM中讀取代碼,并且在執(zhí)行主體代碼前, 會(huì)先執(zhí)行一段加載代碼,它把RW節(jié)數(shù)據(jù)從ROM復(fù)制到RAM, 并且在RAM加入ZI節(jié),ZI節(jié)的數(shù)據(jù)都被初始化為0。加載完后RAM區(qū)準(zhǔn)備完畢,正式開始執(zhí)行主體程序。

編譯生成的RW-data的數(shù)據(jù)屬于圖中的RW節(jié),ZI-data的數(shù)據(jù)屬于圖中的ZI節(jié)。是否需要掉電保存,這就是把RW-data與ZI-data區(qū)別開來的原因, 因?yàn)樵赗AM創(chuàng)建數(shù)據(jù)的時(shí)候,默認(rèn)值為0,但如果有的數(shù)據(jù)要求初值非0,那就需要使用ROM記錄該初始值,運(yùn)行時(shí)再復(fù)制到RAM。

STM32的RO區(qū)域不需要加載到SRAM,內(nèi)核直接從FLASH讀取指令運(yùn)行。計(jì)算機(jī)系統(tǒng)的應(yīng)用程序運(yùn)行過程很類似,不過計(jì)算機(jī)系統(tǒng)的程序在存儲(chǔ)狀態(tài)時(shí)位于硬盤, 執(zhí)行的時(shí)候甚至?xí)焉鲜龅腞O區(qū)域(代碼、只讀數(shù)據(jù))加載到內(nèi)存,加快運(yùn)行速度,還有虛擬內(nèi)存管理單元(MMU)輔助加載數(shù)據(jù), 使得可以運(yùn)行比物理內(nèi)存還大的應(yīng)用程序。而STM32沒有MMU,所以無法支持Linux和Windows系統(tǒng)。

當(dāng)程序存儲(chǔ)到STM32芯片的內(nèi)部FLASH時(shí)(即ROM區(qū)),它占用的空間是Code、RO-data及RW-data的總和,所以如果這些內(nèi)容比STM32芯片的FLASH空間大, 程序就無法被正常保存了。當(dāng)程序在執(zhí)行的時(shí)候,需要占用內(nèi)部SRAM空間(即RAM區(qū)),占用的空間包括RW-data和ZI-data。 應(yīng)用程序在各個(gè)狀態(tài)時(shí)各區(qū)域的組成見下表:

程序狀態(tài)與區(qū)域 組成
程序執(zhí)行時(shí)的只讀區(qū)域 (RO) Code + RO data
程序執(zhí)行時(shí)的可讀寫區(qū)域 (RW) RW data + ZI data
程序存儲(chǔ)時(shí)占用的 ROM 區(qū) Code + RO data + RW data

在MDK中,我們建立的工程一般會(huì)選擇芯片型號(hào),選擇后就有確定的FLASH及SRAM大小,若代碼超出了芯片的存儲(chǔ)器的極限, 編譯器會(huì)提示錯(cuò)誤,這時(shí)就需要裁剪程序了,裁剪時(shí)可針對(duì)超出的區(qū)域來優(yōu)化。

2.3編譯工具鏈

在前面編譯過程中,MDK調(diào)用了各種編譯工具,平時(shí)我們直接配置MDK,不需要學(xué)習(xí)如何使用它們,但了解它們是非常有好處的。例如, 若希望使用MDK編譯生成bin文件的,需要在MDK中輸入指令控制fromelf工具;在本章后面講解AXF及O文件的時(shí)候,需要利用fromelf工具查看其文件信息, 這都是無法直接通過MDK做到的。關(guān)于這些工具鏈的說明,在MDK的幫助手冊(cè)《ARM Development Tools》都有詳細(xì)講解, 點(diǎn)擊MDK界面的“help->uVision Help”菜單可打開該文件。

2.3.1armcc

armcc用于把c/c++文件編譯成ARM指令代碼,編譯后會(huì)輸出ELF格式的O文件(對(duì)象、目標(biāo)文件),在命令行中輸入“armcc”回車可調(diào)用該工具, 它會(huì)打印幫助說明,見下圖,armcc的幫助提示:

wKgZO2gxLFiAPvQVAACllyC8K-o495.png

幫助提示中分三部分,第一部分是armcc版本信息,第二部分是命令的用法,第三部分是主要命令選項(xiàng)。

根據(jù)命令用法: armcc [options] file1 file2 …filen , 在[option]位置可輸入下面的“–arm”、“–cpu list”選項(xiàng), 若選項(xiàng)帶文件輸入,則把文件名填充在file1 file2…的位置,這些文件一般是c/c++文件。

例如根據(jù)它的幫助說明,“–cpu list”可列出編譯器支持的所有cpu,我們?cè)诿钚兄休斎搿癮rmcc –cpu list”, 可查看圖中的cpu列表:

wKgZPGgxLFiAHfO9AABwTqSdhRc236.png

打開MDK的Options for Targe->c/c++菜單,可看到MDK對(duì)編譯器的控制命令, 見下圖,MDK的ARMCC編譯選項(xiàng):

wKgZO2gxLFiAT7ZIAABjFZ4fPWg446.png

從該圖中的命令可看到,它調(diào)用了-c、-cpu –D –g –O1等編譯選項(xiàng),當(dāng)我們修改MDK的編譯配置時(shí),可看到該控制命令也會(huì)有相應(yīng)的變化。 然而我們無法在該編譯選項(xiàng)框中輸入命令,只能通過MDK提供的選項(xiàng)修改。

了解這些,我們就可以查詢具體的MDK編譯選項(xiàng)的具體信息了,如c/c++選項(xiàng)中的“Optimization:Leve 1(-O1)”是什么功能呢? 首先可了解到它是“-O”命令,命令后還帶個(gè)數(shù)字,查看MDK的幫助手冊(cè),在armcc編譯器說明章節(jié), 可詳細(xì)了解,如下圖,編譯器選項(xiàng)說明:

wKgZPGgxLFiAeTuVAAEnjsGxrxs294.png

利用MDK,我們一般不需要自己調(diào)用armcc工具,但經(jīng)過這樣的過程我們就會(huì)對(duì)MDK有更深入的認(rèn)識(shí),面對(duì)它的各種編譯選項(xiàng),就不會(huì)那么頭疼了。

2.3.2 armasm

armasm是匯編器,它把匯編文件編譯成O文件。與armcc類似, MDK對(duì)armasm的調(diào)用選項(xiàng)可在“Option for Target->Asm”頁面進(jìn)行配置, 見下圖,armasm與MDK的編譯選項(xiàng):

wKgZO2gxLFiAAtiJAABWioCqcsk136.pngwKgZO2gxLFiAT7ZIAABjFZ4fPWg446.png

2.3.3 armlink

armlink是鏈接器,它把各個(gè)O文件鏈接組合在一起生成ELF格式的AXF文件,AXF文件是可執(zhí)行的,下載器把該文件中的指令代碼下載到芯片后, 該芯片就能運(yùn)行程序了;利用armlink還可以控制程序存儲(chǔ)到指定的ROM或RAM地址。 在MDK中可在“Option for Target->Linker”頁面配置armlink選項(xiàng), 見下圖,armlink與MDK的配置選項(xiàng):

wKgZO2gxLFiARut8AABgSyqMDkc481.pngwKgZPGgxLFiADMGJAABg50w07Z0450.png

鏈接器默認(rèn)是根據(jù)芯片類型的存儲(chǔ)器分布來生成程序的,該存儲(chǔ)器分布被記錄在工程里的sct后綴的文件中,有特殊需要的話可自行編輯該文件, 改變鏈接器的鏈接方式,具體后面我們會(huì)詳細(xì)講解。

2.3.4 armar、fromelf及用戶指令

armar工具用于把工程打包成庫文件,fromelf可根據(jù)axf文件生成hex、bin文件,hex和bin文件是大多數(shù)下載器支持的下載文件格式。

在MDK中,針對(duì)armar和fromelf工具的選項(xiàng)幾乎沒有,僅集成了生成HEX或Lib的選項(xiàng), 見下圖,控制fromelf生成hex及控制armar生成lib的配置:

wKgZPGgxLFiARPx2AABMa4UVCSc909.png

例如如果我們想利用fromelf生成bin文件,可以在MDK的“Option for Target->User”頁中添加調(diào)用fromelf的指令, 見下圖,在MDK中添加指令:

wKgZPGgxLFiAejvXAAB2h0wx6Xk163.png

在User配置頁面中,提供了三種類型的用戶指令輸入框,在不同組的框輸入指令, 可控制指令的執(zhí)行時(shí)間,分別是編譯前(Before Compile c/c++ file)、 構(gòu)建前(Before Build/Rebuild)及構(gòu)建后(AfterBuild/Rebuild)執(zhí)行。 這些指令并沒有限制必須是arm的編譯工具鏈,例如如果您自己編寫了python腳本, 也可以在這里輸入用戶指令執(zhí)行該腳本。

圖中的生成bin文件指令調(diào)用了fromelf工具,緊跟后面的是工具的選項(xiàng)及輸出文件名、輸入文件名。由于fromelf是根據(jù)axf文件生成bin的, 而axf文件又是構(gòu)建(build)工程后才生成,所以我們把該指令放到“After Build/Rebuild”一欄。

3.MDK工程的文件類型

除了上述編譯過程生成的文件,MDK工程中還包含了各種各樣的文件,下面我們統(tǒng)一介紹, MDK工程的常見文件類型見下表,MDK常見的文件類型:

后綴 說明
*.uvguix MDK5 工程的窗口布局文件,在 MDK4 中 *.UVGUI 后綴的文件功能相同
*.uvprojx MDK5 的工程文件,它使用了 XML 格式記錄了工程結(jié)構(gòu),雙擊它可以打開整個(gè)工程,在 MDK4 中 *.UVPROJ 后綴的文件功能相同
*.uvoptx MDK5 的工程配置選項(xiàng),包含 debugger、trace configuration、breakpooints 以及當(dāng)前打開的文件,在 MDK4 中 *.UVOPT 后綴的文件功能相同
*.ini 某些下載器的配置記錄文件
*.c C 語言源文件
*.cpp C++ 語言源文件
*.h C/C++ 的頭文件
*.s 匯編語言的源文件
*.inc 匯編語言的頭文件 (使用 “$include” 來包含)
*.lib 庫文件
*.dep 整個(gè)工程的依賴文件
*.d 描述了對(duì)應(yīng).o 的依賴的文件
*.crf 交叉引用文件,包含了瀏覽信息 (定義、引用及標(biāo)識(shí)符)
*.o 可重定位的對(duì)象文件 (目標(biāo)文件)
*.bin 二進(jìn)制格式的映像文件,是純粹的 FLASH 映像,不含任何額外信息
*.hex Intel Hex 格式的映像文件,可理解為帶存儲(chǔ)地址描述格式的 bin 文件
*.elf 由 GCC 編譯生成的文件,功能跟 axf 文件一樣,該文件不可重定位
*.axf 由 ARMCC 編譯生成的可執(zhí)行對(duì)象文件,可用于調(diào)試,該文件不可重定位
*.sct 鏈接器控制文件 (分散加載)
*.scr 鏈接器產(chǎn)生的分散加載文件
*.lnp MDK 生成的鏈接輸入文件,用于調(diào)用鏈接器時(shí)的命令輸入
*.htm 鏈接器生成的靜態(tài)調(diào)用圖文件
*.build_log.htm 構(gòu)建工程的日志記錄文件
*.lst C 及匯編編譯器產(chǎn)生的列表文件
*.map 鏈接器生成的列表文件,包含存儲(chǔ)器映像分布
*.ini 仿真、下載器的腳本文件

這些文件主要分為MDK相關(guān)文件、源文件以及編譯、鏈接器生成的文件。我們以“多彩流水燈”工程為例講解各種文件的功能。

4 源文件

源文件是工程中我們最熟悉的內(nèi)容了,它們就是我們編寫的各種源代碼,MDK支持c、cpp、h、s、inc類型的源代碼文件, 其中c、cpp分別是c/c++語言的源代碼,h是它們的頭文件,s是匯編文件,inc是匯編文件的頭文件,可使用“$include”語法包含。 編譯器根據(jù)工程中的源文件最終生成機(jī)器碼。

4.1 Output目錄下生成的文件

點(diǎn)擊MDK中的編譯按鈕,它會(huì)根據(jù)工程的配置及工程中的源文件輸出各種對(duì)象和列表文件, 在工程的“Options for Targe->Output->Select Folder for Objects”和 “Options for Targe->Listing->Select Folder for Listings”選項(xiàng)配置它們的輸出路徑, 見下圖,設(shè)置Output輸出路徑 和圖 設(shè)置Listing輸出路徑:

wKgZO2gzuLWANwrDAACJ7kNUX74251.pngwKgZO2gxLFiABnsBAACSbb5WxDQ677.png

4.2 lib庫文件

在某些場(chǎng)合下我們希望提供給第三方一個(gè)可用的代碼庫,但不希望對(duì)方看到源碼,這個(gè)時(shí)候我們就可以把工程生成lib文件(Library file)提供給對(duì)方, 在MDK中可配置“Options for Target->Create Library”選項(xiàng)把工程編譯成庫文件, 見下圖,生成庫文件或可執(zhí)行文件:

wKgZO2gxLFiAWGsJAABQiVt2zbI772.png

工程中生成可執(zhí)行文件或庫文件只能二選一,默認(rèn)編譯是生成可執(zhí)行文件的,可執(zhí)行文件即我們下載到芯片上直接運(yùn)行的機(jī)器碼。

得到生成的*.lib文件后,可把它像C文件一樣添加到其它工程中,并在該工程調(diào)用lib提供的函數(shù)接口, 除了不能看到*.lib文件的源碼,在應(yīng)用方面它跟C源文件沒有區(qū)別。

4.3 dep、d依賴文件

*.dep和*.d文件(Dependency file)記錄的是工程或其它文件的依賴,主要記錄了引用的頭文件路徑,其中*.dep是整個(gè)工程的依賴, 它以工程名命名,而*.d是單個(gè)源文件的依賴,它們以對(duì)應(yīng)的源文件名命名。這些記錄使用文本格式存儲(chǔ),我們可直接使用記事本打開, 見下兩圖,工程的dep文件內(nèi)容和bsp文件的內(nèi)容:

wKgZO2gxLFiANnaiAADX0WYFgfI140.pngwKgZPGgxLFiAf8MFAAC-n3xUqo8121.png

審核編輯 黃宇

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

    關(guān)注

    6067

    文章

    44992

    瀏覽量

    650584
  • 機(jī)器碼
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    8429
  • MDK
    MDK
    +關(guān)注

    關(guān)注

    4

    文章

    211

    瀏覽量

    32698
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    679

    瀏覽量

    34005
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linux操作系統(tǒng)下常見文件類型分析

    Linux操作系統(tǒng)下常見文件類型分析,壓縮和打包文件,普通文件格式,系統(tǒng)文件
    發(fā)表于 01-06 17:00 ?1063次閱讀

    嵌入式Linux入門(二、Linux文件系統(tǒng)、文件類型及權(quán)限管理)

    嵌入式 Linux入 門第二課, linux 文件系統(tǒng)、文件類型及權(quán)限管理。 ...... 矜辰所致
    的頭像 發(fā)表于 06-20 11:44 ?2776次閱讀
    嵌入式Linux入門(二、Linux<b class='flag-5'>文件</b>系統(tǒng)、<b class='flag-5'>文件類型</b>及權(quán)限管理)

    詳解Linux的文件類型

    普通文件類型Linux中最多的一種文件類型, 包括 純文本文件(ASCII);二進(jìn)制文件(binary);數(shù)據(jù)格式的文件(data);各種壓
    發(fā)表于 07-17 07:32

    「正點(diǎn)原子Linux連載」第三十章U-Boot使用實(shí)驗(yàn)(一)

    本帖最后由 正點(diǎn)原子運(yùn)營官 于 2020-3-9 14:41 編輯 「正點(diǎn)原子Linux連載」第三十章U-Boot使用實(shí)驗(yàn)(一) 正點(diǎn)原子 2020-03-09 12:531)實(shí)驗(yàn)平臺(tái):正點(diǎn)
    發(fā)表于 03-09 14:39

    「正點(diǎn)原子NANO STM32F103開發(fā)板資料連載」第三十章 串口 IAP 實(shí)驗(yàn)

    1)實(shí)驗(yàn)平臺(tái):【正點(diǎn)原子】 NANO STM32F103 開發(fā)板2)摘自《正點(diǎn)原子STM32 F1 開發(fā)指南(NANO 板-HAL 庫版)》關(guān)注官方微信號(hào)公眾號(hào),獲取更多資料:正點(diǎn)原子第三十章 串口
    發(fā)表于 05-06 15:28

    Linux快速入門之文件類型文件屬性

    《嵌入式Linux應(yīng)用程序開發(fā)詳解》第一 Linux 快速入門1.3.1 文件類型文件屬性1.文件類型1)普通文件2)目錄
    發(fā)表于 12-17 07:58

    第三十講 半導(dǎo)體存儲(chǔ)器

    第三十講 半導(dǎo)體存儲(chǔ)器 第9 半導(dǎo)體存儲(chǔ)器9.1 概述 9.2 只讀存儲(chǔ)器9.2.1固定ROM的結(jié)構(gòu)和工作原理一
    發(fā)表于 03-30 16:36 ?1272次閱讀
    <b class='flag-5'>第三十</b>講 半導(dǎo)體存儲(chǔ)器

    模擬電路網(wǎng)絡(luò)課件 第三十節(jié):反饋的基本概念

    模擬電路網(wǎng)絡(luò)課件 第三十節(jié):反饋的基本概念 7.1 反饋的基本概念 一、什么是反饋 前面各章討
    發(fā)表于 09-17 11:47 ?930次閱讀

    C#教程之獲取文件類型

    C#教程之獲取文件類型,很好的C#資料,快來學(xué)習(xí)吧。
    發(fā)表于 04-20 09:59 ?4次下載

    詳解嵌入式linux文件類型

    學(xué)習(xí)嵌入式linux系統(tǒng)開發(fā),對(duì)于linux文件類型需要有很深的理解。Linux文件類型常見的有普通文件、目錄文件、符號(hào)鏈接文件、管道
    發(fā)表于 06-11 16:29 ?1134次閱讀
    詳解嵌入式linux<b class='flag-5'>文件類型</b>

    學(xué)習(xí)嵌入式linux系統(tǒng)開發(fā),文件類型一定要分清

    學(xué)習(xí)嵌入式linux系統(tǒng)開發(fā),對(duì)于linux文件類型需要有很深的理解。Linux文件類型常見的有普通文件、目錄文件、符號(hào)鏈接文件、管道
    發(fā)表于 07-05 07:01 ?1055次閱讀

    Allegro中的文件類型后綴匯總

    Allegro根據(jù)不同性質(zhì)功能的文件類型保存不同的文件后綴 allegro安裝后自帶的庫文件路徑是:C:/Cadence/SPB_15.5/share/PCB/PCB_lib/symbols(我
    發(fā)表于 04-25 15:44 ?7339次閱讀
    Allegro中的<b class='flag-5'>文件類型</b>后綴匯總

    嵌入式linux系統(tǒng)開發(fā)幾大文件類型

      同學(xué)們學(xué)習(xí)嵌入式linux系統(tǒng)開發(fā)的熱情日益旺盛,而對(duì)于linux文件類型需要有很深的理解。Linux文件類型有很多,常見的有普通文件、目錄文件、符號(hào)鏈接
    發(fā)表于 08-06 16:28 ?442次閱讀

    Linux中有哪些常見的文件類型?

    本文檔的主要內(nèi)容詳細(xì)介紹的是Linux中有哪些常見的文件類型?
    發(fā)表于 10-12 18:02 ?0次下載

    你知道嵌入式linux文件類型?

    學(xué)習(xí)嵌入式linux系統(tǒng)開發(fā),對(duì)于linux文件類型需要有很深的理解。Linux文件類型常見的有普通文件、目錄文件、符號(hào)鏈接文件、管道
    發(fā)表于 05-04 17:09 ?883次閱讀
    你知道嵌入式linux<b class='flag-5'>文件類型</b>?