解决Xilinx zynq vitis 2019.2 环境下添加ucos软件库时编译提示 XPLAT_VERSAL undeclared的问题

博主在尝试在Zynq双核上运行Linux+UCOS时遇到编译错误XPLAT_VERSALundeclared。问题源于UCOSSDK基于旧版Vitis,而编译器使用的是新版,导致gpiops文件宏定义不匹配。解决方案是更新UCOSSDK中的standalone库为与Vitis版本匹配的7.1版本,并重新配置BSP工程,避免编译时错误。
部署运行你感兴趣的模型镜像

这两天尝试在zynq双核运行linux+ucos,在micrium官网下载Xilinx的SDK软件包后倒入到vitis编译时总是提示 XPLAT_VERSAL undeclared这个错误,如下图

检查错误位置,发现是gpiops文件内有几处判断使用到了XPLAT_VERSAL这个宏定义,但是仔细检查发现程序里面xplatform_info.h这个文件是有XPLAT_VERSAL这个定义的,只不过是XPLAT_versal,后面是小写而已,然后手动改为大写,或者直接在报错的文件内重新自定义一个相同的声明,这样编译是通过了,看起来也没什么问题,但是有点恼火的是如果bsp有变更重新编译后自己改动的部分又会被还原,实际上就是没有解决根本问题,自定义一个XPLAT_VERSAL只是临时办法,后来经过仔细研究,发现根本原因是micrium提供的ucos SDK开发包是基于visit 2019.1版本的,而且随着ucos 一起的ucos standalone程序包是旧版本的,这个standalone包在创建bsp工程时会被复制到bsp目录,而visit 2019.2默认的standalone是比较新的7.1版本,gpiops_v3_6这个程序依赖standalone 7.1版本,因此只要使用了ucos默认的standalone库就会报错XPLAT_VERSAL未定义。知道原因后就好办了,尝试从visit按照目录下查找standalone 7.1版本的位置 路径是 x:\Xilinx\Vitis\2019.2\data\embeddedsw\lib\bsp\standalone_v7_1,复制src文件夹内的所有文件到ucos 程序包内的 x:\ucos_v1_45\ucos\components\ucos_standalone\src,然后重新刷新visit软件仓库,最好在bsp设置内重新取消勾选ucos_standalone编译一次,然后再勾选ucos_standalone再重新编译一次,就可以发现编译正常通过了

您可能感兴趣的与本文相关的镜像

GPT-oss:20b

GPT-oss:20b

图文对话
Gpt-oss

GPT OSS 是OpenAI 推出的重量级开放模型,面向强推理、智能体任务以及多样化开发场景

### `XGetPlatform_Info` 返回值中的 `xplat_zynq_ultra_mp` 和 `xplat_versal` 含义解析 `XGetPlatform_Info` 函数返回一个指向 `XPlat_Config` 类型的指针,该结构体描述了当前运行平台的硬件和软件特性。在该结构体中,`HwPlatform` 字段用于标识具体的硬件平台类型。常见的取值包括 `xplat_zynq`, `xplat_zynq_ultra_mp`, `xplat_versal` 等,分别对应不同的 Xilinx 器件系列。 - `xplat_zynq_ultra_mp` 表示当前平台是基于 **Zynq UltraScale+ MPSoC** 系列器件的硬件平台。该系列是 Xilinx 推出的高性能 SoC 产品,集成了多核 ARM Cortex-A53 处理器、GPU、视频编解码器以及可编程逻辑(PL)部分,适用于工业控制、汽车电子、嵌入式视觉等高性能应用场景。该平台支持 64 位处理能力,并具备更高的系统集成度和性能扩展性[^1]。 - `xplat_versal` 表示当前平台是基于 **Versal ACAP(Adaptive Compute Acceleration Platform)** 系列器件的硬件平台。VersalXilinx 推出的下一代异构计算平台,融合了 Scalar Engines(如 Arm Cortex-A72 和 RISC-V 兼容的 PL 端处理器)、Adaptable Engines(基于 FPGA 的可编程逻辑)以及 Intelligent Engines(AI 引擎),适用于 AI 推理、5G 通信、边缘计算等前沿领域。该平台支持多种启动模式和操作系统,包括 Linux、FreeRTOS 和裸机环境[^1]。 这些平台标识符在系统初始化过程中用于判断当前运行的硬件类型,从而启用相应的驱动程序、内存映射和中断控制器配置。例如,在 Zynq UltraScale+ MPSoC 上,中断控制器可能是 GICv2 或 GICv3,而在 Versal 平台上则通常使用 GICv3 或 GIC-600。此外,不同平台对 GPIO、DMA、钟管理等外设的支持方式也存在差异,因此需要根据 `HwPlatform` 字段进行适配。 以下是一个判断平台类型的代码示例: ```c #include "xil_util.h" XPlat_Config *CfgPtr = XGetPlatform_Info(); if (CfgPtr != NULL) { switch (CfgPtr->HwPlatform) { case xplat_zynq_ultra_mp: // 处理 Zynq UltraScale+ MPSoC 特定逻辑 break; case xplat_versal: // 处理 Versal 平台特定逻辑 break; default: // 默认处理逻辑 break; } } ``` 通过这种方式,开发者可以实现一套通用的软件框架,同支持多种 Xilinx 硬件平台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值