[an error occurred while processing this directive]
Проблемы с адресацией в TMS-C6000
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено lisarden 25 июня 2004 г. 10:34

Есть проблема и нужно решение.
Проблема:
Есть заголовок сообщения:
struct {
int A;
int B;
int C;
} st, *ptrSt;
Формируем пакет из заголовка и, скажем, short слова:
__________________________________________
packet_0 = int_A_+_int_B_+_int_C_+_short_D
получилась длина 14 байт. Теперь помещаем точно такой же пакет сразу за первым пакетом. Получилось, что адрес нового пакета а именно его заголовок НЕ выровнен по 4байтам. На приемной стороне начинают разбирать пакеты. К первому пакету обращаются без проблем через указатель на структуру. то есть:
ptrSt = &packet_0;
a = ptrSt->A;
b = ptrSt->B;
c = ptrSt->C;
ptrToDataOfPacket = (short*)(ptrSt+1);
... = *ptrToDataOfPacket;
Теперь начинаем считывать второй пакет вместе с заголовком:
ptrSt = &packet_1;
a = ptrSt->A; - и тут же ошибка возникает в считывании:
если поле A = 0x00000001, то считанное значение будет реально 0x00010000. То есть на лицо выравнивание данных по 4байтам.

В общем, проблема у нас конкретная. Сначала писали софт на ПК и теперь пытаемся перенести его под TMS (тоже задачка?).

В общем есть ли какие-нибудь директивы компилятора или другие средства, чтобы решить проблему эту. При этом копировать куда-то не хочеться. Иначе весь софт переписывать придется

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru