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

    文章

    19404

    浏览量

    230924
  • 嵌入式
    +关注

    关注

    5091

    文章

    19176

    浏览量

    307128
  • Xilinx
    +关注

    关注

    71

    文章

    2171

    浏览量

    121999
  • 应用程序
    +关注

    关注

    38

    文章

    3292

    浏览量

    57867
  • Vitis
    +关注

    关注

    0

    文章

    147

    浏览量

    7490

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

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

收藏 人收藏

    评论

    相关推荐

    国产X86处理器与国际CPU有多大差距?有人做了个测试

    国产处理器何时能够达到世界领先水平?这个问题几乎是每一个关心国产半导体的人都在期待的,尤其是国产的X86处理器
    的头像 发表于 02-04 11:35 8045次阅读

    AMD x86核心SoC抢攻嵌入式应用市场

    x86处理器市场中,以AMD与Intel两家业者为首,AMD则以加速处理单元搭配自家的Radeon显示核心进行整合,连嵌入式应用产品需求也
    发表于 01-29 14:33 1992次阅读

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

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

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

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

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

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

    基于嵌入式X86的数控系统的设计与实现

    为了降低开发成本,缩短开发周期,提高系统性能和稳定性,本文采用嵌入式X86 CPU和嵌入式ARM处理器上下位机的硬件结构形式。按照Linux操作系统下设备驱动
    发表于 06-23 13:35 24次下载

    英特尔:Core Duo进军x86嵌入式平台市场

        英特尔于15日宣布Core Duo处理器(Yonah双核心处理器)将进军x86嵌入式平台市场,工业计算机(
    发表于 03-13 13:00 556次阅读

    获Zen架构授权,国产X86处理器即将问世

    国内的处理器厂商MIPS、ARM及Alpha等架构搞的还可以,但在桌面市场上,因为Wintel联盟的门槛限制,没有X86处理器是玩不转的
    发表于 06-12 14:27 1704次阅读

    嵌入式应用程序:迁移到Intel x86架构

    嵌入式应用 - 迁移到Intel的x86架构
    的头像 发表于 11-07 06:49 3828次阅读

    全球首款集成AI协处理器x86处理器实照公布 采用LGA触点封装方式

    2019年11月,通用x86处理器领域沉寂多年的威盛(VIA)高调归来,旗下已有24年历史的处理器研发部门CenTaur开发出了世界上第一个集成AI协
    的头像 发表于 02-19 15:15 2819次阅读

    什么是x86嵌入式工控主板,x86嵌入式主板该如何选择

    什么是x86嵌入式工控主板?x86嵌入式主板就是嵌入式工控机内常用到的主板,它跟嵌入式工控机一样
    发表于 12-09 12:50 3342次阅读

    x86处理器如何处理MSI-X中断请求

    x86处理器如何处理MSI-X中断请求PCIe设备发出MSI-X中断请求的方法与发出MSI中断请求的方法类似,都是向Message Addr
    发表于 12-17 18:28 9次下载
    <b class='flag-5'>x86</b><b class='flag-5'>处理器</b>如何<b class='flag-5'>处理</b>MSI-<b class='flag-5'>X</b>中断请求

    英特尔x86处理器市占率为68.7%,AMD则上升至31.3%

    虽然英特尔依然稳居x86处理器市场龙头宝座,近年来却被AMD抢走部分市占率。Mercury Research数据显示,去年Q4,英特尔x86处理器
    发表于 02-14 10:28 1294次阅读

    常见嵌入式处理器对比

    X86和ARM、MIPS相比,X86架构的嵌入式处理器应用范围要狭窄一些。它主要应用于桌面端和低端服务
    发表于 02-24 11:25 1256次阅读

    INT8量子化PyTorch x86处理器

    INT8量子化PyTorch x86处理器
    的头像 发表于 08-31 14:27 935次阅读
    INT8量子化PyTorch <b class='flag-5'>x86</b><b class='flag-5'>处理器</b>