[etherlab-dev] EtherCAT-Master on ARM9 using RTAI/Xenomai
fp at igh-essen.com
Wed Mar 3 21:51:50 CET 2010
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?
More information about the etherlab-dev