分享
基于QEMU的AARCH64平台仿真技术的研究_张磊.pdf
下载文档

ID:2515813

大小:241.78KB

页数:3页

格式:PDF

时间:2023-06-27

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于 QEMU AARCH64 平台 仿真技术 研究
2023.4电脑编程技巧与维护1概述嵌入式软件开发过程中通常会面对硬件资源未准备就绪或硬件成本过高的情况,使用仿真器可以方便嵌入式软件开发人员在不具备硬件条件时进行软件开发。商业领域常见的仿真器包括QEMU1、Simics2、Bochs3、VMware、VirtualBox。VirtualBox和VMware是桌面级虚拟机,性能强大,但受限于X86和AMD体系结构;嵌入式领域仿真软件主要包括QEMU、Bochs和Simics等,Bochs主要面向X86和AMD平台;Simics是一款闭源的仿真平台,仿真体系结构支持全面,但维护费用高。2QEMU 应用框架QEMU是一款被广泛使用的开源仿真软件,支持仿真嵌入式系统中的CPU、I/O、内存及其他硬件设备资源。被测软件可以完全摆脱对硬件资源的依赖,为软件的调试运行、故障定位提供便利条件。QEMU虚拟化实现的思路是采用二进制指令翻译技术,提 取 客 户 端 代 码,将 其 翻 译 成 可 信 计 算 组 织(TCG)3中间代码,再将中间代码翻译成主机端指定架构的代码执行。QEMU的应用框架如图1所示。QEMU支持跨平台体系结构仿真,支持X86、ARM、MIPS、RISC-V、SPARK等主流的目标体系结构平台,同时QEMU宿主端也支持X86、ARM等主流体系结构,支持虚拟机用户使用Windows、Linux等宿主操作系统开发和使用QEMU仿真器开展软件调试和开发工作。3QEMU 对 ARM 平台的支持研究基于QEMU对AARCH64架构的支持。AAR-CH64由ARMv8架构64位系统改进而来,QEMU新版本支持用户基于AARCH64开发,AArch64支持64位寄存器和地址,支持更大地址寻址空间,并扩充了ARM指令集,精简了对内存的操作指令。飞腾的64位平台在数据传输效率上比32位更高,地址总线的寻址空间突破了4G限制,并且处理器拥有更快的数据传递和浮点运算速度。因此,目前飞腾64位平台大量应用于对大内存、密集数据运算有需求的场景。QEMU除了对处理器的仿真支持,还支持多种I/O外设的仿真,包括串口控制器、时钟定时器、中断控制器、网络适配器、外设组件互连标准(PCI)总线、通用串行总线(USB)设备、键盘、鼠标,显卡和声卡等多种商业领域常用的设备。嵌 入 式 领 域 内 有 很 多 主 流 目 标 平 台 都 是 基 于AARCH64搭建的。例如,国产飞腾处理器的CPU被大量应用于嵌入式软件领域。基于QEMU 6.2.0版本测试和论证,研究如何基于QEMU提供的对ARM的Cortex-A72内核的支持,实现对国产飞腾2000处理器AARCH64架构的仿真,以支持软件的开发工作。4AARCH64 平台仿真设计与实现研究宿主机使用X86平台Windows 7的64位操作系统,目标端基于飞腾2000的AARCH64架构运行某操作系统软件。基于 QEMU 的 AARCH64 平台仿真技术的研究张磊,陈程,林卓,刘治言(中国航空工业集团公司西安航空计算技术研究所,西安710065)摘要:在嵌入式软件开发过程中,通常可以使用仿真技术模拟目标硬件平台,进行软件运行环境的仿真。通过仿真器对目标硬件的 CPU、内存和输入/输出(I/O)设备等进行仿真,支持用户可以在不具备硬件条件的情况下,尽快地开展嵌入式软件的开发工作。研究了基于开源的虚拟操作系统模拟器(QEMU)仿真器平台,选取了目前嵌入式领域常用的国产飞腾 2000 嵌入式处理器作为仿真目标,以验证仿真 AARCH64 平台 QEMU 虚拟机的可行性,方便用户开展嵌入式软件的开发。关键词:嵌入式;仿真;QEMU 平台;AARCH64 平台图1QEMU的应用框架硬件平台(X86、ARM、MIPS等)应用应用应用客户端OS客户端OS客户端OSQEMU(ARM架构)QEMU(MIPS架构)QEMU(X86架构)宿主机OS120DOI:10.16184/prg.2023.04.0082023.4电脑编程技巧与维护QEMU使用Mysys64搭建QEMU的编译执行环境。构建命令为-target-list=aarch64-softmmu。编译环境使用mingw-w64-x86_64-toolchain作为构建仿真器的工具链,并安装Python、Ninja等AARCH64仿真器需要依赖的工具软件,配置完执行命令生成可执行二进制文件。QEMU支持通过命令行启动,支持控制台命令,查看、修改仿真器配置。通过查看内存映射表和设备树,分析默认支持的机器类型和CPU情况。对Cortex-A72内核的支持满足对AARCH64的仿真,此外,还需增加对机器类型的扩展,增加FT2000平台的配置,具体实现如下。static const TypeInfo ft2000_4_info=.name=TYPE_FT2000_4_MACHINE,.parent=TYPE_PHYTIUM_MACHINE,.class_init=ft2000_4_class_init,.instance_init=ft2000_4_Instance_init,;分别增加飞腾2000的处理器类型、PHYTIUM的机器类型,同时增加飞腾的类初始化和实例初始化。增加对飞腾平台的处理器描述,扩展飞腾2000处理器和Cortex-A72内核,具体实现如下。MachineClass machine;Machine.desc=FT2000/4 PLATFORM;Machine.default_cpu_type=ARM_CPU_TYPE_NAME(cortex-a72);通过飞腾2000处理器的内存映射看出,当前对AARCH64的支持已经比较完全,针对嵌入式操作系统和软件开发,常用的串口、网络、时钟、中断控制器都已经得到了支持,对比国产飞腾2000的CPU,发现除了内存地址的I/O空间映射不同,各设备的寄存器映射结构基本一致。对比设备树发现,飞腾使用的网络设备是GMAC,QEMU是Lan9118,因此,需移植GMAC设备模型,以支持对飞腾2000平台的处理器仿真。QEMU提供了一套面向对象编程的模型QOM4,例如,CPU、内存、总线等都是利用这一面向对象的模型来实现的。QOM最下层的基类是ObjectClass,对应的实体是Object;设备的类设备Class,对应的实体是设备State。QOM模型类结构如图2所示。其中,ObjectClass是所有类的基类,Object是所有对象的基类对象。对于每个新类型,都会定义由Ob-jectClass转换到设备类的方法,也会定义由对象动态转换到设备的方法。飞腾2000处 理 器 支 持 两 路100/1000Mbit/s网 络适配器,使用的是GMAC设备。GMAC可以分为4个部分:发送、接收、GMAC控制和媒体独立接口管理(GMII)。飞腾GMAC的仿真主要包括中断仿真和I/O仿真。首先,需要创建设备,根据飞腾I/O设备映射表,实现内存映射结构对象;其次,初始化内存空间,主要是初始化MemoryRegion的函数;再次,在设备的配置写函数中,将地址空间映射到物理地址空间;最后,根据飞腾2000手册,可直接将网卡挂载于系统总线。系统总线是用来连接计算机硬件系统中若干主要部件(例如,CPU、主存、I/O模块)的总线。设备的模拟需要完成两件事情,即定义设备寄存器保存设备数据和根据硬件及寄存器的数据编写逻辑。GMAC设备注册的流程,首先是在模拟时调用设备初始化接口qdev_create,创建ioapic设备。设备初始化接口只初始化设备的状态,增加设备属性设置,对设备的初始化还需调用设备的实现realize函数。设备初始化接口调用了创建对象object_new,创建对象会根据之前类型中注册的设备名,找到对应的设备实现类型结构,调用网卡类型创建接口。GMAC设备创建、总线挂载、内存映射和中断设置实现如下。dev=qdev_new(sysbus-synopgmac);sysbus_mmio_map(sys_bus_dev(dev),0,base);sysbus_connect_irq(sys_bus_dev(dev),0,irq);通过QEMU的控制台管理终端查看I/O设备内存映射表,通过网络适配器和串口控制器查看I/O空间映射结果。其中,串口设备为PL011,I/O空间基地址为0 x1c090000,设备I/O空间大小为0 x1000,网络适配器设备默认为Lan9118,此处根据飞腾2000处理器手册增加了对GMAC的仿真后,看到GMAC网络适配器的I/O空间映射地址为0 x2820c000,设备I/O空间大小为0 x2000。通过命令查看飞腾设备树,GMAC的设备树信息如表1所示,网络设备挂载在系统总线(Sysbus)上,设置了中断、总线宽度、MAC地址、默认物理地址号、版本等硬件信息。可以看出GMAC已经被成功注册到飞腾2000处理器的QEMU模型中,证明设备添加成功。图2QOM模型类结构ClassObjectClassDeviceClassPCIDeviceClassvirtlOPCIClassObjectObjectDeviceStatePCIDeviceVirtioPCIProxyVirtlONetPCI1212023.4电脑编程技巧与维护是理想的。3.3.6模型的应用可以调用模型,将需要预测的数据进行批量预测,并将预测结果写入Ms SQL Server数据库,供决策支持应用系统在以后使用时调用数据,并提供决策支持。4结语以二手车销售企业为研究对象,设计具有智能价格评估功能的二手车销售决策支持系统。该系统将随机森林回归算法应用于价格评估模型,通过开发工具对模型的参数进行优化,寻找模型的最优参数组合,得到二手车价格评估模型的最优结果。该系统所建立的模型可以为二手车企业提供一种科学评估二手车价格的方法:根据不同的品牌、年份、发动机型号、变速箱类型和其他参数进行价格评估。根据二手车的交易记录与模型预测的结果,该系统也为二手车企业在销售管理过程中的决策提供支持。参考文献1彭江磊.二手车评估的现行市价法研究D.南京:南京理工大学,2009.2屠卫星.现行市价法非常简单实用的二手车评估方法J.交通世界(运输 车辆),2012(12):79-80.3李欣海.随机森林模型在分类与回归分析中的应用J.应用昆虫学报,2013,50(4):1190-1197.4胡雨.基于特征价格理论下二手车评估模型的构建及应用D.长沙:湖南大学,2017.5郭俊利.基于改进重置成本法的二手车价值评估系统研究J.机械设计与制造工程,2017,46(6):108-111.6张远森.基于神经网络的二手车价格评估模型D.天津:天津大学,2018.7季洁.南京家用二手车评估方法研究:基于重置成本法的修正D.重庆:重庆理工大学,2018.8王静娜.基于随机森林算法的二手车估价模型研究D.北京:北京交通大学,2019.9陈君.数据挖掘技术在二手车交易系统中的应用J.计算机技术与发展,2020,30(5):180-184.10龙良洲.二手车价格智能评估方法及原型系统研究D.大连:大连理工大学,2021.11卢鑫海,余建坤.基于区块链的二手车交易系统研究J.软件导刊,2021,20(9):185-190.使用QEMU的启动命令机器类型设置为飞腾2000处理器,内核CPU类型设置为Cortex-A72,仿真目标网卡模型名指定为synop-gmac。同时,为支持仿真网络通信,需要安装TAP虚拟网卡。以某嵌入式操作系统的启动映像为例,使用boot命令加载启动映像msl.bin到仿真目标平台飞腾处理器的0 x83000000内存地址并且启动后,启动后的飞腾处理器2000串口打印输出如图3所示。通过串口设备信息打印可以看出,仿真的串口设备和网络适配器初始化都正常。串口PL011设备可正常打印输出,GMAC网络设备使用自协商,自协商速率及模式为100Mbit/s全双工模式,并且配置GMAC的IP地址和MAC地址均已经正常设置到GMAC寄

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开