[etherlab-dev] EtherCAT-Master on ARM9 using RTAI/Xenomai

Florian Pose fp at igh-essen.com
Wed Mar 3 21:51:50 CET 2010


Hi Stefan,

On Wed, Nov 11, 2009 at 06:07:16PM +0100, Stefan Schramm wrote:
> I tried running the master on an AT91 CPU using RTAI or Xenomai. The system 
> freezes after the RT task was started. If I used the normal Linux timers it 
> worked. The reason is that the macros for reading an writing the EC 
> datagrams defined in ecrt.h (e.g. EC_WRITE_U16) may result to unaligned 
> memory access. On ARM CPUs this causes an exception, which normally is 
> catched by the Linux kernel. This does not work with RTAI or Xenomai.
>
> I attached a patch which solves the problem. If the master is running on an 
> ARM CPU I changed the macros. 16, 32 and 64 bit operations are splitted in 
> multiple 8 bit accesses.
>
> I tested it with kernel 2.6.20.21 and RTAI 3.7. and with kernel 2.6.30.9 
> using Xenomai 2.4.9.1.

I'm just wondering if it would be possible to solve this by aligning the
process data in memory. Usually, slaves do not use 'non-alignable'
variables, at least they maintain the possibility to use aligned PDOs.
Wouldn't this be a better solution?

-- 
Best regards,
Florian Pose

http://etherlab.org



More information about the Etherlab-dev mailing list