移植AD9361官方驱动到自己板子上 / PetaLinux ad936 linux驱动移植 - IIO驱动 -- Linux篇


前言

不知不觉,已经写了2篇关于AD9361驱动移植的博文了,今天给大家带来第三篇,主要描述关于利用PetaLinux工具进行AD9361 Linux驱动移植,在完成驱动移植到自己的板子上之后,便可以利用ADI IIO接口使用IIO Scope、MATLAB、Gnuradio等工具对板卡进行访问,我后面会编写几篇关于IIO Scope、MATLAB、Gnuradio等工具访问移植Linux 驱动后板卡的文章;
由于本文会使用到前文“移植AD9361官方驱动到自己板子上 - HDL移植 - NO OS移植”中HDL工程,所以本文就不再赘述vivado工程部分。


一、使用工具及材料

工具:PetaLinux 2019.1
材料:
1、linux-2019_R2.zip,版本很重要,需要在分支里找到与工具适配的版本;地址:
https://github.com/analogdevicesinc/linux
2、meta-adi-2019_R2.zip,同样也需要版本对应;地址:
https://github.com/analogdevicesinc/meta-adi
注意:github网站访问不是很稳定,打不开时需要讲科学方法;另外本文使用PetaLinux工具构建Linux驱动时也需要联网,且需要访问github。

二、实现步骤

1、解压缩linux-2019_R2.zip、meta-adi-2019_R2.zip文件,在Windows或者Linux进行解压缩操作都可以;
2、新建文件夹ad9361_build,用以存放上述解压之后的文件夹,另外在ad9361_build文件夹下新建HDL文件夹,并将“移植AD9361官方驱动到自己板子上 - HDL移植 - NO OS移植”中裁剪得到的*.hdl文件存放其中;
在这里插入图片描述
3、进入ad9361_build目录,新建PetaLinux工程,并进入工程根目录
petalinux-create -t project --template zynq -n ad9361_linux
cd ad9361_linux/
3、利用hdl文件配置工程
petalinux-config --get-hw-description …/HDL
4、配置Yocto Settings->User layers,加入 meta-adi-xilinx 和meta-adi-core layers
在这里插入图片描述
5、配置linux-kernel -> ext-local-src并指向linux-2019_R2
在这里插入图片描述
6、外设配置,根据自己的板卡情况进行配置,比如启动方式、串口、网口指定等等
在这里插入图片描述
7、保存并退出配置界面,等待参数配置完成
在这里插入图片描述
8、原则上在步骤6中配置了板卡外设后,工具会根据配置自动生成设备树文件,但由于配置为外部内核源码,所以不会自动生成可用的设备树文件,需要到外部内核源码文件中修改设备树,该文件存放在 …/ad9361_build/linux-2019_R2/arch/arm/boot/dts文件夹中
9、由前面两篇文章可知,构建平台为fmcomms2+zed,于是就知道该硬件平台设备树文件为zynq-zed-adv7511-ad9361-fmcomms2-3.dts,根据自己板卡情况修改,设备树语法不是本文重点,需要修改的可以自行学习;此外如果使用了官方硬件平台或者外设连接情况与官方一致,则可以直接跳过此步骤
10、在修改完设备树文件之后,执行以下命令告诉工具使用的设备树文件
echo ‘KERNEL_DTB=“zynq-zed-adv7511-ad9361-fmcomms2-3”’ >> project-spec/meta-user/conf/petalinuxbsp.conf
11、分别执行以下命令配置u-boot、kernel、rootfs,可以根据需要修改,本文使用默认配置
petalinux-config -c u-boot
petalinux-config -c kernel
petalinux-config -c rootfs
12、执行petalinux-build命令构建Linux启动镜像文件
13、 在步骤11、12过程中可能会出现网络问题,如以下情况,这是因为工具需要在github网站上下载文件,而网站无法访问导致的,此时需要科学上网;如果没有条件的,根据github网站间接性限制访问的特性,可以将构建命令分时、多次尝试执行
在这里插入图片描述
14、在执行完成所有命令之后,使用以下指令生成BOOT.BIN文件
cd images/linux
petalinux-package --boot --fsbl --fpga --u-boot --force
15、将BOOT.BIN、image.ub放入板卡中,上电启动硬件,验证结果,可见ADI源码中已经嵌入了ad9361驱动相关程序,在Linux系统上电加载期间,将ad9361当做一个普通外设,将其加载进去
在这里插入图片描述
16、同时,Linux上电过程中,IIO相关程序也加载了,后续就可以通过它直接操作AD9361 内部配置以及信号收发;到此AD9361 Linux驱动移植完毕。
在这里插入图片描述
注意:文件存放位置可以根据个人需要进行变更,本文中涉及到的文件存放路径纯属博主个人习惯。


总结

ad9361 Linux驱动移植官方给出了两种方式,除了本文中用到的利用PetaLinux构建外,还可以采用传统使用源码直接构建的方式,两种方式各有利弊,博主建议使用自己习惯的方式;从官方的实现思路来看,目的是将ad9361通过HDL+Linux驱动的方式,采用IIO将其抽象为一个标准的输出/输出接口,以方便MATLAB、GUNRADIO等工具的接入,对于算法开发者来说,不需要关心底层AD9361的寄存器配置、数据接口驱动等,只需要在MATLAB、GUNRADIO等工具中进行少量的参数定制,便可以将原本处于仿真阶段的通信算法,进行无线空口实验;此外,ADI官方驱动的HDL端采用BD方式搭建,IQ数据采用AXIS方式传输,用户可以加入自己的算法模块,扩展性极强。
到此,经过3篇的ad9361驱动移植过程编写,该芯片驱动部分告一段落,往后会抽空写一些关于使用方面的文章。2024/08/17

  • 14
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!关于您提到的找不到目标 `linux/petalinux/project-spec/meta-user/recipes-kernel` 的问题,可能是由于以下几种情况导致的: 1. 检查路径是否正确:请确保您正在查找的目标路径是正确的。确认您的工程目录结构中是否存在 `project-spec/meta-user/recipes-kernel` 目录。 2. 检查PetaLinux版本:不同版本的PetaLinux可能会有细微的差异。请确保您使用的是与您的PetaLinux版本相匹配的文档或教程。 3. 检查工程配置:确认您的PetaLinux项目是否正确配置了 `meta-user` 层。您可以在 `project-spec/meta-user` 目录下创建一个新的 `conf/layer.conf` 文件,并在其中添加以下内容: ``` BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ ${LAYERDIR}/recipes-*/*/*.bbappend" BBFILE_COLLECTIONS += "meta-user" BBFILE_PATTERN_meta-user = "^${LAYERDIR}/" BBFILE_PRIORITY_meta-user = "6" ``` 请注意,如果 `meta-user` 目录已经存在 `conf/layer.conf` 文件,则只需将以上内容添加到文件的末尾即可。 4. 检查PetaLinux工程:确保您的PetaLinux工程已经正确初始化,并且包含了所需的组件和层。您可以使用以下命令初始化PetaLinux工程: ``` petalinux-create -t project -s <path_to_bsp_file> -n <project_name> ``` 请将 `<path_to_bsp_file>` 替换为您的BSP文件的路径,将 `<project_name>` 替换为您想要创建的工程名称。 如果以上解决方案无法解决您的问题,请提供更多详细信息,例如您使用的PetaLinux版本、工程目录结构等,以便我们能够更好地帮助您解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值