Quick Links
Alignment of variables for Cortex-M0
#1
Posted 12 October 2012 - 07:59 AM
I'm currently working with a Cortex-M0 (using armcc), which is incapable of unaligned reads.
I have a byte array which is storing a received packet in a certain protocol, the first lot of information to come in is 1 byte, followed by two 16-bit half-words.
This is leading to misalignment and preventing me from performing any direct casting/pointer access to these values; I can't space the data out as it's being placed in the array by DMA.
I know with a structure it can be packed, however I've had no such luck with pointers and access to my array.
Is it possible to ask the compiler to align the start of my byte array on the edge of a word (3 bytes), so that the rest of my data is aligned? And if so how?
Any other suggestions?
Many thanks for any help and advice.
#2
Posted 12 October 2012 - 08:29 AM
__packed short* pUnalignedHalfWord = (__packed short*) xyz;
So if you had a structure:
__packed struct MyStruct_t
{
char a;
short b;
};
MyStruct_t foo;
__packed short* pUnalignedHalfWord = (__packed short*) &(foo.B);
#3
Posted 14 October 2012 - 03:04 PM
ttfn, on 12 October 2012 - 08:29 AM, said:
__packed short* pUnalignedHalfWord = (__packed short*) xyz;
So if you had a structure:
__packed struct MyStruct_t
{
char a;
short b;
};
MyStruct_t foo;
__packed short* pUnalignedHalfWord = (__packed short*) &(foo.B);
Thank you for the feedback. I had actually tried this though with no luck, I will explore further and see if I can make this work, else return with some sample code/errors for some useful debugging!
















