查看: 1069|回复: 5
收起左侧

RISC-V MCU开发 (四):编译配置

[复制链接]

  离线 

  • TA的每日心情
    拍拍
    2021-10-29 10:26
  • 签到天数: 1 天

    [LV.1]

    发表于 2021-9-27 10:16:13 | 显示全部楼层 |阅读模式

    有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
         在嵌入式开发中,当我们完成了工程创建、代码编辑等操作之后,就可以开始进行工程编译。 对于使用内置工程模板创建或外部导入的项目,MounRiver® Studio(MRS)会根据对应芯片内核自动配置好目标工具链(riscv-none-embed-gcc或arm-none-eabi-gcc),同时,目标平台、优化等级、调试等级以及文件引用等编译配置也会自动设置完毕。

         MRS最新V1.51版本安装包获取方式:www.mounriver.com


    【工程属性页】在资源管理器窗口选中要编译的工程,点击工具栏上的工程属性配置按钮,或者点击右键菜单中的”Properties”进入编译选项属性页面。
    MounRiver Stuido IDE-RISC-V MCU开发 (四):编译配置risc-v单片机中文社区(1) file:///C:/Users/LIUFEN~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg
    【目标处理器】用于指定目标指令架构、扩展函数等参数。
    • Architecture是指令集架构,rv32i是RISC-V 基础整数指令集
    • RVM表示支持乘除法扩展,RVA表示支持原子扩展,RVF表示单精度浮点数扩展,RVD为双精度浮点数扩展,RVC为压缩指令扩展。
    • IntegerABI 为RISC-V应用程序整数二进制接口,Floating point ABI为RISC-V应用程序浮点数二进制接口,RISC-V 编译器支持多个 ABI,具体取决于 F 和 D 扩展是否存在。RV32 的 ABI 分别名为 ilp32,ilp32f 和 ilp32d。ilp32 表示 C 语言的整型(int),长整型(long)和指针(pointer) 都是 32 位,可选后缀表示如何传递浮点参数。在 ilp32 中,浮点参数在整数寄存器中传递; 在 ilp32f中,单精度浮点参数在浮点寄存器中传递;在 ilp32d中,双精度浮点参数也在浮点寄存器中传递。自然,如果想在浮点寄存中传递浮点参数,需要相应的浮点ISA 添加 F 或 D 扩展。因此要编译 RV32I 的代码(GCC 选项-march=rv32i),必须使用 ilp32ABI(GCC选项-mabi=ilp32)。反过来,调用约定并不要求浮点指令一定要使用浮点寄存器,因此RV32IFD与 ilp32,ilp32f和 ilp32d都兼容。
    • 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 optimization flags中。

    MounRiver Stuido IDE-RISC-V MCU开发 (四):编译配置risc-v单片机中文社区(2)

    file:///C:/Users/LIUFEN~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg
    • -O0:无优化(默认)
    • -O、-O1:使用能减少目标文件大小以及执行时间并且不会使编译时间明显增加的优化.在编译大型程序的时候会显著增加编译时内存的使用.
    • -O2: 包含-O1的优化并增加了不需要在目标文件大小和执行速度上进行折衷的优化.编译器不执行循环展开以及函数内联.此选项将增加编译时间和目标文件的执行性能.
    • -Os:专门优化目标文件大小,执行所有的不增加目标文件大小的-O2优化选项.并且执行专门减小目标文件大小的优化选项.
    • -O3: 打开所有-O2的优化选项并且增加部分参数。

    【警告等级】用于设置GCC的警告参数选项。

    MounRiver Stuido IDE-RISC-V MCU开发 (四):编译配置risc-v单片机中文社区(3)

    file:///C:/Users/LIUFEN~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg
      -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,否则生成的库会包含调试信息,导致库文件过大。

    MounRiver Stuido IDE-RISC-V MCU开发 (四):编译配置risc-v单片机中文社区(4)

    file:///C:/Users/LIUFEN~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg
    【汇编、头文件添加】红框中的位置分别为添加汇编、头文件接口,点击右侧方框上绿色的加号去添加文件路径。
    MounRiver Stuido IDE-RISC-V MCU开发 (四):编译配置risc-v单片机中文社区(5)

    file:///C:/Users/LIUFEN~1/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpg
    【链接脚本文件添加】红框中的位置分别为添加链接脚本文件接口,点击右侧方框上绿色的加号去添加文件路径。

    MounRiver Stuido IDE-RISC-V MCU开发 (四):编译配置risc-v单片机中文社区(6)

    file:///C:/Users/LIUFEN~1/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpg
    【库文件添加】
    -L添加库文件的路径,-l添加库名,注意库名要去掉前缀和后缀,例如libtest.a,只需要填写test。

    MounRiver Stuido IDE-RISC-V MCU开发 (四):编译配置risc-v单片机中文社区(7)

    file:///C:/Users/LIUFEN~1/AppData/Local/Temp/msohtmlclip1/01/clip_image016.jpg
    【链接其他文件】Other objects 可以添加想要参与链接的.o或者.lib文件。

    MounRiver Stuido IDE-RISC-V MCU开发 (四):编译配置risc-v单片机中文社区(8)

    file:///C:/Users/LIUFEN~1/AppData/Local/Temp/msohtmlclip1/01/clip_image018.jpg
    【输出文件格式】右侧红框中可点击下拉框选择编译后输出BIN文件或者HEX文件。

    MounRiver Stuido IDE-RISC-V MCU开发 (四):编译配置risc-v单片机中文社区(9)

    file:///C:/Users/LIUFEN~1/AppData/Local/Temp/msohtmlclip1/01/clip_image020.jpg
    【输出类型】图示位置可选择生成可执行文件或者静态库文件。

    MounRiver Stuido IDE-RISC-V MCU开发 (四):编译配置risc-v单片机中文社区(10)
    file:///C:/Users/LIUFEN~1/AppData/Local/Temp/msohtmlclip1/01/clip_image022.jpg
    以上就是MRS常用的编译配置,编译之后生成的文件会存在工程目录中obj文件中,其中.list和.map文件可用于对程序分析。





    上一篇:RISC-V MCU开发 (三):代码编辑
    下一篇:RISC-V MCU开发 (五):调试配置
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

      离线 

  • TA的每日心情
    奋斗
    2022-2-18 00:56
  • 签到天数: 16 天

    [LV.4]

    发表于 2021-9-27 12:36:50 | 显示全部楼层
    编译设置在Windows下不好搞,Linux反而好操作

    点评

    但是像我们这种之前KEIL用得多的,还是习惯在Windows下搞嵌入式  详情 回复 发表于 2021-9-27 17:00
    全球首家只专注于RISC-V单片机行业应用的中文网站

      离线 

  • TA的每日心情
    拍拍
    2021-10-29 10:26
  • 签到天数: 1 天

    [LV.1]

     楼主| 发表于 2021-9-27 17:00:35 | 显示全部楼层
    孔明 发表于 2021-9-27 12:36
    编译设置在Windows下不好搞,Linux反而好操作

    但是像我们这种之前KEIL用得多的,还是习惯在Windows下搞嵌入式

    点评

    Keil被ARM收了,定然不会兼容RISC-V这个眼中钉,我个人认为RISC-V这个不该走ARM+Keil这条闭源老路,应该独辟蹊径  详情 回复 发表于 2021-9-29 15:07
    时代变了,我们都认为今后开发人员会逐步像Linux和云端编译靠拢,Windows基本上到头了,太不灵活了,越用越傻,固件越来越大,很多测试都没法进行,我们目前很多固件需要专业测试框架下运行,毫无例外都是Linux下。  详情 回复 发表于 2021-9-29 15:05
    大神厉害  详情 回复 发表于 2021-9-27 23:20
    全球首家只专注于RISC-V单片机行业应用的中文网站

      离线 

  • TA的每日心情
    慵懒
    2021-7-23 17:16
  • 签到天数: 17 天

    [LV.4]

    发表于 2021-9-27 23:20:22 | 显示全部楼层
    Rvfive 发表于 2021-9-27 17:00
    但是像我们这种之前KEIL用得多的,还是习惯在Windows下搞嵌入式

    大神厉害MounRiver Stuido IDE-RISC-V MCU开发 (四):编译配置risc-v单片机中文社区(11)MounRiver Stuido IDE-RISC-V MCU开发 (四):编译配置risc-v单片机中文社区(12)
    全球首家只专注于RISC-V单片机行业应用的中文网站

      离线 

  • TA的每日心情
    奋斗
    2022-2-18 00:56
  • 签到天数: 16 天

    [LV.4]

    发表于 2021-9-29 15:05:03 | 显示全部楼层
    Rvfive 发表于 2021-9-27 17:00
    但是像我们这种之前KEIL用得多的,还是习惯在Windows下搞嵌入式

    时代变了,我们都认为今后开发人员会逐步像Linux和云端编译靠拢,Windows基本上到头了,太不灵活了,越用越傻,固件越来越大,很多测试都没法进行,我们目前很多固件需要专业测试框架下运行,毫无例外都是Linux下。
    全球首家只专注于RISC-V单片机行业应用的中文网站

      离线 

  • TA的每日心情
    奋斗
    2022-2-18 00:56
  • 签到天数: 16 天

    [LV.4]

    发表于 2021-9-29 15:07:07 | 显示全部楼层
    Rvfive 发表于 2021-9-27 17:00
    但是像我们这种之前KEIL用得多的,还是习惯在Windows下搞嵌入式

    Keil被ARM收了,定然不会兼容RISC-V这个眼中钉,我个人认为RISC-V这个不该走ARM+Keil这条闭源老路,应该独辟蹊径
    全球首家只专注于RISC-V单片机行业应用的中文网站
    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

    RISC-V单片机中文网上一条 /2 下一条


    版权及免责声明|RISC-V单片机中文网 |网站地图

    GMT+8, 2024-4-24 23:49 , Processed in 1.518891 second(s), 65 queries .

    快速回复 返回顶部 返回列表