找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:809235 發(fā)表于 2021-9-27 14:44 | 只看該作者 |只看大圖 回帖獎勵 |正序瀏覽 |閱讀模式
   在嵌入式開發(fā)中,當我們完成了工程創(chuàng)建、代碼編輯等操作之后,就可以開始進行工程編譯。 對于使用內(nèi)置工程模板創(chuàng)建或外部導(dǎo)入的項目,MounRiver® Studio(MRS)會根據(jù)對應(yīng)芯片內(nèi)核自動配置好目標工具鏈(riscv-none-embed-gcc或arm-none-eabi-gcc),同時,目標平臺、優(yōu)化等級、調(diào)試等級以及文件引用等編譯配置也會自動設(shè)置完畢。

【工程屬性頁】在資源管理器窗口選中要編譯的工程,點擊工具欄上的工程屬性配置按鈕,或者點擊右鍵菜單中的”Properties”進入編譯選項屬性頁面。

                              



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


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

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

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

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

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


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



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


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



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


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



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

                     

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

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

相關(guān)帖子

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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