ZHDA251 July   2026 AFE7900 , AFE7901 , AFE7903 , AFE7906 , AFE7950 , AFE7950-SP , AFE7951 , AFE7953 , AFE7954 , AFE7955 , AFE7958

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
  5. 2Linux 内核驱动程序
    1. 2.1 使用 PetaLinux Tools 的 Linux 内核驱动程序
    2. 2.2 使用 Yocto Project 的 Linux 内核驱动程序
      1. 2.2.1 Yocto Project 概述
      2. 2.2.2 主机系统要求
      3. 2.2.3 设置 Yocto 构建环境
      4. 2.2.4 配置板卡专用层
      5. 2.2.5 集成 AFE79xx Yocto 层
      6. 2.2.6 验证集成
      7. 2.2.7 故障排查
    3. 2.3 准备 Linux 引导映像
    4. 2.4 从用户空间运行 AFE79xx 器件
  6. 3在应用层构建 AFE79xx SDK
    1. 3.1 使用 PetaLinux Tools 构建不含 AFE79xx SDK 的 Linux 内核
    2. 3.2 在用户空间中集成 SPI 与 AFE79xx
  7. 4面向 ZCU102 FPGA 的参考设计(含处理器和 SPI)
    1. 4.1 配置 Zynq 处理器
    2. 4.2 配置 SPI 接口
    3. 4.3 生成硬件描述
    4. 4.4 使用 SD 卡引导 ZCU102 板
  8. 5总结
  9. 6参考资料

Linux 内核驱动程序

AFE79xx 内核驱动程序有助于隔离设备 SDK 的两个组件:用于用户空间应用程序的高级 API 函数,以及内核空间内的设备特定处理。这简化了用户应用程序中的 SDK 集成。

  • 所有 SPI 通信均整合在内核中。
  • 使用标准 Linux SPI 子系统作为 SPI 从器件集成到内核中,可使驱动程序成为从器件的唯一所有者,确保执行原子操作并防止与其他 SPI 访问发生冲突。
  • 用户访问功能以字符驱动程序形式提供,便于与用户应用程序集成,其工作方式符合标准 POSIX 文件操作(打开、释放、读取、写入和 ioctl)
  • 它在 /dev 下以 /dev/device_nameX.Y 格式显示已连接的器件,其中 X 表示 SPI 主端口,Y 表示从器件 ID,以便于检测和识别。示例:/dev/afe79xx1.0
  • 支持通过器件树使用格式为 ti,device_name 的 compatible 字符串进行自动调用和从器件分配。示例:“ti,afe79xx”。该方法支持动态器件配置,无需重新编译驱动程序。
  • 多个器件在 /dev 下以唯一 ID 向用户呈现为独立器件。各个器件上下文完全在内核代码中采用各种标准 Linux 方法进行管理,以简化客户应用程序。
  • 使用各种 Linux 机制验证线程安全操作

以下是该驱动程序实现方案的一些显著特性

以下是为使用 Linux 内核进行器件集成所提供的典型器件 SDK 目录结构

Device_SDK/

├─ kernel-driver

└──── device_name/*

└─ userspace

├────device_name/*

├──── example/*

└──── Makefile

其中,kernel-driver 下的 device 文件夹用于构建内核模块,userspace 下的 device 文件夹包含高级 API 定义并用作用户应用程序的一部分,example 文件夹包含用户应用程序示例,Makefile 展示了将 API 与用户应用程序集成的典型编译方法。