[etherlab-dev] EtherCAT-Master on ARM9 using RTAI/Xenomai
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 188.8.131.52 and RTAI 3.7. and with kernel 184.108.40.206
> > using Xenomai 220.127.116.11.
> 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?
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
Best Regards Luca Paluna
More information about the Etherlab-dev