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

本文作者:赛灵思工程师 shengjie li
在vitis中创建基于arm的baremetal程序设计:
详细流程:
ø 打开vitis,选择一个vitis工作目录。
ø create application,选择一个新的xsa文件,导入从vivado获得的xsa文件。
ø为工程取一个名,以empty application(c)为模板新建工程。
ø勾选bsp中的库,双击platform.spr,选中standalone_psu_cortexa53_0下的board support package,选择modify bsp settings,勾选libmetal库,保存。
ø  导入源码,从附件中找到main.c,可以直接拷贝到工程src目录下,或者右键src目录选择import sources。
ø  添加工程symbol。右键工程选择c/c++ build settings,在symbols中添加__baremetal__。
ø  编译工程,如果有宏定义相关报错,应该是底层ip命名问题,可以在xparameters.h中找到实际的宏定义。
如何添加metal log:
libmetal库提供了metal_log api以便于用户调试,用户可以参考ar#71068使能打印功能: 
https://support.xilinx.com/s/article/71068
metal_log提供了8个等级的打印信息,用户可以根据项目所处的不同阶段决定开启哪一个等级的调试信息。
代码简要分析:
整体流程大致如下:
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的寄存器数值。
clock dsitribution部分,ip驱动提供了相关的结构体和api,具体组成部分可以参考pg269文档相关部分。以下是dac tile的时钟分发网络配置代码:
在我们目前的设计中,使用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章节查找原因。
硬件环境及测试结果:
建议按照xtp587完成板子硬件环境setup:
1. 连接电源、usb-jtag。
2. 安装clk104时钟板。
3. 使用出厂自带的carlisle连接线,将clk104 adc/dac参考钟接到板上。
4. 设置启动模式为jtag。
测试结果:
由打印的ip status对比可见,时钟成功配置,所有dac和adc tile均进入到状态0xf。
附录:
此文章提供重建工程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开发者社区】欢迎添加关注!文章转载请注明出处。


电路为何需要端接?介绍几种端接方式的区别及优缺点
毕马威报告:全球自动驾驶发展分析报告
一些对OpenMP进行优化的方法
深入了解不同负载均衡类型的优缺点
中科视拓上市了吗_中科视拓会借壳么
在Vitis中创建基于ARM的BareMetal程序设计
C语言atoi函数详解
怒怼小米5X:OPPOA77新机截胡上市,仅需2199元
比小米6可能还早,本月旗舰的Nokia8携带骁龙835来了
IBM在华成立能源与公用事业解决方案实验室
在工业互联网领域,智慧医疗仍在起步阶段
智慧配电房电力监控系统
全新Cypress 电源管理IC助力汽车电子控制单元应对苛刻电气条件
极限SOA办公平台开发计划发布(下)
PCB金手指设计的常见问题和解决方案
关于要实现电动汽车大规模推广的关键因素探析
1650显卡性能_1650显卡能吃鸡吗
小米加入openharmony了吗
折叠屏手机销量惨淡,柔宇科技有何底气冲刺科创板?
你身边有智能快递柜吗