Difference between revisions of "J1939"

From eLinux.org
Jump to: navigation, search
(j1939 initial)
 
(Update after inclusion in mainline kernel)
 
(11 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
[[Category:Networking]]
 +
= SAE J1939 in Linux =
 +
== overview ==
 +
See also on [http://en.wikipedia.org/wiki/J1939 Wikipedia].
  
== SAE J1939 overview ==
+
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
  
== SAE J1939 support in Linux ==
+
=== Specifications ===
Support for SAE J1939 in Linux consists of 3 parts:
+
* SAE J1939-21 : data link layer
* [http://gitorious.org/~kurt-vd/linux-can-j1939 j1939 linux kernel]
+
* SAE J1939-81 : network management
* [http://gitorious.org/~kurt-vd/can-utils-j1939 j1939 can-utils]
+
* ISO 11783-: Virtual Terminal (Extended Transport Protocol)
* [http://gitorious.org/~kurt-vd/iproute2-j1939 j1939 iproute2]
 
  
You probably want all 3 components to get a J1939 linux node working.
+
== Sources ==
 +
SAE J1939 got in mainline kernel since v5.4
  
The final goal is to have these source trees mainlined.
+
You will probably also want to use [http://github.com/linux-can/can-utils can-utils]
 +
 
 +
=== Getting Started with J1939 ===
 +
 
 +
The can-utils repository contains a good [https://github.com/linux-can/can-utils/blob/master/can-j1939-kickstart.md].

Latest revision as of 19:15, 14 October 2019

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

SAE J1939 got in mainline kernel since v5.4

You will probably also want to use can-utils

Getting Started with J1939

The can-utils repository contains a good [1].