CAN-Unterstützung für externe Rechner

Die am Bedienpult der Anlage stehenden Rechner sind mit jeweils einem CAN-Bus verbunden. Dazu werden USB-Dongles von Peak System benutzt.


CAN USB-Dongle (Produktfoto von Peak System)

Die Dongles werden von einem Standardkernel nicht unterstützt, daher muß zuerst das Modul des Herstellers passend zum laufenden Kernel übersetzt werden. Die folgende Anleitung bezieht sich auf SuSE, die Pakete kernel-source und kernel-syms müssen installiert sein. Zunächst werden als root einige vorbereitende Befehle ausgeführt.

  cd /usr/src/linux
  make cloneconfig
  make modules_prepare

Das Compilieren des Moduls verläuft mit Hilfe der beteiligten Makefiles problemlos.

  make -C $TMP/peak-linux-driver-3.17 clean
  cd $TMP/peak-linux-driver-3.17/driver
  make -C /usr/src/linux M=$PWD

Nach der Installation des Moduls im System ist die Hardware einsatzbereit.

  cd $TMP/peak-linux-driver-3.17/driver
  make -C /usr/src/linux M=$(pwd) modules_install
  depmod -a

Das Modul wird automatisch aktiv, sobald das Dongle eingesteckt wird. Alternativ kann es auch per modprobe pcan manuell geladen werden. Der Compilierprozeß muß allerdings wiederholt werden, sobald eine neuere Kernelversion auf dem Rechner installiert wird.

Wenn eigene Programme das CAN-Interface nutzen sollen, müssen die Include-Dateien und die vorcompilierte Library in die Suchpfade des Compilers eingefügt werden. Beispiele hierfür finden sich bei den Testprogrammen von Peak oder in dem C-Interface, für einfache Experimente reicht aber ein Aufruf wie der folgende aus.

  gcc -o demo demo.c -I/home/pc104/libpcan -L/home/pc104/libpcan -lpcan
  LD_LIBRARY_PATH=/home/pc104/libpcan ./demo

Die vorcompilierte Library wurde dafür in /home/pc104/libpcan installiert.