news 2026/7/3 13:48:47

如何快速入门UADK:5步搭建硬件加速开发环境

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何快速入门UADK:5步搭建硬件加速开发环境

如何快速入门UADK:5步搭建硬件加速开发环境

【免费下载链接】uadk项目地址: https://gitcode.com/openeuler/uadk

前往项目官网免费下载:https://ar.openeuler.org/ar/

UADK(用户空间加速器开发套件)是openEuler社区推出的一个硬件加速开发框架,它为用户应用程序提供统一、安全、高效的方式来访问硬件加速器。无论您是刚接触硬件加速的新手,还是希望提升应用性能的开发者,这篇快速入门指南都将帮助您在5个简单步骤内完成UADK开发环境的搭建!🚀

📋 什么是UADK硬件加速开发框架?

UADK是一个完整的用户空间硬件加速开发套件,它基于Linux内核的UACCE(用户空间加速器框架)构建。通过UADK,开发者可以轻松利用华为鲲鹏等硬件平台的加速器资源,显著提升加密解密、数据压缩等计算密集型任务的性能。

UADK的核心组件包括:

  • libwd- 基础库,封装了对UACCE设备的基本操作
  • 算法库- 如libwd_comp(压缩/解压缩)、libwd_crypto(加密/解密)
  • 硬件驱动- 支持不同硬件加速器的驱动程序
  • 工具和测试套件- 帮助验证和优化性能

🛠️ 第1步:检查内核要求与配置

在开始之前,请确保您的Linux内核版本至少为v5.9,并且启用了SVA(共享虚拟寻址)功能。

内核配置示例(华为鲲鹏平台):

CONFIG_IOMMU_SVA_LIB=y CONFIG_ARM_SMMU=y CONFIG_ARM_SMMU_V3=y CONFIG_ARM_SMMU_V3_SVA=y CONFIG_PCI_PASID=y CONFIG_UACCE=y CONFIG_CRYPTO_DEV_HISI_SEC2=y CONFIG_CRYPTO_DEV_HISI_QM=y CONFIG_CRYPTO_DEV_HISI_ZIP=y CONFIG_CRYPTO_DEV_HISI_HPRE=y

这些配置确保内核支持UACCE框架和硬件加速器驱动。UACCE可以构建为模块或内置到内核中,具体取决于您的需求。

📦 第2步:获取UADK源代码

使用以下命令克隆UADK项目仓库:

git clone https://gitcode.com/openeuler/uadk cd uadk

项目的主要目录结构如下:

  • include/- 用户应用程序和硬件驱动的头文件
  • docs/- 设计文档和说明文档
  • test/- 测试应用程序
  • sample/- 示例代码
  • drv/- 硬件驱动程序
  • v1/- UADK v1版本相关代码

UADK架构设计图展示了用户空间应用如何通过libwd和算法库访问硬件加速器

🔧 第3步:编译安装UADK

在本地环境中构建UADK非常简单:

# 清理之前的构建文件 ./cleanup.sh # 生成配置脚本 ./autogen.sh # 配置构建选项 ./conf.sh # 编译项目 make # 安装到系统 sudo make install

默认情况下,UADK配置为动态链接库。安装完成后,动态库和静态库将安装在/usr/local/lib目录,头文件将安装在/usr/local/include/uadk目录。

重要提示:如果您需要交叉编译(如为ARM平台编译),请参考INSTALL文件中的详细说明,其中包含了构建NUMA、OpenSSL和zlib等依赖库的完整步骤。

🔑 第4步:配置设备权限

硬件加速器在UADK中注册后,会在/dev目录下创建字符设备节点。为了让用户应用程序能够访问硬件加速器资源,需要设置适当的权限:

# 设置硬件加速器设备节点的写权限 sudo chmod 777 /dev/hisi_hpre-* sudo chmod 777 /dev/hisi_sec-* sudo chmod 777 /dev/hisi_zip-*

这一步确保您的应用程序有权限访问硬件加速器设备,这是使用UADK进行硬件加速开发的关键环节。

UADK异步操作流程图展示了应用程序如何通过轮询机制高效利用硬件加速器

🧪 第5步:运行测试验证环境

现在可以运行测试程序来验证UADK环境是否正常工作:

ZIP硬件加速器测试:

# 同步模式测试 zip_sva_perf -b 8192000 -l 1000 -v -m 0 # 异步模式测试 zip_sva_perf -b 8192000 -l 1000 -v -m 1

SEC硬件加速器测试:

# 同步加密测试 test_hisi_sec --cipher 0 --optype 0 --pktlen 16 --keylen 16 --times 1 --sync --multi 1 # 异步加密测试 test_hisi_sec --cipher 0 --optype 0 --pktlen 16 --keylen 16 --times 1 --async --multi 1

HPRE硬件加速器测试:

# 同步模式测试 test_hisi_hpre --trd_mode=sync # 异步模式测试 test_hisi_hpre --trd_mode=async

这些测试程序位于test/目录,它们展示了如何使用UADK的不同功能模块。

🚀 开始您的第一个UADK项目

环境搭建完成后,您可以参考以下资源开始开发:

核心API文档:

  • 基础库API:wd.c
  • 加密算法库:wd_cipher.c
  • 压缩算法库:wd_comp.c
  • 非对称加密:wd_rsa.c

设计文档:

  • 详细架构设计:docs/wd_design.md
  • 维护指南:docs/maintenance.md

示例代码:查看sample/目录中的示例程序,了解如何在实际应用中使用UADK的API。

💡 实用技巧与最佳实践

  1. 选择合适的硬件加速器- 根据您的应用需求选择对应的加速器(ZIP用于压缩、SEC用于加密、HPRE用于非对称加密)

  2. 同步与异步模式选择- 对于高吞吐量应用,建议使用异步模式;对于低延迟应用,同步模式可能更合适

  3. 内存池管理- UADK提供了高效的内存管理机制,合理使用可以显著提升性能

  4. 错误处理- 所有UADK API都返回状态码,确保在应用中正确处理错误情况

🔍 常见问题排查

Q: 编译时出现依赖库错误?A: 确保已安装所有必需的依赖库,或参考INSTALL文件中的交叉编译部分。

Q: 测试程序无法访问设备?A: 检查第4步中的设备权限设置是否正确,并确认内核模块已正确加载。

Q: 性能不如预期?A: 查看wd_design.md中的性能优化建议,特别是关于异步操作和内存池配置的部分。

📈 下一步学习路径

掌握了UADK基础环境搭建后,您可以:

  1. 深入学习API使用- 研究include/目录中的头文件定义
  2. 分析测试代码- 查看test/目录中的完整测试用例
  3. 探索高级特性- 学习调度器配置和内存池优化
  4. 贡献代码- 参与openEuler社区,为UADK项目贡献力量

通过这5个步骤,您已经成功搭建了UADK硬件加速开发环境!🎉 现在可以开始利用硬件加速器来提升您的应用程序性能了。记住,UADK的强大之处在于它为用户空间应用提供了统一的硬件加速接口,让您可以专注于业务逻辑,而无需深入了解底层硬件细节。

开始您的硬件加速开发之旅吧!如果您在开发过程中遇到问题,可以参考项目文档或向openEuler社区寻求帮助。祝您开发顺利!✨

【免费下载链接】uadk项目地址: https://gitcode.com/openeuler/uadk

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/3 13:48:25

Si4731与PIC32MX675F512L构建数字收音系统全解析

1. Si4731收音机芯片与PIC32MX675F512L微控制器的硬件搭档在业余无线电和嵌入式音频开发领域,Si4731这颗AM/FM/SW/LW全波段数字收音芯片堪称性价比之王。我最近用它搭配Microchip的PIC32MX675F512L微控制器搭建了一套可编程收音系统,实测接收灵敏度达到2…

作者头像 李华
网站建设 2026/7/3 13:47:12

工地久站闷脚选哪款?2541BRN 防泼水透气牛皮绝缘安全鞋

很多工地电工、机电维修、配电室运维人员每天在岗八小时以上,长期站立作业最容易遇到两大困扰:一是普通绝缘鞋鞋面厚实不透气,一整天闷脚积汗,足部闷热不适;二是市面上不少透气劳保鞋缺少完整绝缘、防砸、防穿刺防护&a…

作者头像 李华
网站建设 2026/7/3 13:46:06

Java super 关键字

super 代表父类(超类)对象引用,仅存在子类中,用来访问父类的成员,和代表当前对象的 this 对应。 一、super 三种核心用法 1. super.成员变量:访问父类同名成员变量 子类和父类属性重名时,默认优…

作者头像 李华
网站建设 2026/7/3 13:46:01

STM32F756ZG与MC74HC165A实现高效多路输入扩展方案

1. 项目背景与核心价值 在嵌入式系统开发中,处理多路输入信号是常见需求。传统方案需要为每个输入分配独立的GPIO引脚,当输入数量较多时(如16个按钮),会快速耗尽MCU的宝贵引脚资源。MC74HC165A作为8位并行输入/串行输出…

作者头像 李华
网站建设 2026/7/3 13:43:52

kiran-log完全解析:基于zlog的Qt5与GTK3日志封装库入门指南

kiran-log完全解析:基于zlog的Qt5与GTK3日志封装库入门指南 【免费下载链接】kiran-log This is a kiran log library. 项目地址: https://gitcode.com/openeuler/kiran-log 前往项目官网免费下载:https://ar.openeuler.org/ar/ kiran-log是open…

作者头像 李华