欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2502|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

RISC-V MCU開(kāi)發(fā) (四):編譯配置

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
   在嵌入式開(kāi)發(fā)中,當(dāng)我們完成了工程創(chuàng)建、代碼編輯等操作之后,就可以開(kāi)始進(jìn)行工程編譯。 對(duì)于使用內(nèi)置工程模板創(chuàng)建或外部導(dǎo)入的項(xiàng)目,MounRiver® Studio(MRS)會(huì)根據(jù)對(duì)應(yīng)芯片內(nèi)核自動(dòng)配置好目標(biāo)工具鏈(riscv-none-embed-gcc或arm-none-eabi-gcc),同時(shí),目標(biāo)平臺(tái)、優(yōu)化等級(jí)、調(diào)試等級(jí)以及文件引用等編譯配置也會(huì)自動(dòng)設(shè)置完畢。

【工程屬性頁(yè)】在資源管理器窗口選中要編譯的工程,點(diǎn)擊工具欄上的工程屬性配置按鈕,或者點(diǎn)擊右鍵菜單中的”P(pán)roperties”進(jìn)入編譯選項(xiàng)屬性頁(yè)面。

                              



【目標(biāo)處理器】用于指定目標(biāo)指令架構(gòu)、擴(kuò)展函數(shù)等參數(shù)。
  •   Architecture是指令集架構(gòu),rv32i是RISC-V 基礎(chǔ)整數(shù)指令集RVM表示支持乘除法擴(kuò)展,RVA表示支持原子擴(kuò)展,RVF表示單精度浮點(diǎn)數(shù)擴(kuò)展,RVD為雙精度浮點(diǎn)數(shù)擴(kuò)展,RVC為壓縮指令擴(kuò)展。
  • IntegerABI RISC-V應(yīng)用程序整數(shù)二進(jìn)制接口,F(xiàn)loating point ABI為RISC-V應(yīng)用程序浮點(diǎn)數(shù)二進(jìn)制接口,RISC-V 編譯器支持多個(gè) ABI,具體取決于 F D 擴(kuò)展是否存在。RV32 ABI 分別名為 ilp32ilp32f ilp32dilp32 表示 C 語(yǔ)言的整型(int),長(zhǎng)整型(long)和指針(pointer) 都是 32 位,可選后綴表示如何傳遞浮點(diǎn)參數(shù)。在 ilp32 中,浮點(diǎn)參數(shù)在整數(shù)寄存器中傳遞; 在 ilp32f中,單精度浮點(diǎn)參數(shù)在浮點(diǎn)寄存器中傳遞;在 ilp32d中,雙精度浮點(diǎn)參數(shù)也在浮點(diǎn)寄存器中傳遞。自然,如果想在浮點(diǎn)寄存中傳遞浮點(diǎn)參數(shù),需要相應(yīng)的浮點(diǎn)ISA 添加 F D 擴(kuò)展。因此要編譯 RV32I 的代碼(GCC 選項(xiàng)-march=rv32i),必須使用 ilp32ABIGCC選項(xiàng)-mabi=ilp32)。反過(guò)來(lái),調(diào)用約定并不要求浮點(diǎn)指令一定要使用浮點(diǎn)寄存器,因此RV32IFDilp32ilp32filp32d都兼容。
  •   Tuning 由微架構(gòu)優(yōu)化給定處理器的輸出,默認(rèn)是rocket。
  •   Code model主要有兩種模式:
-mcmodel=medlow:程序及其靜態(tài)定義的符號(hào)必須位于單個(gè)2 GiB地址范圍內(nèi),并且必須位于絕對(duì)地址-2 GiB和+2 GiB之間。程序可以靜態(tài)或動(dòng)態(tài)鏈接。這是默認(rèn)的代碼模型。
-mcmodel=medany:程序及其靜態(tài)定義的符號(hào)可以任何單個(gè)2 GiB地址范圍內(nèi)。程序可以靜態(tài)或動(dòng)態(tài)地連接。
  •   Align 中-mstrict-align-mno-strict-align 取決于處理器是否支持內(nèi)存的非對(duì)齊訪問(wèn)。
  •   Small data limit 在某些目標(biāo)上將小于n字節(jié)的全局和靜態(tài)變量放進(jìn)一個(gè)特殊的段。


【優(yōu)化等級(jí)】主要是配置GCC的優(yōu)化選項(xiàng),想要添加其他優(yōu)化選項(xiàng)可以寫(xiě)在下方other optimizationflags中。
                    

  •   -O0:無(wú)優(yōu)化(默認(rèn))
  •   -O、-O1:使用能減少目標(biāo)文件大小以及執(zhí)行時(shí)間并且不會(huì)使編譯時(shí)間明顯增加的優(yōu)化.在編譯大型程序的時(shí)候會(huì)顯著增加編譯時(shí)內(nèi)存的使用.
  •   -O2: 包含-O1的優(yōu)化并增加了不需要在目標(biāo)文件大小和執(zhí)行速度上進(jìn)行折衷的優(yōu)化.編譯器不執(zhí)行循環(huán)展開(kāi)以及函數(shù)內(nèi)聯(lián).此選項(xiàng)將增加編譯時(shí)間和目標(biāo)文件的執(zhí)行性能.
  • -Os:專門(mén)優(yōu)化目標(biāo)文件大小,執(zhí)行所有的不增加目標(biāo)文件大小的-O2優(yōu)化選項(xiàng).并且執(zhí)行專門(mén)減小目標(biāo)文件大小的優(yōu)化選項(xiàng).
  • -O3: 打開(kāi)所有-O2的優(yōu)化選項(xiàng)并且增加部分參數(shù)。

【警告等級(jí)】用于設(shè)置GCC的警告參數(shù)選項(xiàng)。

                    
  • -fsyntax-only:檢查代碼中的語(yǔ)法錯(cuò)誤,但除此之外不要做任何事情。
  • -fmax-errors=n:將錯(cuò)誤消息的最大數(shù)量限制為n ,此時(shí)GCC會(huì)緩存,而不是嘗試?yán)^續(xù)處理源代碼。 如果n為0(默認(rèn)值),則生成的錯(cuò)誤消息數(shù)量不受限制。 如果還指定了-Wfatal-errors ,則重大錯(cuò)誤優(yōu)先于此選項(xiàng)。
  •   -w:禁止所有警告消息。
  • -Werror:使所有的警告進(jìn)入錯(cuò)誤
  •   -pedantic:允許發(fā)出ANSI/ISO C標(biāo)準(zhǔn)所列出的所有警告
  • -pedantic-errors:允許發(fā)出ANSI/ISO C標(biāo)準(zhǔn)所列出的錯(cuò)誤
  • -Wfatal-errors:遇到第一個(gè)錯(cuò)誤就停止,減少查找錯(cuò)誤時(shí)間

【調(diào)試等級(jí)】紅框中的-g設(shè)置GDB調(diào)試信息,注意生成靜態(tài)庫(kù)時(shí)將紅框中調(diào)為None,否則生成的庫(kù)會(huì)包含調(diào)試信息,導(dǎo)致庫(kù)文件過(guò)大。
                     


【匯編、頭文件添加】紅框中的位置分別為添加匯編、頭文件接口,點(diǎn)擊右側(cè)方框上綠色的加號(hào)去添加文件路徑。



【鏈接腳本文件添加】紅框中的位置分別為添加鏈接腳本文件接口,點(diǎn)擊右側(cè)方框上綠色的加號(hào)去添加文件路徑。


                    
【庫(kù)文件添加】
-L添加庫(kù)文件的路徑,-l添加庫(kù)名,注意庫(kù)名要去掉前綴和后綴,例如libtest.a,只需要填寫(xiě)test。



【鏈接其他文件】Other objects 可以添加想要參與鏈接的.o或者.lib文件。
                    


【輸出文件格式】右側(cè)紅框中可點(diǎn)擊下拉框選擇編譯后輸出BIN文件或者HEX文件。



【輸出類型】圖示位置可選擇生成可執(zhí)行文件或者靜態(tài)庫(kù)文件。

                     

以上就是MRS常用的編譯配置,編譯之后生成的文件會(huì)存在工程目錄中obj文件中,其中.list和.map文件可用于對(duì)程序分析。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表