OptiMSoC

目录

简介:OptiMSoC是基于OpenRisc的多核SOC

移植

开发环境的搭建:

or1k工具链编译及安装:

gcc后端移植

编译optimsoc linux镜像:

1、make失败

2、编译linux系统发现地址无法访问:



简介:OptiMSoC是基于OpenRisc的多核SOC

1、https://openrisc.io/

https://github.com/openrisc/or1ksim

2、https://openrisc.io/soc.html#optimsoc

https://github.com/optimsoc/optimsoc

3、https://www.optimsoc.org/docs/master/refman/porting.html#porting-to-an-fpga-target

移植

第一步:https://www.glip.io/

https://opensocdebug.org/

http://www.lisnoc.org/

---------------------------------------------------------------------------------------------------------------

开发环境的搭建:

先下载源码生成help文件,下面的内容主要参考help文件

https://github.com/optimsoc/optimsoc

https://blog.csdn.net/u011329967/article/details/106998291

也可以直接看在线帮助文档:

https://www.optimsoc.org/docs/

----------------------------------------------------------------------------

  前期准备:

   python3/pip3的安装:

   这里主要是安装了pip3以及venv(python的虚拟环境),安装前最好先更新下依赖库

sudo apt-get update
sudo apt-get upgrade
pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip3 -V
pip3 install virtualenv -i http://mirrors.aliyun.com/pypi/simple/

   fusesoc安装:

pip3 install --user --upgrade fusesoc
pip3 install --user --upgrade pytest
fusesoc --version || echo 'PATH=~/.local/bin:$PATH' >> ~/.bashrc

  gtkwave安装:

sudo apt-get -y install gtkwave

 vivado安装:(需要申请官网账号)

    WebPack版本即可

---------------------------------------------------------------------------------------------------------------------

or1k工具链编译及安装:

gcc工具面向于前端高级语言后端cpu rtl代码,or1k已经被gcc工具原生支持

美国当地时间2018 8月30日,GCC 发布公告称,GCC 指导委员会已接受 OpenRISC 作为包含在 GCC 编译器的最新架构端口,并指派 Stafford Horne 为维护者。这个 OpenRISC 端口应该会在不久的将来落地使用,以便明年发布的 GCC 9 稳定版提供该功能。与 RISC-V 指令集架构相比,虽然 OpenRISC 对 GCC 的支持时间比它更长,但 OpenRISC 端口遇到了复杂的问题 —— 关于代码版权方面的问题。负责 OpenRISC GCC 代码的原始开发者无法满足自由软件基金会代码所需的版权分配作为上游工作的要求。


因此,开发者最终为 GCC 重写了 OpenRISC 编译器代码。该代码已经发布,GCC 指导委员会也已确认其将会成为 GCC 最新的处理器目标。OpenRISC 是 OpenCores 组织提供的基于 GPL 协议的开源 RISC(精简指令集计算机)处理器。有人认为其性能介于 ARM7 和 ARM9 之间,适合一般的嵌入式系统使用。最重要的一点是 OpenCores 组织提供了大量的开源 IP 核供研究人员使用,因此对于一般的开发单位具有很大的吸引力。


OpenRISC 具有以下特点:

    采用免费开源的 32/64bit RISC/DSP 架构。
    用 Verilog HDL(硬件描述语言)实现了基于该 RISC/DSP 架构的 RTL(寄存器传输级)描述。
    具有完整的工具链,包括:开源的软件开发工具、C 语言实现的 CPU 仿真模型、操作系统,以及软件应
用所需的函数库。

下载安装or1k工具链(已经编译好的版本):

# if it does not exist yet: prepare the ~/optimsoc directory
mkdir -p ~/optimsoc
# download and install the prebuilt tools
curl -O https://raw.githubusercontent.com/optimsoc/prebuilts/master/optimsoc-prebuilt-deploy.py
python optimsoc-prebuilt-deploy.py -d $HOME/optimsoc verilator or1kelf

命令注解:

  mkdir -- 新建目录,加-p参数表示目录不存在就新建,而不报错

  curl -O -- wget命令,意思就是下载目标文件(这里才只是一个py脚本)

  python --就是执行py脚本,去下载所需的工具链,默认会先下载到“/tmp”目录,具体看脚本里怎么写的;

                -d参数指定安装目录

  此处现在了两个工具一个是verilator,是一个verilog转c的工具用于仿真验证;or1kelf就是我们需要的编译好的工具链了

  安装完所需的工具链后还需要将其添加到环境变量才可以正常使用:

source ~/optimsoc/setup_prebuilt.sh
echo 'source ~/optimsoc/setup_prebuilt.sh' >> ~/.bashrc
常用的添加环境变量的方法就是:

      1、 利用用户路径下的:~/.bashrc文件 ,只针对这个用户

      2、利用/etc/profile文件,针对所有用户

  两种操作方法一样在文件末尾追加命令:export

从源码构建gcc的工具链:

https://github.com/openrisc/or1k-gcc/releases
https://github.com/openrisc/tutorials/blob/master/docs/Linux.md

https://www.archlinux.org/packages/community/x86_64/or1k-elf-gcc/

gcc后端移植

参照riscv的操作:

https://github.com/riscv/riscv-gnu-toolchain

这条语句默认装的是x86的gcc,因为没有指定target,

./configure是用来生成Makefile文件的,--prefix是指定安装目录,之后执行make/make install/make clean即可

./configure --prefix=/opt/optimsoc --disable-multilib

根据gcc手册:https://gcc.gnu.org/install/specific.html

设置target参数为or1k-elf 

host参数默认为自己的主机x86,不需要指定

./configure --prefix /opt/or1k --target or1k-elf

但编译工具链还是出错:

configure: error: cannot compute suffix of object files: cannot compile

Makefile:12208: recipe for target 'configure-target-libgcc' failed

解决办法是:

安装:gmp,mpfr,mpc

参考:

https://www.cnblogs.com/Hxinguan/p/5016305.html

https://my.oschina.net/mskk/blog/3117489

https://www.cnblogs.com/kerndev/p/5537390.html

-----------------------------------------------------------------------------

源码编译:

  有了工具链便可以进行源码编译了:

  下载:

mkdir -p ~/src
cd ~/src
git clone https://github.com/optimsoc/optimsoc.git
cd optimsoc
注意更新一下依赖包并source一下工具链:
source ~/optimsoc/setup_prebuilt.sh
./update_externals.sh
./tools/install-build-deps.sh

提示vivado没有找到:

在/etc/profile里面添加vivado路径:

make/make install

构建过程完成后,所有构建工件都位于中objdir/dist

最后:

source YOUR_INSTALLATION_DIR/objdir/dist/optimsoc-environment.sh

即可

由于一开始没有执行:./tools/install-build-deps.sh

报出来pkg-config问题,但输入pkg-config -V能看到是最新版本

Consider adjusting the PKG_CONFIG_PATH environment variable if you installed

编译optimsoc linux镜像:

操作步骤

# get the OpTiMSoC buildroot configuration (a "br2-external tree")
git clone https://github.com/optimsoc/optimsoc-buildroot.git
cd optimsoc-buildroot
OPTIMSOC_BUILDROOT_DIR=$PWD
OPTIMSOC_BUILDROOT_VERSION=$(cat $OPTIMSOC_BUILDROOT_DIR/buildroot_version)
cd .. # back to your source directory

# get buildroot itself
git clone https://git.busybox.net/buildroot
cd buildroot
git checkout $OPTIMSOC_BUILDROOT_VERSION
make BR2_EXTERNAL=$OPTIMSOC_BUILDROOT_DIR optimsoc_computetile_singlecore_defconfig
make

1、make失败

报$LD_LIBRARY_PATH被定义,但无效

执行

  unset -v LD_LIBRARY_PATH

继续make即可

2、编译linux系统发现地址无法访问:

make menuconfig

定位到安装包所在的位置,也可以将这个包去除,这实际上是一个吃豆人游戏包:

继续定位:

这个谷歌地址目前只能用谷歌浏览器器的插件ASTAR下载:

其它vpn代理都不稳定。

试了下直接改到本地路径,wget无法获取,那就改到本地服务器吧:

两种方案一种ftp(用FileZilla配置后需要用户名,就放弃了);

另一种http,这里我用了XMAPP,安装之后就可以配置一个本地服务器:

https://www.apachefriends.org/download.html

XAMPP非常好用(而且工具很全,之前一直用来做个人Blog),一键就可以部署自己的服务器,比windows自带的方便多了,

下载来的文件放在:

最终生成了linux镜像

     output/images/vmlinux

 

怎样使用OpenOCD

OpenOCD运行起来需要3种文件:interface,target和board。它们分别用于配置debug adapter,SOC和开发板,位于:"/usr/local/share/openocd/scripts/"目录(不同的机子可能会不同)。OpenOCD已经把常见的都写好了
 

 

 

 

 

 

posted @ 2020-06-22 11:07  Hello+World!  阅读(493)  评论(0编辑  收藏  举报