为了您能正确的连接 CAN4LINUX 到 Banana Pi (BPI-M1)中,你需要阅读全志A20硬件手册中相关CAN的章节。CAN4LINUX 是基于字符驱动的Linux驱动程序。已经能在x86和嵌入式平台中运行如 Freescale FlexCAN (i.MX) 或者是Xiliny Zynq 平台。

关于在A20上运行CAN总线的详细文档请参考如下: https://dl.linux-sunxi.org/A20/CAN%20Bus1.pdf

下面教程就是如何在Bananian 15-01中使用CAN 总线:

感谢selqcir 分享他的成果:

  • 下载并且烧录"bananian-1501.img" 到一张至少8GB的 tf卡上。

  • 使用"bananian-config"命令扩展根文件系统。

  • 安装缺少的扩展包:

    ```apt-get install git apt-get update apt-get upgrade reboot'''

  • 获取 Bananian 缺少的包,并且安装这个package: '''git clone https://github.com/Bananian/linux-bananapi apt-get install build-essential u-boot-tools uboot-mkimage apt-get install libusb-1.0-0 libusb-1.0-0-dev git wget fakeroot kernel-package zlib1g-dev libncurses5-dev apt-get install subversion'''

  • 编译内核: '''cd linux-bananapi make menuconfig'''

  • Exit without saving when menu appears '''zcat /proc/config.gz > /root/linux-bananapi/.config make uImage modules make INSTALL_MOD_PATH=output modules_install'''

  • At this step, kernel should be compiled and "Module.symvers" should be available

  • Then rename modules and firmware provide by Bananian, and replace by the new one. '''mv /lib/modules /lib/modules.old mv /lib/firmware /lib/firmware.old mv /root/linux-bananapi/output/lib/modules /lib/modules mv /root/linux-bananapi/output/lib/firmware /lib/firmware'''

  • Same for uImage: '''mount /dev/mmcblk0p1 /mnt cd /mnt mv uImage uImage.old mv /root/linux-bananapi/arch/arm/boot/uImage /mnt reboot'''

  • Create link for further build: '''cd /lib/modules/3.4.104/ ln -s /root/linux-bananapi build cd ~'''

  • Get Can4Linux and build it: '''svn checkout https://svn.code.sf.net/p/can4linux/code/trunk can4linux-code cd /root/can4linux-code/can4linux/ make TARGET=BANANAPI'''

  • Install module for each startup of the board: '''insmod can4linux.ko cp can4linux.ko /lib/modules/3.4.104/kernel/net/can/ depmod -A -v modprobe -v can4linux echo "" >> /etc/modules ; echo "can4linux" >> /etc/modules reboot'''

  • Build CAN example '''apt-get install swig apt-get install python-dev cd can4linux-code/can4linux-examples/'''

  • Update CAN speed and device in file "pyCan-example.py"

    ex: ```

    setting the device number

    device = 0 defaultBaudrate = '250'```

  • Connect CAN transceiver and CAN bus, and check with for example:

   python pyCan-example.py

That's all

With this method, kernel version is "Linux bananapi 3.4.104" instead of "Linux bananapi 3.4.104+", because i was unable to find same sources than Bananian 15-01 , but CAN bus work !

Feel free to comment or update.

Last updated