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.xdnf.cn/news/961.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【Java知识】高性能网络应用框架Netty应知应会

文章目录 概述线程模型IO模型代码示例服务端代码示例客户端代码示例代码说明: 自定义协议实现自定义协议格式自定义编码器(Encoder)自定义解码器(Decoder)业务处理器(Handler)在Netty服务器管道…

AUTOSAR 规范中的设计模式:传感器执行器模式

在 AUTOSAR Adaptive Platform (AP) 规范中,传感器执行器模式是一种典型的设计模式,主要用于实时控制系统中,用来实现传感器数据的获取和执行器指令的发送。该模式通过分离传感器和执行器的实现,使其独立运行并且能够通过某种通信机制进行数据交换,以确保数据的实时性和系…

Linux:编辑器Vim和Makefile

✨✨所属专栏:Linux✨✨ ✨✨作者主页:嶔某✨✨ vim的三种常用模式 分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode) 各模式的功能区分如下&…

【Linux】【进程控制】API汇总整理

进程控制是操作系统中一个非常重要的概念,它涉及到创建、管理和终止进程的能力。进程控制包括一系列操作,如创建新进程、等待进程结束、发送信号给进程等。下面是进程控制中一些常见的操作及其相关API: 进程控制概述 进程控制是指操作系统提…

HTML练习题:彼岸的花(web)

展示效果: 代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>彼岸の花</title><style…

【安全性分析】正式安全分析与非正式安全分析

安全性分析-系列文章目录 第一章 【安全性分析】正式安全分析与非正式安全分析 第二章 【安全性分析】BAN逻辑 (BAN Logic) 文章目录 安全性分析-系列文章目录前言一、正式安全分析1. 理想化模型(如随机预言机模型)2. 标准模型(Standard Model)3. 形式化验证4. 数学证明二…

HTML小阶段二维表和思维导图

下面是对标签、元素、属性的对比二维表&#xff0c;通过对比3w1h&#xff08;what是什么、where用在哪、why为什么要用、how如何用&#xff09;来学习区分学习标签、元素、属性 标签 元素 属性 what &#xff08;Tags&#xff09;标签是用来标记内容块或标明元素内容意义 …

NIO 核心知识总结

在传统的 Java I/O 模型&#xff08;BIO&#xff09;中&#xff0c;I/O 操作是以阻塞的方式进行的。也就是说&#xff0c;当一个线程执行一个 I/O 操作时&#xff0c;它会被阻塞直到操作完成。这种阻塞模型在处理多个并发连接时可能会导致性能瓶颈&#xff0c;因为需要为每个连…

助力风力发电风机设备智能化巡检,基于YOLOv7全系列【tiny/l/x】参数模型开发构建无人机巡检场景下风机叶片缺陷问题智能化检测预警模型

在全球能源转型的大潮中&#xff0c;清洁环境能源的发展已成为各国关注的焦点。风力发电作为其中的佼佼者&#xff0c;以其可再生、无污染的特点&#xff0c;受到了广泛的青睐。然而&#xff0c;风力发电设施大多建于人迹罕至的地区&#xff0c;设备庞大且复杂&#xff0c;其维…

Apache POI(java操作Miscrosoft Office)

Apache POI 1.1 介绍 Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是&#xff0c;我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。 一般情况下&#xff0c;POI 都是用于操作 Excel 文件。 Apache POI 的应用场景&a…

C++ | Leetcode C++题解之第537题复数乘法

题目&#xff1a; 题解&#xff1a; class Solution { public:string complexNumberMultiply(string num1, string num2) {regex re("\\|i"); vector<string> complex1(sregex_token_iterator(num1.begin(), num1.end(), re, -1), std::sregex_token_iterator…

Java ==> String类(字符串)

文章目录 一、认识String类1、创建String对象2、不可变的String3、字符串常量池 二、字符串常用操作1、字符串比较1.1 用“”比较1.2 用equals()方法比较1.3用compareTo()方法进行比较 2、获取字符串长度3、字符串查找4、字符串转换4.1valueOf()数值转换为字符串4.2字母大小写转…

Qt中的Model与View 4:QStandardItemModel与QTableView

目录 QStandardItemModel API QTableView 导航 视觉外观 坐标系统 API 样例&#xff1a;解析一个表格txt文件 QStandardItemModel QStandardItemModel 可用作标准 Qt 数据类型的存储库。它是模型/视图类之一&#xff0c;是 Qt 模型/视图框架的一部分。它提供了一种基于…

【SpringMVC】传递json,获取url参数,上传文件

【传递json数据】 【json概念】 一种轻量级数据交互格式&#xff0c;有自己的格式和语法&#xff0c;使用文本表示一个对象或数组的信息&#xff0c;其本质上是字符串&#xff0c;负责在不同的语言中数据传递与交换 json数据以字符串的形式体现 【json字符串与Java对象互转…

Java JUC(四) 自定义线程池实现与原理分析

目录 一. 阻塞队列 BlockingQue 二. 拒绝策略 RejectPolicy 三. 线程池 ThreadPool 四. 模拟运行 在 Java基础&#xff08;二&#xff09; 多线程编程 中&#xff0c;我们简单介绍了线程池 ThreadPoolExecutor 的核心概念与基本使用。在本文中&#xff0c;我们将基于前面学…

go-logger v0.27.0 - 并发性能为官方库 10 倍

go-logger是一个高性能的 golang 日志库&#xff0c;旨在提供快速、轻量级的日志记录功能 Github 使用文档 v0.27.0 更新内容 优化内存分配优化写数据性能增加日志属性自定义函数增加各个日志级别格式化打印函数 说明 性能优化是该版本最重要的更新内容。性能优化的结果&…

【华为HCIP实战课程31(完整版)】中间到中间系统协议IS-IS路由汇总详解,网络工程师

一、IS-IS的汇总 1、可以有效减少在LSP中发布的路由条目,减小对系统资源的占用。 2、会减少LSP报文的扩散,接收到该LSP报文的其他设备路由表中只会出现一条聚合路由。 3、可以避免网络中的路由震荡,提高了网络的稳定性。 4、被聚合的路由可以是IS-IS路由,也可以是被引入…

邮件发送excel带预览excel功能

excel 打开后的内容: 思路&#xff1a; 1、邮件发送excel 是作为附件发送出去的&#xff1b; 2、excel 预览是&#xff0c;必须另外点击预览按钮&#xff0c;并不能直接预览邮件内容然后在邮件主体内容展示出来 根据以上两点基本没法实现 邮件发送后邮件自带 预览功能。 伪方法…

HCIA(DHCP服务)

第三节 开启DHCP服务 创建地址池 调用全局服务 [R1]dhcp enable 开启DHCP服务 [R1]ip pool AA 创建地址池 [R1-ip-pool-AA]network 192.168.1.0 mask 24 写入网段 [R1-ip-pool-AA]gateway-list 192.168.1.1 写入网关 [R1-ip-pool-AA]dns-list 8.8.8.8 114.1…

java项目之文理医院预约挂号系统源码(springboot)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的文理医院预约挂号系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息。 项目简介&#xff1a; 本系统的使用角色可…