2023.4电脑编程技巧与维护1概述嵌入式软件开发过程中通常会面对硬件资源未准备就绪或硬件成本过高的情况,使用仿真器可以方便嵌入式软件开发人员在不具备硬件条件时进行软件开发。商业领域常见的仿真器包括QEMU[1]、Simics[2]、Bochs[3]、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被大量应用于嵌入式软件领域。基于QEMU6.2.0版本测试和论证,研究如何基于QEMU提供的对ARM的Cortex-A72内核的支持,实现对国产飞腾2000处理器AARCH64架构的仿真,以支持软件的开发工作。4AARCH64平台仿真设计与实现研究宿主机使用X86平台Windows7的64位操作系统,目标端基于飞腾2000的AARCH64架构运行...