在zedboard上的can0总线驱动试验

最近在用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    // 开始生成内核

    在zedboard上的can0总线驱动试验_第1张图片

   

    在zedboard上的can0总线驱动试验_第2张图片

    在zedboard上的can0总线驱动试验_第3张图片

    然后就开始修改设备树,在设备树中添加

                &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 文件,我应该去哪里找啊。

你可能感兴趣的:(嵌入式)