当前位置: 首页 > news >正文

QEMU学习之路(4)— Xilinx开源项目systemctlm-cosim-demo安装与使用

QEMU学习之路(4)— Xilinx开源项目systemctlm-cosim-demo安装与使用

一、前言

项目说明:https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/862421112/Co-simulation
操作系统:Ubuntu 20.04.6 LTS
gcc版本:9.4.0

二、SystemC安装

systemctlm-cosim-demo基于SystemC-2.3.2的,所以需要先安装SystemC-2.3.2,安装方式参考:
SystemC学习(1)— SystemC安装与HelloWorld

三、安装systemctlm-cosim-demo

通过git下载源码库,命令如下:

git clone https://github.com/Xilinx/systemctlm-cosim-demo.git

下载好后进入该目录,更新如下子模块:

git submodule update --init libsystemctlm-soc
git submodule update --init pcie-model

然后安装需要依赖的库

sudo apt-get install linux-libc-dev

然后我们需要设置SYSTEMC路径和做一些其他设置,在systemctlm-cosim-demo目录下创建.config.mk文件 ,内容如下所示:

HAVE_VERILOG=n
HAVE_VERILOG_VERILATOR=n
HAVE_VERILOG_VCS=n
SYSTEMC=${SYSTEMC_HOME}

然后就可以执行make 命令开始创建了,我们创建一个cpm4-qdma-demo,命令如下:

make pcie/versal/cpm4-qdma-demo

四、安装xilinx-qemu

通过git下载源码库,命令如下:

git clone https://github.com/Xilinx/qemu.git

然后切换到如下commit:

git checkout 74d70f8008

然后安装如下软件依赖:

sudo apt install git cmake make wget gcc g++ python3 pkg-config libglib2.0-dev libpixman-1-dev verilator expect cpio unzip rsync bc libssl-dev

然后使用如下命令进行配置:

./configure --target-list="arm-softmmu,aarch64-softmmu,microblazeel-softmmu,riscv32-softmmu,riscv64-softmmu,x86_64-softmmu" --enable-fdt --enable-kvm --disable-xen

然后执行如下命令进行编译:

make -j$((`nproc`+1))

指定安装路径安装:

make install DESTDIR=/home/william/tools/qemu

安装完成后,既可以在/home/william/tools/qemu/usr/local/bin/目录下看到如下可执行文件:
在这里插入图片描述

五、运行xilinx-qemu

创建一个运行目录,下载如下文件:

mkdir run; cd run
wget https://cloud-images.ubuntu.com/releases/focal/release-20210125/ubuntu-20.04-server-cloudimg-amd64.img
wget https://cloud-images.ubuntu.com/releases/focal/release-20210125/unpacked/ubuntu-20.04-server-cloudimg-amd64-vmlinuz-generic
wget https://cloud-images.ubuntu.com/releases/focal/release-20210125/unpacked/ubuntu-20.04-server-cloudimg-amd64-initrd-generic

使用如下命令重设img的大小:

qemu-img resize ubuntu-20.04-server-cloudimg-amd64.img 30G

然后安装cloud-image-utils

sudo apt-get install cloud-image-utils

创建user-data文件,输入如下内容:

#cloud-config
password: pass
chpasswd: { expire: False }
ssh_pwauth: True

然后创建一个user-data.img

cloud-localds user-data.img user-data

新建run_qemu.sh,内容如下:

/home/william/tools/qemu/usr/local/binqemu-system-x86_64                              \-M q35,accel=kvm,kernel-irqchip=split -cpu qemu64,rdtscp                          \-m 4G -smp 4 -enable-kvm -display none                                            \-kernel ubuntu-20.04-server-cloudimg-amd64-vmlinuz-generic               		  \-append "root=/dev/sda1 rootwait console=tty1 console=ttyS0 intel_iommu=on"       \-initrd ubuntu-20.04-server-cloudimg-amd64-initrd-generic                	      \-serial mon:stdio -device intel-iommu,intremap=on,device-iotlb=on                 \-drive file=ubuntu-20.04-server-cloudimg-amd64.img                       		  \-drive file=user-data.img,format=raw                                              \-device ioh3420,id=rootport1,slot=1                                               \-device remote-port-pci-adaptor,bus=rootport1,id=rp0                              \-machine-path /tmp/machine-x86/                                                   \-device virtio-net-pci,netdev=net0 -netdev type=user,id=net0                      \-device remote-port-pcie-root-port,id=rprootport,slot=0,rp-adaptor0=rp,rp-chan0=0

然后创建交换目录:

mkdir /tmp/machine-x86

执行如下命令启动qemu

sh run_qemu.sh

在这里插入图片描述
在另一个Terminal 进入systemctlm-cosim-demo目录下,执行

./pcie/versal/cpm4-qdma-demo unix:/tmp/machine-x86/qemu-rport-_machine_peripheral_rp0_rp 10000

可以看到如下打印:
在这里插入图片描述
在运行qemu的Terminal 下可以看到如下,已经可以登录ubuntu系统了
在这里插入图片描述
登录账号是ubuntu,密码是pass
登录成功如下所示
在这里插入图片描述
然后输入lspci命令,就可以看到虚拟出来的pcie设备了:
在这里插入图片描述


http://www.mrgr.cn/news/63835.html

相关文章:

  • 基于Spring Boot的网络考试系统设计与实现(源码+定制+开发)网络考试管理平台、智能考试评估系统、题库管理系统设计、Spring Boot考试平台开发
  • 计算机网路数据链路层详解
  • 论文概览 |《Journal of Transport Geography》2024.10 Vol.120
  • 【java batik_使用BATIK解析SVG生成PNG图片】
  • 【专用名词的离线语音识别在2024年底的解决方法调查-会议签到的补充】
  • 棋牌游戏防ddos攻击,高防IP好用吗?
  • [运维] 服务器本地网络可用性检查脚本
  • 信息学奥赛一本通 1393:联络员(liaison)
  • OpenEmbedded、yocto和poky是什么关系?
  • 计算机后台服务-更新下载,重启————未来之窗行业应用跨平台架构
  • Object类中的方法
  • *指针引用
  • 双指针习题篇(下)
  • 使用Django Channels实现WebSocket实时通信
  • 数据库作业5
  • yocto是如何收集recipes,如何加入现有的bb文件
  • Java | Leetcode Java题解之第525题连续数组
  • Linux 基础IO
  • Lucene的使用方法与Luke工具(2)
  • 【NOIP普及组】 FBI树
  • ATom:加州理工学院(CIT)化学电离质谱仪(CIMS)测量的气相有机和无机分析物的浓度CIT-CIMS
  • 代码随想录算法训练营第十七天| 654最大二叉树、617合并二叉树、700二叉搜索树中的搜索、98验证二叉搜索树
  • mlp文件夹继续阅读
  • ST IoT Wireless 物联网与无线技术 研讨会
  • 现代生产系统DORA的应用与集成
  • 理解typeScript中的高级类型