查看: 1379|回复: 0
收起左侧

picoRV32 (RISC-V) GCC 编译环境

[复制链接]

  离线 

  • TA的每日心情
    奋斗
    2021-3-3 12:32
  • 签到天数: 10 天

    [LV.3]

    发表于 2020-8-23 20:52:29 | 显示全部楼层 |阅读模式

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

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

    x
    本帖最后由 皋陶 于 2020-8-26 15:21 编辑

    我在windows7 32/64bit系统下都分别试过,编译 OK


    采用的是 eclipse + GNU ,具体链接如下(32bit):


    GNU 编译器
    https://github.com/gnu-mcu-eclipse/riscv-none-gcc/releases/tag/v7.2.0-1-20171109[^]
    (gnu-mcu-eclipse-riscv-none-gcc-7.2.0-1-20171109-1926-win32-setup)

    elipcse c/c++安装包,用的是Neon3这个版本:http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/neon3[^]
    (eclipse-cpp-neon-3-win32)

    CDT,eclipse c/c++的开发环境,下载的是9.2.1
    https://projects.eclipse.org/projects/tools.cdt[^](cdt-9.2.1)

    eclipse for gnu-mcu-clipse的plugin
    https://github.com/gnu-mcu-eclipse/eclipse-plugins[^]
    (ilg.gnumcueclipse.repository-4.2.1-201711101735)


    具体安装过程就不累述了,注意事项:
    a. IDE使用eclipse,版本需要用neon3以上的,这也是plug in要求的 版本。而Eclipse的基础是必须有先安装过JRE

    b. CDT和plug in配合gnu-mcu-eclipse,形成我们的eclipse+gnu编译环境,对CDT的版本有要求也是因为plug in的 需求

    c. build tool好像并没有版本要求,有装过就ok,主要用于提供Make和rm..等命令

    d. gnuarmeclipse.github.io已经更名为gnu-mcu-eclipse.github.io,其中原来arm toolchain的下载链接都转到arm.com的官网(因为我之前一直在用ARM)

    e. eclipse配置和以前用ARM差别不大,仅仅是对于RISC-V tool chain需要设定路径


    实际上在linux或MAC上编译都差不多,上面那些链接里都可以找到对应文件压缩包的。

    个人感觉,改名为gnu-mcu-eclipse也是社区风向的转变,既然有开源CPU 可用而且还好用,当然更对这些人的口味,商用CPU已经不是唯一的选择了。


    软件编译的时候要根据picoRV32的配置来搭配,-march=rv32i* 肯定没有问题。不要选-march=rv32e*,编译不过,好像当前gcc(v7.2.0.1)还未支持16位嵌入式ISA


    首先从数字ic工程师那边确认一下,picoRV32配置了哪些,默认如下:


    ENABLE_COUNTERS = 1,              
    ENABLE_COUNTERS64 = 1,            
    ENABLE_REGS_16_31 = 1,            
    ENABLE_REGS_DUALPORT = 1,         
    LATCHED_MEM_RDATA = 0,            
    TWO_STAGE_SHIFT = 1,              
    BARREL_SHIFTER = 0,               
    TWO_CYCLE_COMPARE = 0,            
    TWO_CYCLE_ALU = 0,               
    COMPRESSED_ISA = 0,               
    CATCH_MISALIGN = 1,               
    CATCH_ILLINSN = 1,               
    ENABLE_PCPI = 0,                  
    ENABLE_MUL = 0,                  
    ENABLE_FAST_MUL = 0,              
    ENABLE_DIV = 0,                  
    ENABLE_IRQ = 0,                  
    ENABLE_IRQ_QREGS = 1,            
    ENABLE_IRQ_TIMER = 1,            
    ENABLE_TRACE = 0,                 
    REGS_INIT_ZERO = 0,               
    MASKED_IRQ = 32'h 0000_0000,      
    LATCHED_IRQ = 32'h ffff_ffff,     
    PROGADDR_RESET = 32'h 0000_0000,  
    PROGADDR_IRQ = 32'h 0000_0010,   
    STACKADDR = 32'h ffff_ffff        


    默认不支持RVM,也就是不支持整数乘除法,也没加载interrupt controller(它有32bits 中断源,可以选择按位MASK,增加了4个regiser给irq使用,关于interrupt controller具体介绍留在下一章写吧)。trap地址是0x10,有个timer,不过我没用过,当然这都不影响编译了。

    对了,研究代码可以去下载的picoRV32 source code里找,里面的fireware目录都是c code。
    (下篇介绍下RISC-V指令打下基础)
    本篇完,感谢关注:RISC-V单片机中文网




    上一篇:RISC-V:控制与状态寄存器(CSR)
    下一篇:织女星开发板RISC-V内核实现微秒级精确延时
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

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



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

    GMT+8, 2024-11-29 15:24 , Processed in 0.408414 second(s), 45 queries .

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