The universal LINUX CAN device driver can4linux supports a broad range of CAN interfaces. ports AT-CAN-MINI is supported as well as a a bunch of interfaces from other manufacturers. Source code of the software is available. It compiles for Kernels 2.0, 2.2 2.4 and latest 2.6.
An derived version for embedded Linux-devices using micro controllers with integrated CAN or with external stand alone CAN controllers is available too. This one is configured at compile time for a specific hardware architecture.
Overview
can4linux is an universal LINUX™ device driver. It can be used to control ISA or PCI interface boards with CAN interface, or embedded CAN controller solutions. The GPLed sources are currently supporting CAN controllers (Philips SJA1000, Intel 82527, Infineon SAK82C900 and Motorola FlexCAN, TwinCAN). The driver can be compiled for all LINUX™ kernel versions 2.4 to 2.6. (older version for kernel versions 2.0 to 2.2 are available.)
Application
The can4linux Project started already in 1997 in cooperation with the LINUX™ LLP project to control laboratory or automation devices via CAN. Derived from this driver is the new can4linux version line 2.x and follow-up. Designed to be used in embedded applications as well as on the desktop this version is configured at compile time for the right hardware. Originally with support only for SJA1000 there is now support for Intels 82527 and new support for Infineons TwinCAN. Within the scope of the uClinux project a version supporting Motorolas FlexCAN was created.
Driver Interface
Using the LINUX™ kernels /proc interface, the driver is highly configurable. The driver is controlled by the standard driver functions open(), close(), read(), write() and ioctl().
Any number of CAN interfaces can be accessed using the device nodes /dev/can0 ... /dev/cann. can4linux uses the device major number 91.
Hardware
The driver supports different interface boards, ISA, PCI or PC-104, with one or two channels.
- port AT-CAN-MINI (PeliCAN mode 29bit)
- EMS CPC-PCI
- IXXAT PCI03 (only SJA1000)
- Advantech Pcm-3680 (PC 104)
- DIL-NET TRM/816
- DigiTec PCMatic® Feldbusmodul FC-CAN
- ESD PC104/200
- Blackfin BF534/536
Originally the driver worked only on Intel-based PCs. In the mean time we have gained experiences with porting this driver also to embedded LINUX™ architectures. One is a PowerPC 863e with two Intel 82527 controllers, the other is ARM based with an external SJA1000, the microcontroller XC164CS with TwinCAN controller or the NetARM 150 with its four internal CAN channels.
Available Products
can4linux can be used as CAN interface for different products of port. Some of these tools are available as demo versions, to be downloaded from our web site.
The simplest application with access to the CAN layer-2, that means transmit and receive CAN messages, is horch. It can be started interactively within an xterm or in the background as TCP/IP Server. For this server a graphical and programmable CAN-analyzer application CAN-REport is available too.
To implement CANopen protocols for devices in CANopen networks, an ANSI-C communication library is available for development of own applications. Based on the library code, a so-called CANopen Server application is available. The Server provides easy access to CANopen services through a TCP/IP socket interface.
System Requirements
can4linux is freely available under the GPL license. It can be compiled for the LINUX™ kernels 2.0 to 2.6 for different hardware architectures.
Ordering Information
- 0530/13 can4linux Device Driver
Datasheet
Download datasheet.
Download information
Overview
The can4linux Project started already in 1997 with version 0.1. Goal of the development was a generic CAN driver which can be configured at run-time for different CAN interfaces. Mainly used in desktop systems, the resulting overhead was accepted. The development was based on the Linux Device Driver Kit LDDK by Clausi Schröter from the Linux Lab Project.
This older universal Linux device driver can4linux supports Philips 82c200/SJA1000 and Intel 82527 based I/O interfaces. The AT-CAN-MINI is supported. The source code can be compiled for kernels 2.0., 2.2 and 2.4. This driver is no longer maintained. The last available version is 1.4.
Derived from this driver is the new can4linux version line 2.x and follow-up. The last available version is 3.3. The newer versions can be compiled for Linux and uClinux kernel 2.4 and later (including 2.6 at the moment.) Designed to be used in embedded applications (as well as still on the desktop) this version is configured at compile time for the right hardware. Originally with support only for SJA1000 there is now support fo Intels 82527 again available. Within the scope of the uClinux project a version supporting Freescales FlexCAN and Infineons TwinCAN and the Analog Devices BlackFin CAN was created.
Today the following CAN controllers are supported
- NXP (Philips) SJA1000
- Microchip MCP2515
- Analog Devices BlackFin BF537
- ATMEL AT91SAM9263
- Freescale FlexCAN for Coldfire (5282)
- Freescale FlexCAN for i.MX
can4linux is available as kernel 2.6 compatible driver for some of the supported hardware targets. Recently one custumer was succesful using it on the latest kernel 3.0. Please ask at service@port.de
Download
can4linux is available for free. Latest versions are available for download on SourceForge Read the CHANGELOG to see the latest version.
The GPLed Sources V3.5.4 for kernel 2.6 and kernel 2.4 can be downloaded here (updated 18.06.2009). Future versions will not anymore have support for kernels 2.4.x.
Read the CHANGELOG or take a closer look into the manual.
Supported Boards
The drivers supports some ISA boards and some PCI boards:
- BSKY PCM9890 PC104 board (SJA1000)
- Advantech Pcm-3680 (PC 104)
- ARCOM Single Channel Opto-Isolated CAN interface modules supporting the Philips SJA1000 Controller AIM104-CAN
- only Version 2.x: port AT-CAN-MINI (alt: 11 bit basic CAN mode)
- Analog Devices BF537 STAMP board
- ATMEL AT91SAM9263-EK board (included in can4linux since V 3.5.3)
- ATMEL AT91SAM9263 board with external Microchip MCP2515 (included in can4linux since V 3.5.3) TARGET=SSV_MCP2515
- ATMEL AT91SAM9260 board with three external NXP SJA1000 (included in can4linux since V 3.5.3) TARGET=MMC_SJA1000
- ATMEL AT91SAM9G45 board with external MCP2515 (included in can4linux since svn V59)
- Contemporary Controls CANPCI-CO and CANPCI-DN (SJA1000)
- DigiTec PCMatic® Feldbusmodul FC-CAN (SJA1000)
- DIL-NET TRM/816
- EMS CPC-PCIe, PCI-Express board with up to 2 galvanically decoupled CAN channels (NXP SJA1000)
- EMS CPC-PCI, PCI board with up to 2 galvanically decoupled CAN channels (SJA1000)
- EMS CPC-PCI V2, PCI board with up to 4 galvanically decoupled CAN channels (SJA1000)
- EMS CPC-XT (Intel 82527)
- EMS CPC-104, PC104 board with one galvanically decoupled CAN channel (SJA1000)
- EMS CPC-104M, PC104 board with four galvanically decoupled CAN channels (SJA1000)
- Freescale iMX35 PDK (included in can4linux since V 3.5.7)
- JANZ AG PCI-L, PCI boards with SJA1000
- I+ME ACTIA SlimLine
- IGW900 (ColdFire FlexCAN)
- IXXAT PCI03 (only SJA1000)
- Ka-Ro TX25 Modul using i.MX25 on Starterkit-5
- Kvaser PCIcan, PCI board with 4 galvanically decoupled CAN channels (SJA1000)
- MPL VCMA9 Linux komplett Rechner mit ARM9 CPU Linux compact board with ARM9 CPU
- port AT-CAN-MINI (PeliCAN mode 29bit)
- RTD Embedded Technologies, Inc; ECAN1000 PC104 Board
- In preparation: ESD PC104/200.
For all interested in CANopen a demo version of the CANopen Server m4d is available here. The m4d is bundled with our CANopen Device Monitor.