[ECOS] pragma pack
Bernard Fouché
bernard.fouche@kuantic.com
Wed Jan 9 14:51:00 GMT 2008
First try reorganizing your structure to have the biggest item at the
beginning, that will avoid 'loosing' intermediary bytes:
typedef struct {
cyg_uint16 timestamp;
cyg_uint8 command2_byte;
cyg_uint8 data3;
cyg_uint8 data4;
} pelco_pattern;
Your target may also require that all items have to be 16 bits aligned
(that would explain whyt #prama pack(1) gave nothing). In that case try,
as you are not looking for speed:
typedef struct {
cyg_uint16 timestamp;
cyg_uint16 command2_byte_and_data3;
cyg_uint8 data4;
} pelco_pattern;
With 16bits alignment you should fall back to a 6 bytes data structure, but you'll need code to manage 'command2_byte' and 'data3', so this will add to your program size, as it will slow processing.
Hope it helps!
Bernard
Alexandre wrote:
> Hi everybody (and happy new year would i add),
>
> I'd like to use the pragma pack(1) in one of my applications to align
> properly a 5 bytes structures array into flash.
> I know that packing reduces greatly the performances of the system but
> performance is not really my problem here as i'm actually looking for
> more memory and would greatly need to pack things up a little bit.
>
> I tried to declare the next structure as shown, with the pragmas, but
> it's still 8 bytes large, either read with a sizeof(pelco_pattern) or
> after being written in rom:
>
> #pragma pack(1)
> typedef struct {
> cyg_uint8 command2_byte;
> cyg_uint8 data3;
> cyg_uint8 data4;
> cyg_uint16 timestamp;
> } pelco_pattern;
> #pragma pack()
>
>
> Am I doing something wrong here ? Is it even possible to use "pack"'s
> pragmas within ecos ? Am I missing some compiler directives ?
>
> I am using the arm-elf-gcc compiler and the lpc2xxx / arm version of ecos.
> The compiler does not say anything about the line with the pragma in it.
>
> Thanks in advance for you answers ^^
>
> Alex Garcia
> Hymatom SA
>
>
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
More information about the Ecos-discuss
mailing list