BPI-R1 CAN Bus
Last updated
Was this helpful?
Last updated
Was this helpful?
Was this helpful?
In order to port can4linux to the BananaPi, the CAN module description is needed from the A20 hardware manual. can4linux is a character-driver-based Linux driver used already on desktop PCs and embedded platforms like Freescale FlexCAN (the i.MX series of micro controllers) or Xiliny Zynq.
There is a more detailed document about CAN on the A20 at https://dl.linux-sunxi.org/A20/CAN Bus1.pdf
This is a tutorial for using CAN BUS on bananapi with bananian 15-01
Thank selqcir share this example:
Download and install "bananian-1501.img" into 8 GB SDCard.
Expand the root file system using "bananian-config"
Install missing package:
apt-get install git
apt-get update
apt-get upgrade
reboot
Get last bananian available, and continu to install missing 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
Build kernel:
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.