本文主要是介绍OpenRisc-OptiMSoC,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
简介:OptiMSoC是基于OpenRisc的多核SOC
移植
开发环境的搭建:
or1k工具链编译及安装:
gcc后端移植
编译optimsoc linux镜像:
1、make失败
2、编译linux系统发现地址无法访问:
怎样使用OpenOCD
FPGA平台移植:
编译FPGA代码:
启动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 代码的原始开发者无法满足自由软件基金会代码所需的版权分配作为上游工作的要求。
采用免费开源的 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系统编译(mk文件说明),如何添加自己的应用程序详细规则可以参看buildroot:[上面的操作方法仅作规避使用,并不是好的解决方法]
•https://blog.csdn.net/prike/article/details/79352704
•https://buildroot.org/downloads/manual/manual.html#adding-packages
-------------------------------------------------------------------
最终生成了linux镜像
output/images/vmlinux
怎样使用OpenOCD
FPGA平台移植:
optimsoc所需的硬件资源为一个串口/一个DDR内存
1、examples/fpga目录需改
由于我们只需要compute_tile工程,所以另一个system_2x2_cccc文件夹可以删除,
修改sv文件和自己的硬件接口匹配,注意设置uart 波特率,受硬件影响这里只用了200KHz的速度
修改.core文件:图片中第一个红框对应的具体地址:“src/soc/hw/board”
2、src/soc/hw/board目录修改
同1,替换自己的xdc文件,修改core文件,替换自己的xci文件。
所需的xdc/xci文件,可以先将源码拷贝一分到其它目录,用xilinx vivado导入,根据自己的板卡,手动修改ip核文件及xdc,并生成bit验证,将bit下载到板卡,尤其是DDR部分,用Xilinx Jtag 扫描查看下DDR ip是否pass,界面上有一个绿灯,一开始ddr配错了时钟引脚,必需使用中间bank的时钟,同时配错了一根引脚导致DDR failed,后来又发现uart rx和tx引脚配反了,同时此处的uart需要cts/rts流程,来提高传输效率,所以需要4根引脚,最好不要把流控引脚注掉,一开始我发现串口无法联通,可能就是这个问题。完成后再将需要的文件考到源码目录,这样就可以避免一些文件错误。
3、工程编译
需要注意,由于使用的virtex untrascale器件,所以不能用web版本,主要遇到的问题是ip核综合失败,但也没有message错误,在log口看到具体错误的步骤,发现时系统内存不够,我在虚拟机上运行,内存分了2GB,后来改到10GB后基本可以正常执行了,生成了bit,不过虚拟机编译较慢,服务器只要25min左右,虚拟机至少要1h左右,而且虚拟机存在空间不够问题,还好这次我有16GB内存,否侧又要重新安装一套环境。。
fusesoc --cores-root $OPTIMSOC_SRC/examples/fpga/vcu440/compute_tile build optimsoc:examples:compute_tile_vcu440 --UART0_SOURCE=onboard --HOST_IF=uart
编译FPGA代码:
./tools/build.py --link-hw --without-docs --without-examples-fpga --without-examples-sim
fusesoc --verbose --cores-root $OPTIMSOC_SRC/examples/fpga/vcu440 build optimsoc:examples:vcu440
fusesoc --cores-root $OPTIMSOC_SRC/examples/fpga/vcu440/compute_tile build optimsoc:examples:compute_tile_vcu440 --UART0_SOURCE=onboard --HOST_IF=uart
root@will-VirtualBox:/home/will/src/synthesis# fusesoc --cores-root $OPTIMSOC_SRC/examples/fpga/vcu440/compute_tile build optimsoc:examples:compute_tile_vcu440 --UART0_SOURCE=onboard --HOST_IF=uart
osd-target-run -e hello.elf -b uart -o device=/dev/ttyUSB0,speed=1000000 --coretrace --systrace --verify -vvv
osd-target-run -e vmlinux -b uart -o device=/dev/ttyUSB0,speed=1000000 --systrace -vvv --terminal
osd-target-run -e hello.elf -b uart -o device=/dev/ttyUSB0,speed=1000000 --coretrace --systrace --verify -vvv
启动linux
打开另一个terminal,如果没有需要安装下screen,
screen /dev/pts/2
root账户登录进去,没有密码
可以玩一下吃豆人游戏:
# convince Linux that our console supports colors
stty cols 80 rows 80
export TERM=linux
# and run pacman
/usr/games/pacman4*
参考
https://www.optimsoc.org/docs/master/user_guide/tutorials.html#run-linux-on-optimsoc
这篇关于OpenRisc-OptiMSoC的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!