您的位置:首页 > 运维架构 > Linux

在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 文件,我应该去哪里找啊。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  zedboard linux can