WIZnet Developer Forum

W5300 관련해서 질문드립니다.

tcp 를 이용해서 TI의 OMAP하고 PC하고 통신하는대요.
통신 소스는 제공되는 기본소스를 조금 변형해서 사용했습니다.

그런대 attribute ((packed)) 이구문을 사용해서 11byte의 구조체를 전송하려고하니깐 맨앞에 0x00이 붙고 뒤에 1byte만큼 짤려서 11byte가 전송됩니다.

typedef struct request_reply{
uint8 Type;
uint16 Lenth;
uint8 Image_Type;
uint32 Image_Size;
uint16 Total_Packet_Number;
uint8 RV;
} attribute ((packed)) Req;
구조체 형태는 위와 같이 생겼는대요.

몇가지 실험을 해본결과 처음 Type에서 8bit로 인식되지 않고 16 bit로 인식되는것 갔습니다. 혹시 이런경우 해결첵을 아시나요???

정확한 것은 아니지만,
OMAP가 memory alignment를 16bit에 맞추지 않을까 생각이 듭니다.

request_reply 정의시

uint8 Type;
uint16 Lenth;

이렇게 되어 있는데, Package 선언으로 아래 lenght가 alignment가 깨지는 것 같습니다.

제생각에는 다 byte로 정의하셔서 사용하시는 것이 좋을 듯 합니다.
uint8 Type;
uint8 Lenght[2];

Copyright © 2017 WIZnet Co., Ltd. All Rights Reserved.