реклама на сайте
подробности

 
 
> IAR объявление struct для ARM
Georg_M_B0
сообщение Mar 19 2011, 13:59
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 1-02-07
Пользователь №: 24 958



У меня IAR Embedded Workbench 5.4 микрокантролер AT91SAM9263.
Делаю вот такое объявление для работы с BMP файлом:

typedef struct _BITMAP
{
unsigned short bfType;
unsigned int bfSize;
unsigned short bfReserved1;
unsigned short bfReserved2;
unsigned int bfOffBits;
unsigned int biSize;
unsigned int biWidth;
unsigned int biHeight;
unsigned short biPlanes;
unsigned short biBitCount;
unsigned int biCompression;
unsigned int biSizeImage;
unsigned int biXPelsPerMeter;
unsigned int biYPelsPerMeter;
unsigned int biClrUsed;
unsigned int biClrImportant;
unsigned char data[1152000];
} BITMAP;


typedef union _BMPImg
{
unsigned char data[1152054];
BITMAP BMP;
} BMPImg;

BMPImg images;

При просмотре переменных получается картина, поле bfType занемает 4 байта вмета двух соответственно дальше всё сбвинуто, скриншот в файле.
Вопрос такой, это глюк или что то я неправильно делаю, или это связанно с выравниванием памяти?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
prottoss
сообщение Mar 19 2011, 14:06
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Georg_M_B0 @ Mar 19 2011, 20:59) *
Вопрос такой, это глюк или что то я неправильно делаю, или это связанно с выравниванием памяти?
Связано с выравниваем. Если хотите использовать не выровненные структуры, используйте директиву #pragma

Код
#pragma pack(1) /* Выравнивание 1 байт */
typedef struct __MyStruct
{  
    UINT8 a;
    UINT16 b;
    UINT32 c;
    UINT64 d;
} MyStruct, *P_MyStruct;
#pragma pack() /* Выравнивание по умолчанию */


--------------------
Go to the top of the page
 
+Quote Post
Georg_M_B0
сообщение Mar 19 2011, 14:23
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 1-02-07
Пользователь №: 24 958



prottoss, спасибо большое, всё заработало.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 12:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.01381 секунд с 7
ELECTRONIX ©2004-2016