Hello.
I'm working on ecat_appl example contained in SDK 1.1.0.4 and so I am forced to use packed structures to be exchanged with PRUs (for example: variable sSyncManOutPar, which is initialized in function COE_ObjInit in file coeappl.c); note that some fields in those structures are unaligned (even if the whole structure is aligned, of course).
Well, if those packed structures are located at an address which is not listed in the list passed to MMUInit function, no problem arises.
If I add a mmu entry in the list for MMUInit telling that that piece of memory has flags 0x00000000 (that is, neither cachable nor bufferable), a "data error" fault arises when the machine instruction STR is executed on an unaligned 32-bit field (for example: sSyncManOutPar.u32MinCycleTime).
Can somebody help me? I would like to know what are the relationships between alignment checking, mmu (and possibly cache).
What are the attributes of a range of addresses which is not explicitly passed to MMUInit function?
Thank you.
Mario G. Casali
System Electronics
Italy