AD3552/AD3551驱动开发

开发环境:Vivado2021.2 ; Windows with Cygwin

HDL版本:hdl_2021_r2 GitHub - analogdevicesinc/hdl at hdl_2021_r2

no-OS版本:no_OS-2021_R2 GitHub - analogdevicesinc/no-OS at 2021_R2

1.创建hdl

详细步骤参见参考链接1;下文记录了开发过程中遇到的问题和解决方法。

AD3552的工程名字是ad3552r_evb,位于hdl->projects目录下。但是该工程在hdl_2022_r2之前(包含HDL_2022_r2)的projects目录下是不存在的(本人猜测,有可能在其他目录下),在主干main中的hdl->projects目录中存在ad3552r_evb(查看日志,ad3552r_evb是2023年10月2日提交的)。

由于本人的开发环境是Vivado2021.2,因此不排除存在一定的兼容性问题。基于Vivado2021.2的开发步骤如下:

  1. 将hdl的main主干下载到本地电脑。
  2. 查看hdl-main>projects->ad3552r_evb中的makefile(zed文件夹下的makefile),看到建立工程的依赖项在hdl-hdl_2021_r2中均存在。考虑尝试将hdl-main>projects->ad3552r_evb拷贝至hdl-hdl_2021_r2->projects目录下,然后运行make,遇到问题再处理。
  3. 将hdl-main>projects->ad3552r_evb拷贝至hdl-hdl_2021_r2->projects目录下,然后运行make,处理工程建立中遇到的问题。
  4. 重新make,遇到问题再处理,直至make成功。

步骤3中遇到的问题:

综合过程中,提示up_dac_common的端口错误。比对hdl-hdl_2021_r2和hdl-main的代码,发现hdl-main中的up_dac_common.v新增了"DAC custom read/write interface"。将该文件中的改动同步至hdl-hdl_2021_r2中,重新make,综合、布局布线OK。

2. 创建no-OS

详细步骤参见参考链接2;下文记录了开发过程中遇到的问题和解决方法。

no_OS-2021_R2中包含了ad3552工程文件(no-OS->projects->ad3552r_fmcz)和驱动文件(no-OS->drivers->dac->ad3552r)。这里,与hdl中的情况不一样,也是奇怪的地方(所以推测hdl中的ad3552r_evb应该之前就存在,至少与no-OS中的ad3552r_fmcz同时存在,只是位置不在hdl中)。

基于Vitis2021.2的开发步骤:

  1. 在Vivado2021.2中导出system_top.xsa文件至no-OS->projects->ad3552r_fmcz目录下

  2. 打开CMD(重要注意:不要使用windows PowerShell;以管理员身份运行CMD),如下图所示。

  1. 在CMD中运行 Vitis安装目录下的setting64.bat(具体位置举例: I:\Xilinx\Vitis\2021.2\settings64.bat);之后,在同一个CMD中,切换至no-OS->projects->ad3552r_fmcz目录下,运行make。

  2. 处理make中遇到的问题。我所遇到的问题有两个。

一个是ad3552r_fmcz->srcs文件夹下的parameters.h中XPAR_SPI_0_DEVICE_ID无法识别;解决方法是,查看github修改日志,将XPAR_SPI_0_DEVICE_ID替换为XPAR_PS7_SPI_0_DEVICE_ID。

另一个问题是ad3552r_fmcz->srcs文件夹下的main.c中xil_spi_pl_ops在链接时无法识别。

查看github修改日志,对代码做如下修改。

cpp 复制代码
		.spi_param = {
			.device_id = SPI_DEVICE_ID,
			.chip_select = 0,
			.mode = NO_OS_SPI_MODE_0,
			.bit_order = NO_OS_SPI_BIT_ORDER_MSB_FIRST,
			.platform_ops = &xil_spi_pl_ops,
			.extra = NULL
		},

        //上述代码,修改为
		.spi_param = {
			.device_id = SPI_DEVICE_ID,
			.chip_select = 0,
			.mode = NO_OS_SPI_MODE_0,
			.bit_order = NO_OS_SPI_BIT_ORDER_MSB_FIRST,
		#ifdef XPAR_XSPI_NUM_INSTANCES	
			.platform_ops = &xil_spi_pl_ops,
		#else
			.platform_ops = &xil_spi_ops,
		#endif	
			
			.extra = NULL
		},
  1. make的过程中解决问题,最终make成功
  1. 在同一个CMD中输入命令make sdkopen,打开Vitis。跳过Vitis的欢迎界面(需要手动点击),可以看到AD3552的Vitis工程。

后续

整体工程的运行还未开展,待验证。

参考链接

  1. Building HDL [Analog Devices Wiki]

2.No-OS Build Guide [Analog Devices Wiki]

  1. AXI_AD3552R [Analog Devices Wiki]

  2. ADRV9002官方例程开发过程中遇到的问题_adrv9002内部arm无法启动-CSDN博客

相关推荐
S,D2 小时前
MBIST - Memory BIST会对memory进行清零吗?
驱动开发·mcu·memory·功能安全·iso26262·mbist·bist
S,D2 天前
MCU进入低功耗模式前的引脚处理原则和方法 --> 以最小化低功耗电流
驱动开发·stm32·单片机·嵌入式硬件·mcu·standby·低功耗引脚处理
Code季风4 天前
测试驱动开发(TDD)实战:在 Spring 框架实现中践行 “红 - 绿 - 重构“ 循环
java·驱动开发·后端·spring·设计模式·springboot·tdd
闻道且行之4 天前
驱动开发(3)|rk356x驱动GPIO基础应用之点亮led灯
驱动开发
努力做小白4 天前
Linux驱动11 --- buildroot&杂项驱动开发方法
linux·运维·驱动开发·单片机·嵌入式硬件
哈哈浩丶4 天前
Linux驱动开发1:设备驱动模块加载与卸载
linux·运维·驱动开发
哈哈浩丶5 天前
Linux驱动开发2:字符设备驱动
linux·运维·驱动开发
Narnat8 天前
Rk3568驱动开发_阻塞IO_15
驱动开发
sukalot8 天前
window显示驱动开发—BGRA 扫描输出支持
驱动开发
专一的咸鱼哥8 天前
Linux驱动开发(platform 设备驱动)
linux·运维·驱动开发