久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2464|回復: 0
收起左側

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

[復制鏈接]
ID:809235 發表于 2021-9-27 14:44 | 顯示全部樓層 |閱讀模式
   在嵌入式開發中,當我們完成了工程創建、代碼編輯等操作之后,就可以開始進行工程編譯。 對于使用內置工程模板創建或外部導入的項目,MounRiver® Studio(MRS)會根據對應芯片內核自動配置好目標工具鏈(riscv-none-embed-gcc或arm-none-eabi-gcc),同時,目標平臺、優化等級、調試等級以及文件引用等編譯配置也會自動設置完畢。

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

                      1.png         



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


【優化等級】主要是配置GCC的優化選項,想要添加其他優化選項可以寫在下方other optimizationflags中。
2.png                     

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

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

【調試等級】紅框中的-g設置GDB調試信息,注意生成靜態庫時將紅框中調為None,否則生成的庫會包含調試信息,導致庫文件過大。
                     
4.png

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


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

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

7.png

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

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

9.png

【輸出類型】圖示位置可選擇生成可執行文件或者靜態庫文件。
10.png
                     

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

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线小视频 | 日韩黄a | 美日韩精品 | 国产激情综合五月久久 | 久久久www成人免费精品张筱雨 | 粉色午夜视频 | 米奇7777狠狠狠狠视频 | 91精品国产综合久久久动漫日韩 | 瑟瑟视频在线看 | 一级毛片视频在线观看 | 奇米av | 亚洲一区二区三区四区五区午夜 | 天天天操操操 | 中文字幕在线观看一区 | 久久狼人天堂 | 久久精品一区二区视频 | 日韩精品在线一区 | 在线欧美视频 | a毛片视频网站 | 91人人在线| 91成人免费电影 | 精产国产伦理一二三区 | 欧美日韩手机在线观看 | 免费观看色| 亚洲 欧美 综合 | 九九热精品在线视频 | 久久精品国产亚洲 | 欧美激情 一区 | 综合精品久久久 | 国产十日韩十欧美 | 亚洲欧美日韩网站 | 久国久产久精永久网页 | 日韩a视频| 91网站在线观看视频 | 欧美国产精品一区二区三区 | 久久久久久久电影 | a级黄色片在线观看 | 综合网在线 | 亚洲网站在线 | 二区久久 | 在线视频 亚洲 |