OptiMSoC
目录
简介:OptiMSoC是基于OpenRisc的多核SOC
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
移植
---------------------------------------------------------------------------------------------------------------
开发环境的搭建:
先下载源码生成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 代码的原始开发者无法满足自由软件基金会代码所需的版权分配作为上游工作的要求。
采用免费开源的 32/64bit RISC/DSP 架构。 |
下载安装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已经把常见的都写好了