real-time CAN bus with Linux on ARM (Beagleboard/bone)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi everybody!

Due to bandwidth and latency problems, I am currently investigating a
set-up involving CAN bus, an ARM board and a Linux RTOS to improve our
motion control framework. For development and testing purpose, I have
the following set-up in mind:
A master node consisting of the Beaglebone [1] (similar to the
Beagleboard, powered by an ARM Cortex A8) in combination with a CAN
Cape [2] (includes two MCP2515 CAN controllers and additionally allows
the use of the integrated CAN controller of the ARM microprocessor).
The other nodes in the CAN network are custom boards.

Before going into details about performance and configuration, I like
to ask, if there is anybody out there who successfully applied the
RT-patch to a kernel working on the Beagleboard?
There have been discussions on this list and elsewhere about this
topic, but I couldn't find out, if someone finally succeeded in this.
However, this paper [3] made me believe it is possible.

Since I am no expert in ARM software development, Linux, CAN nor
real-time systems, I'm looking for a working solution with a (as)
simple (as possible) configuration.
In my investigation I took a look at Xenomai (see [4] for example
set-up), but discarded it, because I couldn't find real-time safe
drivers for the mentioned CAN devices.
Using the Linux RT-patch seems to be less work than setting up Xenomai
and writing specific modules for it. Also, telling from what I read in
this interesting discussion [5] it should be well-suited for our
requirements - we need 10 ms cycles and latencies below 1 ms should be
enough, since that is already much better than what we have now.

However, the CAN support still gives me an headache. The CAN cape
manufacturer claims a SocketCAN support. However, I'm not sure, if the
SocketCAN driver is suitable for RT applications. As far as I
understood, the RT patch will not change or affect the SocketCAN
driver, meaning that it will not make this driver real-time safe. So,
I am wondering if a SocketCAN device will actually support the cycle
time and latency we need. I read, that one can tune the RT system by
configuring it according to one's needs. For example, I could adapt
the priorities of the IRQs connected to the CAN device. Assuming what
I wrote so far is correct - please correct my if otherwise - my
question is:
Do you think the described set-up is feasible and will support our requirements?

Thanks a lot for your feedback!

Best regards,
Marcus Liebhardt

[1] http://beagleboard.org/bone
[2] http://www.towertech.it/en/products/hardware/tt3201-can-cape/
[3] https://www.osadl.org/fileadmin/dam/rtlws/12/Brown.pdf
[4] http://veter-project.blogspot.com/2011/09/real-time-enough-about-pwms-and-shaky.html
[5] http://www.spinics.net/lists/linux-rt-users/msg05648.html

-- 
Dipl.-Ing. (M.Sc.) Marcus Liebhardt
Control Engineer
Yujin Robot
주소: 대한민국 서울시 금천구 가산동 345-30 남성프라자 #601, 153-023.
Address: Door #601, Namsung-Plaza, 345-30 Gasan-dong, Guemcheon-gu,
Seoul, 153-023, Republic of Korea
Website: http://www.yujinrobot.com
Email: marcus.liebhardt@xxxxxxxxxxxxxx
Phone: +82-2-2104-0435
--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux