ZYNQ系列文章目录
第一章:基于zynq在linux下的phy调试记录
第二章:qemu制作ubuntu文件系统
第三章:基于zynq在linux下的AXI-CAN实战
第四章:基于zynq在linux下的HDMI实战
文章目录
前言
记录zynq调试:
从petalinux的搭建,到uboot、kernel、rootfs的调试、打包
提示:以下是本篇文章正文内容,下面案例可供参考
一、vivado中AXI-CAN的配置
博主基于AXI-CAN,只因为基于PL端,只要FPGA资源够,相当于可以无限制拓展
1.1 PL配置
多余的不说了直接上配置,有些基础的步骤我就直接跳了,只留关键部分
添加zynq与axi-can的IP核
基于ZYNQ-IP核配置AXI-CAN需要的中断端口
按步骤执行,进行时钟及总线自动配置
把下面圈出来的地方进行管脚配置,及线束连接
在菜单导航栏中点击该选项中的 “Open Elaborated Design ”。然后在菜单栏中点击 Layout ,在下拉列表中选择 I/O Planning 打开 I/O Ports 窗口。我们将在 I/O Ports 窗口中对can_rx和can_tx 引出的接口进行管脚分配。
然后点击ctrl+s
最后点击Generate Bitstream生成system.bit。
1.2 SDK配置
2、完成PL配置后,生成FPGA bit流,包含bit流打开SDK
新建FSBL工程,编译生成fsbl.elf
1.3 镜像编译
3、正常情况下,按照petalinux的开发流程,把工程导入ubuntu环境,使用petalinux去构建SDK,然后打包镜像导入SD卡
但本人使用的是自己搭建的SDK,脱离petalinux开发环境,最后只需要bit流和fsbl,build脚本自动编译 打包生成镜像文件即可
二、petalinux中AXI-CAN的配置
2.1 内核配置
kernel根目录之下执行
make menuconfig ARCH =arm CROSS_COMPILE=arm-linux-gnueabihf
配置xiilinx自己的can驱动。
2.2 设备树配置
前提:PL的AXI-CAN设备树直接用SDK去生成
生成pl.dtsi
can_0: can@43c10000 {
clock-names = "can_clk", "s_axi_aclk";
clocks = <&clkc 15>, <&clkc 15>;
compatible = "xlnx,can-5.0", "xlnx,axi-can-1.00.a";
interrupt-names = "ip2bus_intrevent";
interrupt-parent = <&intc>;
interrupts = <0 31 4>;
reg = <0x43c10000 0x10000>;
rx-fifo-depth = <0x40>;
tx-fifo-depth = <0x40>;
};
三、petalinux下AXI-CAN测试
3.1 检查设备树是否加载成功
此处与上面略有差别,本人在实际工程中使用了2路AXI-CAN
3.2 检查can设备是否注册成功
3.3 进行AXI-CAN实际收发测试
3.4 CAN测试工具及常见CAN测试命令
工具链:首选can-utils
操作命令:
关闭CAN0节点
ifconfig can0 down
CANO设置波特率
ip link set can0 type can bitrate 500000
CANO设置回环
ip link set can0 type can loopback on
启动CANO节点
ifconfig can0 up
查看can节点状态
ip -details link show canO
CAN发送
cansend can0 123#0102030405060708
CAN接收
candump can0
总结
这里对文章进行总结:
本次要讲述的zynq的AXI-CAN实战小知识就说到这里了,兄弟萌要有什么指导意见或疑问可以在评论区留下"足迹"。