0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在X86处理器上跑嵌入式应用程序的Software Emulation

XILINX开发者社区 来源:XILINX开发者社区 2023-08-09 10:32 次阅读

本文作者:AMD 工程师Garce Sun

在 Vitis 流程中,编译的目标分为软件仿真(software emultion),硬件仿真(hardware emulation)以及硬件(hardware)。

软件仿真是通过用户创建的自定义主机代码测试系统的第一步,主要目标是确保主机程序和内核的功能正确性。其中,内核代码始终在本机编译和运行。应用程序代码根据平台的不同,编译方式为:

• 在 x86 处理器上本地编译和运行(数据中心平台)

• 交叉编译到 Arm 处理器并在仿真器中运行(嵌入式平台)

软件仿真通常用于改进算法、调试功能问题,并让开发人员快速迭代代码以进行改进。软件仿真是一个抽象模型,不使用任何 petalinux 驱动程序,如 Zynq OpenCL (ZOCL)、中断控制器或设备树二进制文件 (DTB)。 对于嵌入式平台来说,软件仿真创建 sd_card.img、在完整 QEMU 机器上启动 petalinux 的开销太重。

为了避免这部分开销,提高软件仿真运行效率,我们可以使用 x86 GCC(而不是 ARM-GCC)编译相同的嵌入式应用程序,从而实现在 x86 处理器上跑嵌入式应用程序的软件仿真。对于这种方法,用户不需要提供诸如 sysroot、rootfs 和 sd_card Image 等字段,从而能启用更快的软件仿真。

总的来说,与 QEMU 做软件仿真相比,编译过程中涉及到以下改动:

用户需要在 host 安装 XRT,不需要 Petalinux/SYSROOT。

关于 XRT 的安装指导,请参考 UG1393 的相关章节内容

用 x86 的 GCC 编译器而不是 ARM GCC 来编译 host 代码。

在 2023.1 Vitis 版本中,x86 编译需要 GCC 8.3 或更高版本。

v++ -package 以及启动仿真的流程不尽相同。

下表描述了在 QEMU 下和在 x86 上运行软件仿真时,构建 PS 应用程序和.xclbin 的差异。

575013ee-35db-11ee-9e74-dac502259ad0.png

对于包含 AIE 的设计,基于上表的选项有所调整,请参考以下表格:

578cd6bc-35db-11ee-9e74-dac502259ad0.png57ae6aca-35db-11ee-9e74-dac502259ad0.png

以上对比适用于 Vitis 2023.1,不同版本的命令行选项可能会有改动。

比如,2022.1 里的 v++ package 选项--package.ps_on_x86 在新版本替换成了—package.emu_ps x86/qemu。

5812a2ba-35db-11ee-9e74-dac502259ad0.png

对于嵌入式应用程序运行 x86 编译也有局限性,主要表现为主机代码不支持 ARM-only 的数据类型或库。

以下是使用 _fp16数据类型的主机代码示例,该数据类型仅在基于 ARM-GCC 的编译器中受支持,x86 编译器在编译相同的主机代码时会出错。

在这种情况下,建议使用 PS 的 QEMU 模型,并使用基于 ARM-GCC 的编译器来编译 PS 应用程序。

5825c6ce-35db-11ee-9e74-dac502259ad0.png

另外,目前并不支持从 Vitis GUI 启动 PS on x86 的仿真模式,需要从命令行完成。

GitHub 上有使用此功能运行软件仿真的示例供参考:

https://github.com/Xilinx/Vitis_Accel_Examples/tree/2023.1/emulation/aie_adder_hybrid_swemu

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18295

    浏览量

    222204
  • 嵌入式
    +关注

    关注

    4983

    文章

    18294

    浏览量

    288569
  • Xilinx
    +关注

    关注

    70

    文章

    2121

    浏览量

    119388
  • 应用程序
    +关注

    关注

    37

    文章

    3136

    浏览量

    56405
  • Vitis
    +关注

    关注

    0

    文章

    144

    浏览量

    7159

原文标题:在 X86 处理器上跑嵌入式应用程序的 Software Emulation

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    设计一块X86嵌入式主板

    设计一块X86嵌入式主板需要什么资料,以及仅主板研发成本(不包含元器件成本),还有就是设计软件是什么最合适。需要设计Intel Haswell平台的嵌入式主板。
    发表于 05-16 16:08

    请问嵌入式实时操作系统哪种能跑X86

    嵌入式实时操作系统,哪种能跑X86?能否推荐一下,并说明一下优缺点?
    发表于 04-08 09:39

    arm还是x86?未来工业SBC数字谁可以脱颖而出

    `在过去的30年里,工业PC市场一直由x86处理器占据主导地位,考虑到其在台式PC中的应用,这应该不足为奇。从无风扇坚固的箱式计算机到PC / 104和Mini-ITX等工业板标准,x86架构提供了
    发表于 04-23 15:06

    怎么利用Geode TMGX1处理器设计嵌入式系统?

    介绍国家半导体公司(NS)的Geode TMGX1处理器及协同芯片,说明如何利用该芯片组进行嵌入式系统设计,并讨论一些设计难点的处理
    发表于 09-05 07:30

    适用于x86架构的快速启动步骤是什么?

    x86架构通常会唤起人们对家用电脑或企业服务的思索。这并不出人意料,因为x86处理器的功耗通常较大。最近,英特尔公司开始以嵌入式、低功耗和
    发表于 03-20 06:38

    μCOS-III怎么Cortex-M3处理器移植?

    处理器体系上。本文主要完成基于Cortex-M3处理器的μC/OS-III移植,通过本次移植,加深对嵌入式操作系统原理的理解。此外,μC/OS-III移植成功的基础上进行
    发表于 03-31 08:19

    了解ARM和x86处理内核之间的差异

    ARM和x86是地球最常见的两个处理器系列。它们的优点,缺点和用途是什么?多年来,ARM(最初是Acorn RISC机器,但现在是Advanced RISC机器)一直是现代微处理器
    发表于 09-08 16:14

    请问如何实现片嵌入式Nios Ⅱ软核六处理器系统的设计?

    Nios Ⅱ嵌入式软核多处理器系统具有哪些优势?如何实现片嵌入式Nios Ⅱ软核六处理器
    发表于 04-19 08:17

    32位处理器的开发与8位处理器的开发有哪些明显的不同?

    32位处理器的开发与8位处理器的开发有哪些明显的不同?开发一个32位的嵌入式系统需要哪些工具和环境呢?32位嵌入式系统的开发过程中存在哪些技术难点?有什么方法去应对呢?
    发表于 04-19 08:11

    嵌入式处理器简介

    嵌入式处理器简介嵌入式处理器嵌入式系统的核心,是控制、辅助系统运行的硬件单元。范围极其广阔,从最初的4位
    发表于 07-26 07:18

    嵌入式处理器是什么

      嵌入式处理器嵌入式系统的核心,是控制、辅助系统运行的硬件单元。范围极其广阔,从最初的4位处理器,目前仍在大规模应用的8位单片机,到最新的受到广泛青睐的32位,64位
    发表于 10-27 07:24

    嵌入式处理器是什么

      嵌入式处理器嵌入式系统的核心,是控制、辅助系统运行的硬件单元。范围极其广阔,从最初的4位处理器,目前仍在大规模应用的8位单片机,到最新的受到广泛青睐的32位,64位
    发表于 10-28 08:56

    谈谈嵌入式处理器的体系架构

    当我们谈及嵌入式处理器的体系架构时,一般都是想到Intel的X86架构和ARM公司的ARM架构。X86架构和ARM架构最大的不同点就是使用的指令集不同,前者使用的CISC指令集,后者使
    发表于 12-15 06:59

    LabVIEW创建的PDA应用程序不是一个合法的Pocket PC应用程序

    processor选项,PDA仿真模式中, PDA应用程序将为x86处理器的PDA仿真模式下运行。因为PDA不是使用“
    发表于 04-20 20:35

    Arm Cortex-M23处理器产品介绍

    ARM Cortex-M23处理器是一款非常紧凑的两级流水线处理器,支持ARMv8-M基准架构。 配备TrustZone的Corest-M23是最受限制的物联网和嵌入式应用程序的理想
    发表于 08-25 06:19