导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→求助:关于Lwip协议栈移植的请教--关于包结构字节对齐的问[lovelabor]

 *第36043篇: 求助:关于Lwip协议栈移植的请教--关于包结构字节对齐的问题

  
楼 主:lovelabor 2005年11月27日20:03
 求助:关于Lwip协议栈移植的请教--关于包结构字节对齐的问题
各位大虾,大家好。我在移植协议栈的时候,经常碰到一些莫名其妙的错误,比如说访问下面结构体中的 dipaddr 导致死机的问题(ip_addr_set(&(hdr->  dipaddr), ipaddr);),但实际上我已经使用了__packed 声明是字节对齐的咯,可在访问的时候还是有异常产生。
如果使用临时变量,通过内存拷贝可以解决该问题。真是比较怪啊:) 不知与我使用的芯片有没有关系(S3C44b0X)。

QQ:380920089
PACK_STRUCT_BEGIN
/** the ARP message */
struct etharp_hdr {
  PACK_STRUCT_FIELD(struct eth_hdr ethhdr);
  PACK_STRUCT_FIELD(u16_t hwtype);
  PACK_STRUCT_FIELD(u16_t proto);
  PACK_STRUCT_FIELD(u16_t _hwlen_protolen);
  PACK_STRUCT_FIELD(u16_t opcode);
  PACK_STRUCT_FIELD(struct eth_addr shwaddr);
  PACK_STRUCT_FIELD(struct ip_addr sipaddr);
  PACK_STRUCT_FIELD(struct eth_addr dhwaddr);
  PACK_STRUCT_FIELD(struct ip_addr dipaddr);
} PACK_STRUCT_STRUCT;
PACK_STRUCT_END

  
2楼:embededman 2005年12月16日10:14
 我移植的时候是直接把它们都去掉了
对于我来说没什么大用
  
3楼:yqused 2005年12月18日21:54
 如下定义即可:
如下定义即可:
PACK_STRUCT_BEGIN 
PACK_STRUCT_FIELD __packed

>>>>>>对该主题发表你的看法

本主题贴数3,分页: [第1页]


[上一篇主题]:请问大家一个问题

[下一篇主题]:“南方的老树”51CPLD开发板