ZYNQ
分享ZYNQ点滴
FPGA_Linuxer
这个作者很懒,什么都没留下…
展开
-
SI5383时钟芯片驱动
虽然接口也是IIC,但是由于5383的地址扩宽了,不再是一字节,而是采用两字节配置,芯片支持直接模式和间接模式。和5338类似,配置接口同样采用IIC接口,配置过程同样使用Clockbuilder软件,配置对应的频率。Si5383和以前同系列的Si5338类似,相比5338时钟输出路数增加,同时增加一路PPS输入。IIC采用IO模拟,将其挂载在BD总线上。芯片的配置流程如下图。原创 2024-04-06 19:47:25 · 317 阅读 · 0 评论 -
xilinx AXI CAN驱动开发
CAN收发方案有很多,常见的解决方案通过是采用CAN收发芯片,例如最常用的SJA1000,xilinx直接将CAN协议栈用纯逻辑实现,AXI CAN是其中一种;因为xilinx提供了C驱动代码,这样用户直接通过AXI lite接口即可配置CAN芯片。配置好对应的通信速率即可完成CAN通信,相比SJA1000芯片,配置门槛降低很多。软件设计方面,推荐直接将AXI CAN IP核绑定在BD文件上。通过这种方式硬件上只需外接一个PHY芯片即可。上图加了一个电平转换芯片。原创 2024-04-05 11:22:41 · 1153 阅读 · 1 评论 -
petalinux 无法通过SDK进行TCF调试
但是无法进行DEBUG 原因是没有开启debug模式,做下图设置重新编译程序生成BOOT.bin即可。原创 2023-07-18 23:03:14 · 185 阅读 · 0 评论 -
Petalinux 无法识别PHY ADDR 显示地址为FF 或者-1
2.直接修改设备树,第二种方法对没有linux基础的朋友不是那么友好。但是系统启动以后ifconfig发现没有ETH0。1,在DTS settings下设置对应的板卡。BD文件使能了GEM。原创 2023-07-18 21:25:10 · 649 阅读 · 0 评论 -
petalinux安装注意事项
首先需要创建安装目录将目录权限改为777,然后将安装文件拷贝到创建的目录下,否则会安装失败。安装文件不能设置权限为755。不能将系统权限切换为root。原创 2023-04-24 22:16:08 · 343 阅读 · 0 评论 -
ZYNQ烧写FLASH无法自启动
注意改完对应的配置之后,FSBL工作需要删除重建工程FSBL工程,不然即使更新了system_top_hw_platform_0文件,生成的BIN文件也无法启动,感觉像是SDK的一个BUG。如果是由于BD文件FLASH的配置选择错误导致无法启动。原创 2023-03-26 11:05:00 · 1542 阅读 · 0 评论 -
ZYNQ PS动态配置PL动态加载
ZYNQ 在线加载转载 2022-09-17 08:50:43 · 4905 阅读 · 2 评论 -
ZYNQ MPSOC PS时钟无法输出给PL使用
勾选掉FSBL,同事选中PL POWERUP,不然不管如果下载,PL端都无法使用PS端的时钟原创 2022-05-23 22:58:34 · 1039 阅读 · 1 评论 -
ZYNQ 裸机读写EMMC 通过xilffs
MMC和SD卡读写一致,具体可以参考https://www.pianshen.com/article/4647214276/需要注意的是,SD卡可能直接拔插在PC机上做了格式化,所以按上面的博客操作即可,但是MMC一般都是焊接在板卡上的,默认情况下是不能直接进行读写操作的,需要借助f_mkfs函数对EMMC进行格式化操作之后才可以正常读写,一般调用f_mkfs在f_mount之后进行...原创 2021-07-20 20:50:33 · 3903 阅读 · 0 评论 -
KEIL封装lib库
第一步,设置第二步,先将大部分都去掉第三步,将需要封装的函数放出来,让其产生对应的lib文件第4步,编译产生lib第5步,将原工程中包含产生lib中的C文件删除,同时添加编译产生的lib文件即可...原创 2021-06-14 21:26:40 · 2006 阅读 · 0 评论 -
ZYNQ LWIP实现任意长度数据接收发送
官方自带的LWIP测试回环程序,实现的功能只是一个单纯的把接收到的数据原封不动的回传回PC机,实际工程运用自然是用不起来的,这里介绍一下如何修改成任意长度数据接收及发送:首先就是基本的配置代码,这里不采用自带的那种方式,前面的初始化配置基本上一样:这里为了方便自动重新连接,设计了一个定时器中断,每250ms检查一次网络连接状态:这里重连及初始化配置主要用到了两个函数:tcp_new及tcp_connect,两个函数都是socket自带的函数,具体使用如下图:注意圈主的回调函数,接收和发送主要靠原创 2021-01-06 22:48:07 · 3843 阅读 · 5 评论 -
zynq的三种启动方式(JTAG,SD,QSPI)
本文介绍zynq上三种方式启动文件的生成和注意事项,包括只用片上RAM(OCM)和使用DDR3两种情况 JTAG方式 JTAG方式是调试中最常用的方式,在SDK中 在“Project Explorer”窗口工程上右键->Debug As->Debug Configurations可以看到以下窗口 首次打开左边窗口中Xilinx C/C++ application(GDB)下没...转载 2020-11-20 20:32:34 · 5947 阅读 · 0 评论 -
zynq PL通过EMIO实现网络通信,LWIP无法ping通
ZYNQ一般是用两路网口,大部分硬件设计会选择直接用PS端的MIO,这样可以省去PL端的管教消耗。最近手里有个板子刚好是连接了EMIO,只能通过EMIO实现网络通信了。PS的对应的配置为:设置完我们会发现,选择EMIO之后,接口只能是GMII接口类型,但是恰巧硬件电路有时RGMII的接口我选择的方案是通过GMII转RGMII的IP,设置如下:注意datasheet有说这个8不能和实际物理硬件设计的PHY地址一样。最终的BD文件为:CLKIN为200M,这里通过DCM实现之后就是正常原创 2020-10-06 10:30:01 · 4490 阅读 · 3 评论 -
xilinx DMA中断不响应
本人习惯使用ADI公司开源的DMA IP核,最近有个项目使用ADI的ip将数据从PS发往PL时有点问题,发现PS的数据有时不更新,暂时没找到问题的原因,所以寻思直接采用xilinx的IP,但是使用之初发现无法实现数据搬移,最终发现是由于PS端设置的搬移数据大小大于IP核的设置的缓存大小,具体影响设置如下图:我这里设置24,也就是最大可搬移16M数据...原创 2020-09-20 21:11:00 · 2150 阅读 · 0 评论 -
vivado2018.3 ZYNQ双核AMP CPU1中断不响应
zynq在进行双核设计时,看教程首先需要对核1的bsp做如下设置然后再核1设计过程中,通过函数绑定核中断,查看相关文档知道-DUSE_AMP=1的作用是:CPU0先启动运行初始化系统,然后启动CPU1,这时CPU0已经初始化共享资源并且可能正在使用某些资源。但是CPU0和CPU1的工程使用的Bsp的源码是一样的,增加“-DUSE_AMP=1”编译选项的作用就是使能预编译指令,让CPU1工程中涉及到共享资源初始化的代码段不被编译进应用程序,这样CPU1启动后就不会再进行共享资源的初始化了但是本人原创 2020-07-04 11:29:42 · 3142 阅读 · 10 评论 -
ZYNQ中断号分配问题
我们在实际设计过程中,可能开始用了一个中断,后面有了需求可能需要增加中断大部分时候可能我们会用这个concat复用接口,这样可能会导致开始我们分配的中断号已经发生了变化,所以在PS端进行中断设计时,我们的中断号最好直接通过#define直接从头文件里提取,而不要手动设置,不然可能导致开始好使的程序,发现中断不再响应了的情况...原创 2020-04-06 10:07:35 · 756 阅读 · 0 评论