0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在Vitis中创建基于ARM的BareMetal程序设计

XILINX开发者社区 来源:XILINX开发者社区 作者:Shengjie Li 2022-06-08 16:12 次阅读

本文作者:赛灵思工程师 Shengjie Li

在Vitis中创建基于ARM的BareMetal程序设计:

详细流程:

Ø 打开Vitis,选择一个Vitis工作目录。

Ø Create Application,选择一个新的XSA文件,导入从Vivado获得的XSA文件。

0696d56e-dce5-11ec-ba43-dac502259ad0.png

Ø为工程取一个名,以Empty Application(C)为模板新建工程。

06e4d98a-dce5-11ec-ba43-dac502259ad0.png

Ø勾选BSP中的库,双击platform.spr,选中standalone_psu_cortexa53_0下的Board Support Package,选择Modify BSP Settings,勾选libmetal库,保存。

0748014a-dce5-11ec-ba43-dac502259ad0.png

Ø 导入源码,从附件中找到main.c,可以直接拷贝到工程src目录下,或者右键src目录选择Import sources。

07994370-dce5-11ec-ba43-dac502259ad0.png

Ø 添加工程Symbol。右键工程选择C/C++ build settings,在Symbols中添加__BAREMETAL__。

07e1d6b2-dce5-11ec-ba43-dac502259ad0.png

0814f394-dce5-11ec-ba43-dac502259ad0.png

Ø 编译工程,如果有宏定义相关报错,应该是底层IP命名问题,可以在xparameters.h中找到实际的宏定义。

084a27c6-dce5-11ec-ba43-dac502259ad0.png

如何添加metal log:

Libmetal库提供了metal_log API以便于用户调试,用户可以参考AR#71068使能打印功能:

https://support.xilinx.com/s/article/71068

Metal_log提供了8个等级的打印信息,用户可以根据项目所处的不同阶段决定开启哪一个等级的调试信息。

0898f5a4-dce5-11ec-ba43-dac502259ad0.png

代码简要分析:

整体流程大致如下:

1. Libmetal初始化。

2. RFDC IP初始化。

3. IIC/GPIO/SPI Mux初始化。

4. CLK104时钟IC复位。

5. CLK104时钟配置。

6. 设置RFDC Clock Distribution。

7. 查看RFDC IP状态。

这里主要强调一下三个部分,一是时钟配置,二是Clock Distribution,三是状态检查。

如前面章节所说,FPGA通过IIC接口与IIC to SPI桥接芯片进行交互,桥接芯片通过SPI接口控制时钟IC。配置数据在本案例中是记录在数组中的,数据来源于TI的TICS Pro软件。用户需要根据实际的需求,在软件中选择时钟IC的输入输出频率和管脚复用,由软件导出一组针对此时钟IC的寄存器数值。

08d05e54-dce5-11ec-ba43-dac502259ad0.png

Clock Dsitribution部分,IP驱动提供了相关的结构体和API,具体组成部分可以参考PG269文档相关部分。以下是DAC Tile的时钟分发网络配置代码:

09092586-dce5-11ec-ba43-dac502259ad0.png

在我们目前的设计中,使用LMX2594产生的高频参考时钟输入到DAC Tile1,因此结构体中指定source tile为XRFDC_TILE_ID1;此时钟分发组内最北的是DAC Tile3,最南的是DAC Tile0;分发类型是参考钟分发,因此选择XRFDC_DIST_OUT_RX;参考钟频率为6400,采样率为6400;将此结构体传入到XRFdc_SetClkDistribution函数中,函数内部会检查当前配置是否有效,并在配置结束以后启动tile。

检查IP状态是最后一步,IP启动过程共有15个阶段,只有当Tile状态达到0xf的时候说明此Tile正常启动,接下来可以正常工作,如果发现Tile状态停在某一步,可以对照PG269 Power-on Sequence Steps章节查找原因。

095bf702-dce5-11ec-ba43-dac502259ad0.png

硬件环境及测试结果:

建议按照XTP587完成板子硬件环境setup:

1. 连接电源USB-JTAG。

2. 安装CLK104时钟板。

3. 使用出厂自带的CARLISLE连接线,将CLK104 ADC/DAC参考钟接到板上。

4. 设置启动模式为JTAG。

09b98b6a-dce5-11ec-ba43-dac502259ad0.png

测试结果:

由打印的IP status对比可见,时钟成功配置,所有DAC和ADC Tile均进入到状态0xf。

0a097a6c-dce5-11ec-ba43-dac502259ad0.png

附录:

此文章提供重建工程TCL脚本,用户可以下载附件,按照如下步骤重建Vivado工程:

1. 打开Vivado 2021.2。

-对Windows系统,双击桌面Vivado图标或到此目录寻找执行文件C:XilinxVivado2021.2invivado.bat。

- 对Linux系统,source/settings64.sh。

2. 在Vivado console中,将当前目录更换到下载的附件目录。Cd。

3. Source ./vivado_project.tcl。

Vitis工程需要用户自行创建,本文会提供测试源代码。

原文标题:开发者分享|第三代Zynq RFSoC器件射频数据转换器应用: 时钟设计-下

文章出处:【微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9097

    浏览量

    367564
  • 程序设计
    +关注

    关注

    3

    文章

    261

    浏览量

    30395
  • Vitis
    +关注

    关注

    0

    文章

    146

    浏览量

    7431

原文标题:开发者分享|第三代Zynq RFSoC器件射频数据转换器应用: 时钟设计-下

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ARM的位置无关程序设计Bootloader的应用

    ARM的位置无关程序设计Bootloader的应用
    发表于 10-26 21:33

    ARM汇编程序设计

    嵌入式系统.第五章.ARM汇编程序设计.ARM汇编程序设计20 目录5 ARM汇编程序设计5.2
    发表于 12-14 07:03

    使用Vitis HLS创建属于自己的IP相关资料分享

    ,我们一直使用Vivado给我们提供的IP或者使用硬件描述语言制作 IP 。今天我们将讲解如何使用HLS-高级综合语言来创建属于我们自己的IP。我们将使用的工具称为Vitis HLS,此后称为 HLS
    发表于 09-09 16:45

    ARM程序设计基础

    ARM编译器一般都支持汇编语言的程序设计和C/C++语言的程序设计,以及两者的混合编程。本章介绍ARM程序设计的一些基本概念,如
    发表于 09-09 14:55 100次下载

    arm原理与c程序设计-代码

    arm原理与c程序设计-代码 asp源码:
    发表于 02-11 09:42 188次下载

    ARM程序设计基础教材

    ARM程序设计基础教材 本章的主要内容:  ARM编译器所支持的伪指令;  汇编语言的语句格式;  汇编语言的程序结构;  相关
    发表于 02-21 09:26 150次下载

    基于ARM的BSP程序设计方案

    介绍基于ARM体系的嵌入式系统启动流程基础上,结合编程实例 详细系统地叙述了BSP(板级支持包)程序的各个部分及其设计方案 并就实际程序设计的几个难点问题
    发表于 06-25 14:24 43次下载

    ARM的位置无关程序设计Bootloader的应用

    ARM的位置无关程序设计Bootloader的应用 ARM处理器支持位置无关的程序设计,这
    发表于 03-29 15:12 1253次阅读

    ARM体系结构与程序设计

    ARM体系结构与程序设计》是ARM体系结构与程序设计的一本实用指导书籍,通过案例详细介绍了ARM体系结构与
    发表于 10-27 16:37 2361次阅读

    ARM_C语言程序设计详解

    ARM_C语言程序设计详解
    发表于 10-27 15:39 32次下载
    <b class='flag-5'>ARM</b>_C语言<b class='flag-5'>程序设计</b>详解

    ARM处理器的位置无关程序设计

    ARM处理器支持位置无关的程序设计,这种程序加载到存储器的任意地址空间都可以正常运行,其设计方法嵌入式应用系统开发具有重要的作用。尤其
    发表于 12-01 01:16 577次阅读

    Xilinx Vitis创建的模板软件工程

    、及内部管理用的CPU。Versal的软件开发工具是Vitis。 下面是Vitis创建软件工程时可以看到的CPU清单。 每个CPU可以创建
    的头像 发表于 11-12 12:06 1832次阅读

    怎么Vitis加速设计为Kernel创建面积约束

    本文来自赛灵思高级产品应用工程师 Hong Han Alveo系列开发板上的平台其实是一个DFX设计的静态部分,Vitis 统一软件平台中使用Alveo系列开发板设计加速Kernel, 最终这些
    的头像 发表于 06-18 10:15 3.7w次阅读

    Vitis调试ARM可信固件和U-boot

    本篇博文中,我们将探讨如何在 Vitis 调试 Zynq UltraScale 器件启动镜像。这些启动镜像包括 ARM 可信固件 (ATF) 和 U-boot。
    的头像 发表于 08-02 10:14 3615次阅读
    <b class='flag-5'>在</b><b class='flag-5'>Vitis</b><b class='flag-5'>中</b>调试<b class='flag-5'>ARM</b>可信固件和U-boot

    Windows 10上创建并运行AMD Vitis™视觉库示例

    本篇文章将演示创建一个使用 AMD Vitis™ 视觉库的 Vitis HLS 组件的全过程。此处使用的是 Vitis Unified IDE。如果您使用的是旧版 AMD
    的头像 发表于 05-08 14:02 766次阅读
    <b class='flag-5'>在</b>Windows 10上<b class='flag-5'>创建</b>并运行AMD <b class='flag-5'>Vitis</b>™视觉库示例