Linux下MIPS RISC-V开发环境部署记录

发布于 — 2022 年 11 月 04 日

本节任务

  1. 安装Linux操作系统(本文采用Ubuntu Desktop x86_64 20.04
  2. 安装设计软件:Xilinx ISE 14.7Xilinx Vivado 2020.2
  3. 安装MIPS开发工具:Codescape MIPS SDKQtSpim
  4. 安装开发板调试工具:Digilent Adept System
  5. 调通shell调试环境

一、安装Linux操作系统

1. 选择Linux进行课程学习的原因

  • 目前的主流Windows系统(Windows10、Windows11)越来越无法兼容之前的软件和开发板,反倒Linux主流发行版仍对这些软件和设备保持了较好的兼容性。
    • Xilinx ISE 14.7为例,在Windows 10上需要手动修改才能运行大部分功能(PlanAhead等部分功能似乎无法运行),在Windows 11上ISE则根本无法启动,报错Microsoft Visual C++ Redistributable 2008未安装(实际已安装)(3月8日更新: 有方法称可以将程序启动时运行的settings64改为settings32解决)。
    • 本文会简单给出Windows下的环境部署思路。
  • 使用Linux将为之后Linux相关开发带来方便,使用Linux也可能更好发挥系统性能(但没有明确事实依据,且此处仅指直接安装)

2. 安装

3. 安装注意事项

  • 所需空间大小: 尽可能保证不小于200GB
  • 分区方案: 建议选择自动分区或只建立一个根目录挂载点/,如果要建立多个挂载点,可以参考这篇文章。本课程软件多安装在/opt目录下,未单独建立挂载点时,该目录归属于/,故请适当调大/的容量。如果单独建立/opt挂载点,也请适当调大该挂载点容量
  • 烧录U盘时,尽量选择质量好速度快的U盘,否则会增加系统出错几率。

4. Linux常用软件

二、安装设计软件

(一) Xilinx ISE 14.7

  1. 下载Xilinx官网(需注册账号)

  2. 安装

    • Windows安装

    • Linux 安装: https://blog.csdn.net/ixunmo/article/details/82194896

      注:

      • 若Ubuntu下安装程序报错无法运行,一般是因为缺少相关运行库。笔者安装时缺少libncurses5sudo apt-get install libncurses5然后重新启动即可解决

      • 如果你使用其它Linux发行版出现Segmentation Faults错误,请尝试如下解决方案(若无效,建议查找日志人工排错或直接换发行版(Ubuntu 20.04实测可以安装)):

        1. ‘unset KDE_SESSION_VERSION’ Run this command in the same terminal you are starting ISE. Surpisingly, it can solve a whole lot of problems with weird segfaults – be it installer, simulator or project manager.
        2. LD_PRELOAD With this command you can force linker to use selected library version instead of version bundled with ISE. Especially useful when replacing libstdc++.so.6 or Qt libraries. Below is small scripts that takes care of it:
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        
        #!/bin/bash
        ISE_DS_DIR=/opt/Xilinx/13.4/ISE_DS
        
        #prevent segmentation faults
        unset KDE_SESSION_VERSION
        
        cd "$ISE_DS_DIR"
        source "$ISE_DS_DIR"/settings64.sh
        
        # reset locale to English to fix decimal/comma seperation
        export LANG=''
        
        # fix missing symbol problems (linker bugs?) at cost of longer startup of each process
        # can help if e.g. Core Generator isn't starting when modyfying generated core
        # otherwise, leave it commented
        #export LD_BIND_NOW=true
        
        # forcing particular lib version is particularly useful when trying to run ISim,
        # or using external editor instead of Xilinx's NOTEPAD
        # but sometimes (depending on moon phase and weather) may break something
        LD_PRELOAD=/usr/lib64/libstdc\+\+.so.6 "$ISE_DS_DIR"/ISE/bin/lin64/ise
        #"$ISE_DS_DIR"/ISE/bin/lin64/ise
        
        #TASKS:
        # -check sysgen/settings(32/64).sh file for correct library paths (missing lin/lin64 part)
        

(二) Vivado 2020.2

  1. 注:安装之前,请先搜索你要安装的Vivado版本是否支持你的开发板(Vivado 2020.2是支持Basys3的最后版本)
  2. 下载Xilinx官网
  3. 安装: 在安装文件解压目录终端下输入sudo ./xsetup即可开始安装,理论上应该不会遇到任何问题

三、安装MIPS开发工具

(一)Codescape MIPS SDK

  1. 下载: MIPS官网,推荐下载离线安装程序。

  2. sudo运行安装程序即可,安装时请勾选Bare Metal Toolchain下的全部内容,如果要进行Linux嵌入式开发,那GNU Linux Toolchain下的内容也要勾上。

  3. 参考下面内容创建环境变量设置脚本

    #!/bin/bash
    MIPS_TOOLCHAIN_DIR=/opt/imgtec/Toolchains
    MIPS_TOOLCHAIN_VER=2017.10.05
    MIPS_ARCHITECTURE=mti
    # Available MIPS Architecture: mti, img
    # MIPS-MTI supports MIPS32R2 and MIPS64R2 through to MIPS32R5 and MIPS64R5 as well as the MicroMIPS ASE for each of those architectures.
    # MIPS-IMG supports New for MIPS32R6 and MIPS64R6 as well as the MicroMIPS ASE for each of these architectures.
    # MIPS_TOOLCHAIN_VER2=2020.06.01
    export MIPS_ELF_ROOT="$MIPS_TOOLCHAIN_DIR"/"mips-$MIPS_ARCHITECTURE-elf"/"$MIPS_TOOLCHAIN_VER"/
    export MIPS_LINUX_GNU_ROOT="$MIPS_TOOLCHAIN_DIR"/"mips-$MIPS_ARCHITECTURE-linux-gnu"/"$MIPS_TOOLCHAIN_VER"/
    ## Optional: Add mips-gcc to PATH
    # export PATH=$PATH:"$MIPS_TOOLCHAIN_DIR"/"mips-$MIPS_ARCHITECTURE-elf"/"$MIPS_TOOLCHAIN_VER"/bin
    

    MIPS Toolchain mtiimg的区别可以看这里

(二)QtSpim

四、安装开发板调试工具(以Adept System为例)

  1. 下载: 到Digilent官网下载Adept RuntimeAdept UtilitiesAdept SDK。Windows可通过这个链接下载
  2. 安装: sudo dpkg -i/sudo yum install/sudo dnf install安装Adept Runtime和Adept Utilities,解压Adept SDK后sudo ./install.sh安装Adept SDK。

五、调通Shell开发环境

(一)烧写bit文件

  1. 启动开发板,将其连接到你的计算机
  2. shell中输入djtgcfg enum检测可用设备
  3. 查找JTAG: djtgcfg init -d <DeviceName>
  4. 烧写bit文件: djtgcfg prog -d <DeviceName> -i <index> -f <FileName>
    • 对只有一个JTAG的设备来说,<index>的值为0,代表执行djtgcfg init时列出的第1个JTAG
    • bit文件可从你的课程老师/开发板官网例程/GitHub等处获得

(二) 通过UART串口上载.rec程序到开发板

  1. 编译: cd到例程目录,make clean后执行make
    • 如果提示找不到MIPS Toolchain/环境变量未设置,请参考上方3.1.3 设置Codescape MIPS SDK环境变量
    • 如果make时报错说../usr/bin/ld: cannot find -lxxx,说明缺少相应的库
      • 可尝试使用apt install libxxx(其中xxx为报错时给出的参数)解决
      • 也可找到/手动下载相应的库然后放到/链接到<你的MIPS_Toolchain目录>/……/usr/lib
      • 笔者编译时遇到报错../usr/bin/ld: cannot find -lfdc,检查发现使用的makefile是针对WIndows平台的,对应的Windows MIPS SDK中自带了libfdc库,而Linux安装时没发现这个库,如果你也遇到了这个问题,可以点此下载libfdc源代码,解压后将addon文件夹移动到你的MIPS Toolchain目录/mips-mti-elf/Toolchain版本号/share/mips/即可解决
  2. 通过串口连接设备并上载程序