Zynq-Linux移植学习笔记之20-Zynq linux can驱动开发

1、  硬件配置

在vivado中选择启用ps端的can控制器,如下图


设置can总线的主频

 

2、  devicetree配置

在devicetree中需要增加can的配置信息,如下:

can@e0008000 {
                            compatible= "xlnx,zynq-can-1.0";
                            status= "okay";
                            clocks= <0x1 0x13 0x1 0x24>;
                            clock-names= "ref_clk", "aper_clk";
                            reg = <0xe00080000x1000>;
                            interrupts= <0x0 0x1c 0x4>;
                            interrupt-parent= <0x3>;
                            tx-fifo-depth= <0x40>;
                            rx-fifo-depth= <0x40>;
};


实际场景中只使用了can0,故devicetree中只配置can0即可。

 

3、  kernel配置

在kernel中需要增加can驱动的支持




编译内核即可。

 

4、  测试

加载镜像后,通过ifconfig –a能够看到can0的打印信息,如下:


设置can0的波特率,这里设置的是100k

>ip link set can0 type can bitrate100000

启用can0

>ip link set can0 up

显示can0状态信息

>ip -d -s link show can0


可以通过Cantest测试工具连接开发板进行发送包测试


选择与开发板can总线相同速率的波特率100k


发送报文测试,发送成功


开发板上RX有相应的计数

开发板使用cansend函数进行数据发送



收发正常,至此测试完成。

 

5、  相关函数

 

ifconfig -a

可以查到当前can网络can0 can1,包括收发包数量、是否有错误等等

 

//ip link set can0 type can--help

ip link set can0 up type canbitrate 800000

设置can0的波特率为800kbps,CAN网络波特率最大值为1Mbps

 

ip link set can0 up type canbitrate 800000 loopback on

设置回环模式,自发自收,用于测试是硬件是否正常,loopback不一定支持

 

ip link set can0 down

关闭can0 网络

 

cansend can0 0x11 0x22 0x33 0x440x55 0x66 0x77 0x88

发送默认ID为0x1的can标准帧,数据为0x11 22 33 44 55 66 77 88

每次最大8个byte

 

cansend can0 -i 0x800 0x11 0x220x33 0x44 0x55 0x66 0x77 0x88 -e

-e 表示扩展帧,CAN_ID最大29bit,标准帧CAN_ID最大11bit

-i表示CAN_ID

 

cansend can0 -i 0x02 0x11 0x12--loop=20

--loop 表示发送20个包

 

candump can0

接收CAN0数据

 

附:Xilinx官网上can操作命令

Usage For CAN

1. Set bit-timing
Can supports bitrates upto 1Mb/s. Xilinx CAN h/w and driver supports these bitrates
Note: Triple sampling is not supported by Xilinx CAN H/W.
$ ./ip link set can0 type can bitrate 200000
or
$ ./canconfig can0 bitrate 200000

2. Bring up the device
$ ./ip link set can0 up
or
$ ./canconfig can0 start

3. Bring down the device
$ ./ip link set can0 down
or
$ ./canconfig can0 stop

4. Transmit and receive packetswith standard id number
$ ./cansend can0 -i 0x14 <bytes>
$ ./candump can0

5. Transmit and receive packetswith extended id number (--loop argument here)
$ ./cansend can0 -i 0x333 <bytes>
$ ./candump can0

6. Loopback mode
$ ./canconfig can0 ctrlmode loopback on

7. Checking link state (checkingbitrate/errors/packets)
$ ./ip -d -s link show can0

8. Checking net device state
$ ifconfig can0

9. Getting statistics via proc
$ cat /proc/net/can/stats

10. Socket CAN core uses severalfilter lists to deliver received CAN frames to CAN protocol modules. These receivelists, their filters and the count of filter matches can be checked in theappropriate receive list. All entries contain the device and a protocol moduleidentifier:
$ cat /proc/net/can/rcvlist_all
rcvlist_all - list for unfiltered entries (no filter operations)
rcvlist_eff - list for single extended frame (EFF) entries
rcvlist_err - list for error message frames masks
rcvlist_fil - list for mask/value filters
rcvlist_inv - list for mask/value filters (inverse semantic)
rcvlist_sff - list for single standard frame (SFF) entries

  • 4
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: "Zynq-Linux移植学习笔记"是一篇关于在Zynq SoC平台上移植Linux操作系统的学习笔记。该笔记主要介绍了如何在Zynq平台上搭建交叉编译环境、编译内核、制作根文件系统以及启动Linux系统等方面的知识。通过学习这篇笔记,读者可以了解到如何将Linux操作系统移植Zynq平台上,并且可以通过实践来深入理解相关的知识和技 ### 回答2: Zynq Linux移植是搭建Zynq硬件平台和在该平台上运行Linux系统的过程。它包括了硬件的设计和软件的开发,这有助于实现在Zynq平台上开发Linux应用程序的目标。 首先,进行Zynq Linux移植前需要研究设备的结构和硬件构造。zynq硬件平台包含两个主要组成部分:PS和PL。PS负责处理器系统和外设的管理和控制,PL则是可编程逻辑,支持FPGA逻辑的定制化,同时也支持外设的实现。在移植时,需要设计PS的硬件架构和软件驱动程序,同时也需要配置PL。一般情况下,需要进行如(Xilinx SDK)和(Petalinux)等的软件开发环境安装和配置。 接下来,进行Linux系统的移植。这部分工作需要了解Linux内核的结构、功能和特性,然后根据硬件架构,对Linux系统进行调整和定制,构建出适合硬件平台的Linux系统。这个过程需要进行的工作包括:解编译适合SOC的内核、制定设备树、调整内核参数等。 最后,这些工作完成后,就可以在Zynq平台上编译和运行Linux应用程序了。开发者可以尝试通过开发板上的GPIO、I2C、SPI或UART等接口,学习Linux的设备驱动程序、网络编程、文件系统管理等知识点。可逐步学习如何掌握Linux的shell、打包工具、交叉编译工具等。 总结来说,Zynq Linux移植工作是基础的硬件构造、嵌入式软件和Linux知识的综合应用,需要开发者有至少三方面的技能。需要熟练编写硬件设计,熟练掌握Linux内核编程以及Linux系统软件的维护和管理。这些技能的应用能力对于移植Zynq平台Linux系统和应用程序的开发工程师来说是非常必要的。 ### 回答3: 随着嵌入式系统的广泛应用,zynq-linux移植成为了嵌入式开发的一个重要研究课题。zynq-linux移植涉及到许多方面的知识,在学习过程中需要注意以下几点: 一、zynq-linux移植前需要了解的基础知识 在开始进行zynq-linux移植之前,需要对Linux系统、ARM技术、FPGA开发、C语言等基础知识有一定的了解。同时需要熟悉zynq系列的基本架构和应用场景。 二、zynq-linux移植必要的步骤 zynq-linux移植的过程主要分为以下几个步骤:首先是确定硬件平台和环境搭建;其次是进行内核编译和配置;然后是uboot编译和烧录;最后是Linux文件系统的制作和烧录。在整个移植过程中,需要注意各个步骤的顺序和详细操作,确保每一步都正确完成。 三、zynq-linux移植中可能会遇到的问题 在zynq-linux移植过程中,可能会遇到各种问题,例如硬件平台的兼容性、内核配置的错误、uboot烧录问题、文件系统制作出错等。在遇到这些问题时,需要耐心地进行排查和解决,同时也可以借助搜索引擎和社区的技术支持。 四、zynq-linux移植之后的应用与拓展 zynq-linux移植成功之后,可以将其应用于各种嵌入式系统中,例如网络设备、智能家居、工业控制等领域。同时,还可以进行拓展和优化,例如添加各种驱动程序、优化系统性能等。 总之,在进行zynq-linux移植学习和实践中,需要认真学习基础知识,仔细操作每个步骤,及时排查并解决问题,并在成功移植之后持续进行应用与拓展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值