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

Luca Paluan paluan.luca at tiscali.it
Mon Jan 7 11:14:49 CET 2013

Florian Pose <fp at ...> writes:

> 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 and RTAI 3.7. and with kernel 
> > using Xenomai
> 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?

Hi all, 
I'm trying to use the patch proposed to solve misalignment 
reading and writing pdo variables on arm9 using arm-none-linux-gnueabi 
Unfortunatly I'm experiencing non-deterministic behaviour: 
sometimes when I write an output variable the servo behaves as if it 
didn't received it.
I'm wondering if the patch is really solving the 
problem and if an 'official' solution has been found.
Every advice is 
well accepted.
Best Regards Luca Paluna

More information about the Etherlab-dev mailing list