[ZLG-ARM] 移植SNMP到zlg/ip时遇到的问题

[复制链接]
2246|1
 楼主| suiting 发表于 2007-9-9 20:50 | 显示全部楼层 |阅读模式
使用zlg/ip的接收任务和UDP任务两个任务,参考zlg的资料建立UDP&nbsp;socket是没问题的,可以ping,UDP收发也ok。需要指出的是,zlg的资料接收缓冲用的是局部变量,如下例1的rec_buffer[1025]。在移植snmp时,因为rec_buffer要被其他snmp函数处理,所以把它定义为全局变量,如例2。rec_buffer只被一个任务使用即TaskD。<br /><br />现在问题是:<br />采用例1&nbsp;-&nbsp;ping,UDP服务器收发正常;<br />采用例2&nbsp;-&nbsp;ping正常,用UDP测试工具(即客户端)发一个信息给服务器端,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;此时就出现异常,停止AXD,程序停在:<br />Undefined<br />&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;Undefined<br /><br />例1<br />void&nbsp;TaskD&nbsp;(void&nbsp;*pdata)&nbsp;<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;rec_buffer[1025];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//接收缓冲<br />&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;sockaddr&nbsp;servAddr;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//用于保存本机IP地址、端口号等信息<br />&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;sockaddr&nbsp;from;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//用于保存对方IP地址、端口号等信息<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;retStatus;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//1-UDP;0-TCP<br />&nbsp;&nbsp;&nbsp;&nbsp;uint16&nbsp;fromLen;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//用于保存对方sockaddr长度<br />……<br />例2<br />static&nbsp;uint8&nbsp;rec_buffer[1025];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//定义为全局变量<br />……<br />void&nbsp;TaskD&nbsp;(void&nbsp;*pdata)&nbsp;<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;//uint8&nbsp;rec_buffer[1025];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//接收缓冲<br />&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;sockaddr&nbsp;servAddr;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//用于保存本机IP地址、端口号等信息<br />&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;sockaddr&nbsp;from;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//用于保存对方IP地址、端口号等信息<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;retStatus;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//1-UDP;0-TCP<br />&nbsp;&nbsp;&nbsp;&nbsp;uint16&nbsp;fromLen;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//用于保存对方sockaddr长度<br />……<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 楼主| suiting 发表于 2007-9-11 07:13 | 显示全部楼层

修改后可以访问SNMP代理了

但是奇怪哦,如果把TaskD的堆栈修改为500以上或300以下就可以了,原来它的堆栈是400。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

9

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部