在zedboard上的can0总线驱动试验
2018-03-21 11:34
459 查看
最近在用zedboard做有关CAN总线收发的测试;发现如下问题并折腾了好久才完成相应的功能,在此做一个简单的操作总结;希望对像我一样的linux小白能有所帮助。废话少说,我尼玛的要开始和各位侃大山了。
虚拟机为 ubuntu 14.04 版本;
内核版本 4.6.0
首先根据xilinx wiki上的内容所示,要重新编译内核,加入CAN总线部分的模块;
1.# make menuconfig
选择 Networking support ——》can bus subsystem support——》can device driver——》选择图中*号的选项
2.#make // 开始生成内核
然后就开始修改设备树,在设备树中添加
&can0 { status = "okay"; };
重新编译生成设备树.dtb文件。
然后就是重新编译生成 ip 可执行文件,由于busybox自带的 ip 命令无法完成can总线的速率设置,需要自己根据源文件重新配置生成 ip,具体操作如下:
1. 在 https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ 下载对应的源文件,我下的是iproute2-4.9.0.tar.gz
解压后修改 Makefile 中的
#CC = gcc
为==> CC = arm-xilinx-linux-gnueabi-gcc
修改Makefile中的
#SUBDIRS=lib ip tc bridge misc netem genl man
为==> SUBDIRS=lib ip
然后执行make命令,在源文件目录的 ip目录下生成 ip 命令,拷贝到开发板文件系统的 /bin 目录。(这里我要说一下,首先在你开发板上输入
# which ip //来查看你的ip命令执行路径是在哪里,我的是在 /bin 下,所以就替换 /bin 目录下的 ip命令,网上有人说是在 /sbin 目录下,无所谓啦,你只要确定你自己开发板原来的 ip 是在哪个路径下,就替换哪个就可以了)然后重新制作uramdisk.image.gz文件即可。
再然后,下载xilinx_wiki中 http://www.wiki.xilinx.com/Linux%20CAN%20driver 的 zynq_canutils.rar 压缩包;解压后有两个文件
其中 canutils_install 文件夹中有 bin lib sbin share 4个文件夹,在 bin sbin 中存放编译好的canconfig cansend等5个可执行文件,我也是直接把这5个命令拷贝到 uramdisk.image.gz 的 /bin 目录下,;
还要拷贝以上5个命令执行时所需的库文件,在 /libskt_install/lib 目录下,有3个 .so 的库,全部拷贝到 uramdisk.image.gz 的 /lib 目录。
然后就要重新生成 uramdisk.image.gz 文件啦。
将上述生成的 uImage、devicetree、uramdisk.image.gz 拷贝到SD卡上,就可以按照xilinx_wiki上的操作进行试验啦。
亲测有效!!!
还有个问题我没有想明白,希望有大神来指点;有人直接用如下指令配置can总线的速率,
echo 250000 > /sys/class/net/can2/can_bittiming/bitrate
我在开发板的 /sys/class/net/can0 路径下没有 其他网友所提到的 can_bittiming/bitrate 文件,我应该去哪里找啊。
虚拟机为 ubuntu 14.04 版本;
内核版本 4.6.0
首先根据xilinx wiki上的内容所示,要重新编译内核,加入CAN总线部分的模块;
1.# make menuconfig
选择 Networking support ——》can bus subsystem support——》can device driver——》选择图中*号的选项
2.#make // 开始生成内核
然后就开始修改设备树,在设备树中添加
&can0 { status = "okay"; };
重新编译生成设备树.dtb文件。
然后就是重新编译生成 ip 可执行文件,由于busybox自带的 ip 命令无法完成can总线的速率设置,需要自己根据源文件重新配置生成 ip,具体操作如下:
1. 在 https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ 下载对应的源文件,我下的是iproute2-4.9.0.tar.gz
解压后修改 Makefile 中的
#CC = gcc
为==> CC = arm-xilinx-linux-gnueabi-gcc
修改Makefile中的
#SUBDIRS=lib ip tc bridge misc netem genl man
为==> SUBDIRS=lib ip
然后执行make命令,在源文件目录的 ip目录下生成 ip 命令,拷贝到开发板文件系统的 /bin 目录。(这里我要说一下,首先在你开发板上输入
# which ip //来查看你的ip命令执行路径是在哪里,我的是在 /bin 下,所以就替换 /bin 目录下的 ip命令,网上有人说是在 /sbin 目录下,无所谓啦,你只要确定你自己开发板原来的 ip 是在哪个路径下,就替换哪个就可以了)然后重新制作uramdisk.image.gz文件即可。
再然后,下载xilinx_wiki中 http://www.wiki.xilinx.com/Linux%20CAN%20driver 的 zynq_canutils.rar 压缩包;解压后有两个文件
其中 canutils_install 文件夹中有 bin lib sbin share 4个文件夹,在 bin sbin 中存放编译好的canconfig cansend等5个可执行文件,我也是直接把这5个命令拷贝到 uramdisk.image.gz 的 /bin 目录下,;
还要拷贝以上5个命令执行时所需的库文件,在 /libskt_install/lib 目录下,有3个 .so 的库,全部拷贝到 uramdisk.image.gz 的 /lib 目录。
然后就要重新生成 uramdisk.image.gz 文件啦。
将上述生成的 uImage、devicetree、uramdisk.image.gz 拷贝到SD卡上,就可以按照xilinx_wiki上的操作进行试验啦。
亲测有效!!!
还有个问题我没有想明白,希望有大神来指点;有人直接用如下指令配置can总线的速率,
echo 250000 > /sys/class/net/can2/can_bittiming/bitrate
我在开发板的 /sys/class/net/can0 路径下没有 其他网友所提到的 can_bittiming/bitrate 文件,我应该去哪里找啊。
相关文章推荐
- linux内核SPI总线驱动分析(一)
- 使用platform虚拟总线驱动按键
- ok6410学习笔记(15.platform平台总线驱动模型之混杂设备驱动led)
- Linux设备驱动之——I2C总线
- 和菜鸟一起学linux总线驱动之smartcard传输协议
- Linux SDIO总线驱动(三)
- linux设备模型——总线,驱动,设备间的关系
- Linux中IIC总线驱动分析
- Linux下的SPI总线驱动
- Linux SPI总线和设备驱动架构之二:SPI通用接口层
- 总线设备驱动模型
- Linux总线设备驱动模型
- 13.总线设备驱动模型(1)-总线设备驱动模型
- 总线、设备、驱动、类
- Linux中IIC总线驱动分析
- 基于Linux内核的1-wair总线驱动
- 总线设备驱动模型浅析
- IIC总线驱动架构
- STM32的FSMC总线驱动ili9341,掉电重启无法正常显示的问题
- 设备,驱动,总线的结构