完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
调试发现是下面的函数中通不过
struct sys_timeouts *sys_arch_timeouts(void) { rt_thread_t self = rt_thread_self(); struct lwip_thread* lwip_th = (struct lwip_thread*)self-》user_data; if (lwip_th != RT_NULL) { RT_ASSERT(lwip_th-》magic == LWIP_THREAD_MAGIC); ------这里通不过。 return &(lwip_th-》timeouts); } return RT_NULL; } 我的配置如下: /* ip address of target */ #define RT_LWIP_IPADDR0 192 #define RT_LWIP_IPADDR1 168 #define RT_LWIP_IPADDR2 1 #define RT_LWIP_IPADDR3 15 /* gateway address of target */ #define RT_LWIP_GWADDR0 192 #define RT_LWIP_GWADDR1 168 #define RT_LWIP_GWADDR2 1 #define RT_LWIP_GWADDR3 1 /* mask address of target */ #define RT_LWIP_MSKADDR0 255 #define RT_LWIP_MSKADDR1 255 #define RT_LWIP_MSKADDR2 255 #define RT_LWIP_MSKADDR3 0 为什么上面的图中的目标地址是192.168.1.255呢?(我这样配置不是设定开发板的IP为192.168.15吗?) 是不是没ping通啊,但是我的开发板上的网口灯是亮的。而且PC机的网络图标也由断开变为连接。 |
|
|
|
gethostbyname怎么传了一个ip地址进去了。
另外你确定是在RT_ASSERT(lwip_th->magic == LWIP_THREAD_MAGIC);这个地方卡住了么 |
|
|
|
我单步调试很多次,都是这里RT_ASSERT(lwip_th->magic == LWIP_THREAD_MAGIC);卡住了
|
|
|
|
通常ip地址是不需要再进行域名解析的(gethostbyname),域名才需要进行解析。
不过传一个ip地址进去也不应该会卡在这个地方,得看看gethostbyname中调用了什么API,按理不应该在使用lwip timer的方式。 |
|
|
|
今天用FinSH试了UDPClient,发现可以发数据出去.
但是如果放到GUI线程去执行UDPClient,则不能发数据出去.同样是无法获取到host.我怀疑是GUI和LwIP有资源方面的冲突. 测试代码如下: #include "demo_view.h" #include #include static void TCP_Client(struct rtgui_widget* widget, rtgui_event_t* event) { tcpclient("192.168.1.2",80); /*tcpclient("); tcpclient("192.168.1.2",139);*/ } static void UDP_Client(struct rtgui_widget* widget, rtgui_event_t* event) { udpclient("192.168.1.2",138,2); } static void TCP_Server(struct rtgui_widget* widget, rtgui_event_t* event) { tcpserv(RT_NULL); } static void UDP_Server(struct rtgui_widget* widget, rtgui_event_t* event) { udpserv(RT_NULL); } rtgui_view_t *test_lwip(rtgui_workbench_t* workbench) { rtgui_view_t *view1; rtgui_button_t *button; rtgui_rect_t widget_rect; view1 = demo_view(workbench, "test"); demo_view_get_rect(view1, &widget_rect); widget_rect.x1 = 5; widget_rect.x2 = widget_rect.x1 + 50; widget_rect.y1 = 170; widget_rect.y2 = widget_rect.y1 + 20; button = rtgui_button_create("TCPClient"); rtgui_widget_set_rect(RTGUI_WIDGET(button), &widget_rect); rtgui_container_add_child(RTGUI_CONTAINER(view1), RTGUI_WIDGET(button)); rtgui_button_set_onbutton(button, TCP_Client); widget_rect.x1 = widget_rect.x2 + 10; widget_rect.x2 += 50; button = rtgui_button_create("UDPClient"); rtgui_widget_set_rect(RTGUI_WIDGET(button), &widget_rect); rtgui_container_add_child(RTGUI_CONTAINER(view1), RTGUI_WIDGET(button)); rtgui_button_set_onbutton(button, UDP_Client); widget_rect.x1 = widget_rect.x2 + 10; widget_rect.x2 += 50; button = rtgui_button_create("TCPServer"); rtgui_widget_set_rect(RTGUI_WIDGET(button), &widget_rect); rtgui_container_add_child(RTGUI_CONTAINER(view1), RTGUI_WIDGET(button)); rtgui_button_set_onbutton(button, TCP_Server); widget_rect.x1 = widget_rect.x2 + 10; widget_rect.x2 += 50; button = rtgui_button_create("UDPServer"); rtgui_widget_set_rect(RTGUI_WIDGET(button), &widget_rect); rtgui_container_add_child(RTGUI_CONTAINER(view1), RTGUI_WIDGET(button)); rtgui_button_set_onbutton(button, UDP_Server); return view1; } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
811 浏览 0 评论
5258 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2680 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
3026 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
32309 浏览 11 评论
73248 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 18:55 , Processed in 0.631951 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号