視頻配套的和程序匯總里寫代碼都放在這里mdk_第1頁
視頻配套的和程序匯總里寫代碼都放在這里mdk_第2頁
視頻配套的和程序匯總里寫代碼都放在這里mdk_第3頁
視頻配套的和程序匯總里寫代碼都放在這里mdk_第4頁
視頻配套的和程序匯總里寫代碼都放在這里mdk_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、MDK的編譯過程及文件類型全解零死角玩轉(zhuǎn)STM32淘寶: 論壇: 掃描進入淘寶店鋪主講內(nèi)容01編譯過程03編譯工具鏈04MDK工程的文件類型02程序的組成、存儲與運行05實驗:自動分配變量到外部SRAM06實驗:優(yōu)先使用內(nèi)部SRAM并 分配堆到外部SRAMMDK的編譯過程及文件類型全解MDK工程的文件類型除了上述編譯過程生成的文件,MDK工程中還包含了各種各樣的文件,下面我們統(tǒng)一介紹,MDK工程的常見文件類型如下表:后綴說明Project目錄下的工程文件*.uvguixMDK5工程的窗口布局文件,在MDK4中*.UVGUI后綴的文件功能相同*.uvprojxMDK5的工程文件,它使用了XML格

2、式記錄了工程結(jié)構(gòu),雙擊它可以打開整個工程,在MDK4中*.UVPROJ后綴的文件功能相同*.uvoptxMDK5的工程配置選項,包含debugger、trace configuration、breakpooints以及當(dāng)前打開的文件,在MDK4中*.UVOPT后綴的文件功能相同*.ini某些下載器的配置記錄文件源文件*.cC語言源文件*.cppC+語言源文件*.hC/C+的頭文件*.s匯編語言的源文件*.inc匯編語言的頭文件(使用“$include”來包含)MDK的編譯過程及文件類型全解Output目錄下的文件*.lib庫文件*.dep整個工程的依賴文件*.d描述了對應(yīng).o的依賴的文件*.c

3、rf交叉引用文件,包含了瀏覽信息(定義、引用及標(biāo)識符)*.o可重定位的對象文件(目標(biāo)文件)*.bin二進制格式的映像文件,是純粹的FLASH映像,不含任何額外信息*.hexIntel Hex格式的映像文件,可理解為帶存儲地址描述格式的bin文件*.elf由GCC編譯生成的文件,功能跟axf文件一樣,該文件不可重定位*.axf由ARMCC編譯生成的可執(zhí)行對象文件,可用于調(diào)試,該文件不可重定位*.sct鏈接器控制文件(分散加載)*.scr鏈接器產(chǎn)生的分散加載文件*.lnpMDK生成的鏈接輸入文件,用于調(diào)用鏈接器時的命令輸入*.htm鏈接器生成的靜態(tài)調(diào)用圖文件*.build_log.htm構(gòu)建工程的

4、日志記錄文件Listing目錄下的文件*.lstC及匯編編譯器產(chǎn)生的列表文件*.map鏈接器生成的列表文件,包含存儲器映像分布其它*.ini仿真、下載器的腳本文件這些文件主要分為MDK相關(guān)文件、源文件以及編譯、鏈接器生成的文件。我們以“多彩流水燈”工程為例講解各種文件的功能。MDK的編譯過程及文件類型全解uvprojx、uvoptx、uvguix及ini工程文件在工程的“Project”目錄下主要是MDK工程相關(guān)的文件:MDK的編譯過程及文件類型全解1.uvprojx文件uvprojx文件就是我們平時雙擊打開的工程文件,它記錄了整個工程的結(jié)構(gòu),如芯片類型、工程包含了哪些源文件等內(nèi)容:MDK的編

5、譯過程及文件類型全解2.uvprojx文件uvoptx文件記錄了工程的配置選項,如下載器的類型、變量跟蹤配置、斷點位置以及當(dāng)前已打開的文件等等:MDK的編譯過程及文件類型全解3. uvguix文件uvguix文件記錄了MDK軟件的GUI布局,如代碼編輯區(qū)窗口的大小、編譯輸出提示窗口的位置等等。MDK的編譯過程及文件類型全解uvprojx、uvoptx及uvguix都是使用XML格式記錄的文件,若使用記事本打開可以看到XML代碼。而當(dāng)使用MDK軟件打開時,它根據(jù)這些文件的XML記錄加載工程的各種參數(shù),使得我們每次重新打開工程時,都能恢復(fù)上一次的工作環(huán)境。MDK的編譯過程及文件類型全解這些工程參數(shù)

6、都是當(dāng)MDK正常退出時才會被寫入保存,所以若MDK錯誤退出時(如使用Windows的任務(wù)管理器強制關(guān)閉),工程配置參數(shù)的最新更改是不會被記錄的,重新打開工程時要再次配置。根據(jù)這幾個文件的記錄類型,可以知道uvprojx文件是最重要的,刪掉它我們就無法再正常打開工程了,而uvoptx及uvguix文件并不是必須的,可以刪除,重新使用MDK打開uvprojx工程文件后,會以默認(rèn)參數(shù)重新創(chuàng)建uvoptx及uvguix文件。(所以當(dāng)使用Git/SVN等代碼管理的時候,往往只保留uvprojx文件)MDK的編譯過程及文件類型全解源文件源文件是工程中我們最熟悉的內(nèi)容了,它們就是我們編寫的各種源代碼,MDK

7、支持c、cpp、h、s、inc類型的源代碼文件,其中c、cpp分別是c/c+語言的源代碼,h是它們的頭文件,s是匯編文件,inc是匯編文件的頭文件,可使用“$include”語法包含。編譯器根據(jù)工程中的源文件最終生成機器碼。MDK的編譯過程及文件類型全解Output目錄下生成的文件點擊MDK中的編譯按鈕,它會根據(jù)工程的配置及工程中的源文件輸出各種對象和列表文件,在工程的“Options for Targe-Output-Select Folder for Objects”和“Options for Targe-Listing-Select Folder for Listings”選項配置它們的

8、輸出路徑:MDK的編譯過程及文件類型全解Output目錄下生成的文件MDK的編譯過程及文件類型全解1. lib庫文件在某些場合下可能不希望提供給第三方一個可用的代碼庫,但不希望對方看到源碼,這個時候我們就可以把工程生成lib文件(Library file)提供給對方,在MDK中可配置“Options for Target-Create Library”選項把工程編譯成庫文件:MDK的編譯過程及文件類型全解1. lib庫文件工程中生成可執(zhí)行文件或庫文件只能二選一,默認(rèn)編譯是生成可執(zhí)行文件的,可執(zhí)行文件即我們下載到芯片上直接運行的機器碼。得到生成的*.lib文件后,可把它像C文件一樣添加到其它工程

9、中,并在該工程調(diào)用lib提供的函數(shù)接口,除了不能看到*.lib文件的源碼,在應(yīng)用方面它跟C源文件沒有區(qū)別。MDK的編譯過程及文件類型全解2.dep、d依賴文件*.dep和*.d文件(Dependency file)記錄的是工程或其它文件的依賴,主要記錄了引用的頭文件路徑,其中*.dep是整個工程的依賴,它以工程名命名,而*.d是單個源文件的依賴,它們以對應(yīng)的源文件名命名。這些記錄使用文本格式存儲,我們可直接使用記事本打開:MDK的編譯過程及文件類型全解3.crf交叉引用文件*.crf是交叉引用文件(Cross-Reference file),它主要包含了瀏覽信息(browse information),即源代碼中的宏定義、變量及函數(shù)的定義和聲明的位置。我們在代碼編輯器中點擊“Go To Definition Of xxxx”可實現(xiàn)瀏覽跳轉(zhuǎn),跳轉(zhuǎn)的時候,MDK就是通過*.crf文件查找出跳轉(zhuǎn)位置的。MDK的編譯過程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論