On 9/18/07, Jan Kiszka <[EMAIL PROTECTED]> wrote:
> Yeoh Chun Yeow wrote:
> > Dear Jan,
> >
> > I have found out that the cause of the AT91 problem. This is due to the
> > rtcfg frame structure which is defined using zero-length array and packed
> > attribute. I have modified all the addr in variable length to u32 since I
> > use the IP address and it works. I am afraid that it is something to do with
> > the ARM architecture and also the compiler. Do you have similar problem
> > before?
>
> Not that I recall right now. What toolchain are you using? Something
> pre-compiled or home-grown? What gcc version is involved?
>
> The current RTcfg code that handles this variably-sized frames is not
> really beautiful anyway, but before rewriting everything understanding
> the compiler's problem is required to avoid potentially papering over
> some other issue.
>
> >
> > By the way, attached the patch of real-time driver for AT91 built in the
> > rtnet tree.
>
> Thanks, will look into this soon.
I do not know if this is related to the issue you are observing, but
we got an issue with the packed attribute no ARM. It is illustrated by
the following example:
#include <stdio.h>
struct foo {
struct a {
char b;
} c;
char d;
short e;
} __attribute__((packed));
struct bar {
char a;
} __attribute__((packed));
struct qux {
struct bar b;
char c;
short d;
} __attribute__((packed));
int main(void)
{
printf("sizeof(foo): %u, sizeof(qux): %u\n",
sizeof(struct foo), sizeof(struct qux));
return 0;
}
Whereas, on x86, this program writes:
sizeof(foo): 4, sizeof(qux): 4
on ARM, it writes:
sizeof(foo): 7, sizeof(qux): 4
--
Gilles Chanteperdrix
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
RTnet-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rtnet-users