Please note that User Registration has been temporarily disabled due to a recent increase in automated registrations. If anyone needs an account, please request one here: RequestAccount. Thanks for your patience!--Wmat (talk)
Please email User:Wmat if you experience any issues with the Request Account form.

J1939

From eLinux.org
Revision as of 22:23, 18 November 2013 by Kurt-vd (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

SAE J1939 in Linux

overview

See also on Wikipedia.

SAE J1939 defines a higher layer protocol on CAN. It implements a more sophisticated addressing scheme and extends the maximum packet size above 8 bytes. Several derived specifications exists, which differ from the original j1939 on the application level, like MilCAN, NMEA2000 and especially ISO-11783 (ISOBUS). This last one specifies the so-called ETP (Extended Transport Protocol) which is has been included in this implementation. This inclusion results in a maximum packet size of ((2^24)-1)*7 bytes

Specifications

  • SAE J1939-21 : data link layer
  • SAE J1939-81 : network management
  • ISO 11783-6  : Virtual Terminal (Extended Transport Protocol)

Sources

Support for SAE J1939 in Linux consists of 3 parts:

You probably want all 3 components to get a J1939 linux node working.

The final goal is to have these source trees mainlined.

Build

Build the kernel (necessary)

   $ git clone <yourfavoritelinuxkernel> linux
   $ cd linux
   $ git remote add j1939 git://gitorious.org/~kurt-vd/linux-can/linux-can-j1939.git
   $ git remote update j1939
   $ git merge j1939/j1939-vX.X
   $ make etc.

With j1939-vX.X the branch that matches the closest, but not higher, with your linux version.

Build can-j1939-utils (recommended)

   $ git clone git://gitorious.org/~kurt-vd/linux-can/can-j1939-utils.git
   $ cd can-j1939-utils
   $ make etc.

Or you may merge the j1939 changes into any other can-utils version. This should be fairly simple.

Build iproute2-j1939 (recommended)

   $ git clone git://gitorious.org/~kurt-vd/linux-can/iproute2-j1939.git
   $ cd iproute2
   $ make etc.

Or you may merge the j1939 changes into any other iproute2 version. This may be a little more complicated.