EtherCAT Master on Jetson

We are investigating the possibility of leveraging NVIDIA Jetson to be the hardware running a motion controller. The majority of the motion controller is clear on how we’ll implement, but the implementation of a real time field bus is the primary question/concern we have. Directly, we are looking to build an EtherCAT master on the Jetson. We have two primary criteria we would like to confirm feasible on the Jetson, first the ability to create an EtherCAT master running at 2khz with low jitter. The second is the possibility to have an additional cat5 port which will be used as a typical network port that could connect to a device follow typical tcp/ip protocol.

We are excited by the possibility to leverage the Jetson for our project but need to gain an understanding if EtherCAT could be implemented on the hardware. If anyone has previously had any success creating and running an EtherCAT master on a Jetson that would be very helpful information.

I’ve never used EtherCAT since it is proprietary. I don’t remember the actual post, but I do recall someone talking about this that had some experience with the topic. I haven’t researched that, but I would bet that this exact Google search does the job:
“nvidia” “jetson” “ethercat” “forums.developer.nvidia.com”

I don’t know what the low jitter requirement might require, but I suspect it means you’d want a separate UART not controlled by the Jetson itself. An example being a USB UART with its own clock, or PCIe. The cat 5 part is easy, all of the Jetson have a minimum hardware of gigabit that works well.

Thanks for the quick response. Based on that previous post it sounds that the expectation is that the Jetson could be used for an EtherCAT master, which is what we’d be looking to do. For EtherCAT low jitter typically means <1μs.

Would you expect that we’d be able to have one cat5 port configured to run this EtherCAT master and another cat5 port configured to run tcp/ip to communicate with our HMI?

Having a minimum of gigabit communication sounds like plenty, the next question is how to configure two separate network ports on the Jetson. Having had some previous conversations about the Jetson, I believe only one port is technically supported, but there is the possibility to modify the hardware to have up to four ports. Is that correct, what does that process look like, and is it reasonable to take that concept to production if that’s not something that is typically considered supported?

EtherCAT is proprietary. If this sits on top of Ethernet, and you can get the software to do so, then yes. If EtherCAT is to behave directly as a hardware driver in place of an Ethernet driver, then it would depend on being able to get access to that driver (which I expect would be proprietary and expensive); even then, it would have to likely be in source form because as a kernel module it would have to load into the existing kernel, and such loads imply the module needs to be compiled against that configuration. If you were to do this on an Ubuntu desktop PC, what would the instructions be regarding drivers and software install?

User space software is probably not an issue on the Jetson, it really is a very tiny powerful PC using an arm64 architecture. Kernel space is where it differs in talking to the hardware. Often details such as jitter can be circumvented with dedicated hardware which controls the signal; however, if the Jetson requires its own clock to feed that hardware, then I would expect issues with jitter (Jetsons are not hard realtime devices, and score slightly lower on the soft realtime behavior; devices running on this are independent of the Jetson’s jitter behavior).

So an example question for you to examine: On a desktop PC, what software would be needed for the cat 5? Is it just something talking over ordinary Ethernet hardware, or does it specialize in specific network device hardware? Often the more expensive proprietary standards might depend on a dongle for licensing reasons; if so, will the dongle itself function on Jetson’s arm64 architecture?

Incidentally, much of this would depend on the specific model of Jetson. Once looking at that model, then the carrier board would also matter. An example of this is that the AGX Orin (and I think AGX Xavier) supports a pair of internal Ethernet controllers (please verify that before you depend on it), but the carrier board of the dev kit only exposes one. A third party carrier board on an AGX Orin module could perhaps have two 10 Gb/s ports (most likely you’d want to just work with 1 Gb/s for a lot of reasons). The point is that if two ports are available, but the carrier board exposes only one, then switching to some third party carrier board might make two ports available. Just be certain to verify that the two ports are not just one controller with a switch and are two actual independent controllers. Someone else would need to answer those details, I’m just speculating.

There are in fact PCIe NICs which a Jetson can use if the carrier board supports it. That’s another option for a given Jetson model on different third party carrier boards (the AGX Orin and AGX Xavier do expose one PCIe socket, but you can’t see it without removing the cover for that part of the unit): PCIe add-ons. A single PCIe add-on that has multiple ports might be problematic if you want one of those ports to be Ethercat and the other ordinary Ethernet. However, answering that would be no different on the Jetson than it would be on a PC.

I will suggest you take a browse through the NVIDIA partners ecosystem URL:
https://developer.nvidia.com/embedded/ecosystem

Incidentally, at least one company has some support for “better” realtime: Concurrent Real-Time. I have never used their software, and so I have no idea how well it works, nor do I know of the cost, but if timings are important, then you might at least browse what they have. The main problem there is that if you have proprietary EtherCAT software/hardware, then it might be more difficult to adapt to what they have (I’ve never seen what is in Concurrent’s software so I can’t be certain whether it would be of any use to you or not; certainly the realtime nature is limited by the Jetson hardware regardless of how well the software manages the hardware timing).

Thanks for the in-depth response. The questions you’ve highlighted provide the areas to dig to find the answer we are looking for. I understand that the AGX Orin can simulate any other Jetson forum factor. I’ll propose we start with the AGX Orin as an initial prototype. This way we can see what amount of hardware we really require.

One advice when you start: Default installation after flashing a dev kit won’t be the max performance mode. Beware that if you want reduced latency, then start with the “sudo nvpmodel -m 0”. That’ll set the clocks to max (it’ll also draw a bit more power) for the case of best possible timing and performance.

1 Like

While the EtherCAT technology and communication protocol is not Open Source, the license for implementing an EtherCAT master is free of charge. EtherCAT Technology Group | FAQs. This has led to some open projects to interface with EtherCAT.

One potential stack is:

As I am testing this for a research project (and haven’t got it working in practice yet), please conduct your own due diligence for appropriate licensing and reliability requirements if you try this approach. ;-)

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.