完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
板子是探索者F407,用原子哥的综合实验程序,可以通过USMART修改IP、子网掩码、网关等参数,并把这些参数保存到FLASH,但想让这些参数生效目前只能是重启板子,这段时间想通过硬件、软件重启网卡的方式来实现新修改的IP能够生效,但结果都是失败。不是直接导致了内存溢出,就是重启之后无法再联网。配合着使用过的函数有LAN8720_Init()、lwip_comm_init()、netif_set_down()、netif_set_up(),在这些函数里对内存的申请也做了判断 ==NULL才申请内存,或者重启之前先释放内存,目前都无法正确实现。之前觉得先用netif_set_down(),然后用netif_set_addr()配置新的IP等参数,然后再netif_set_up(),这个思路应该是可以,但用了之后直接内存溢出。现在实在不明白该如何实现了,希望大神们可以指导一下。
|
|
相关推荐
10个回答
|
|
|
|
|
|
补充一下,原子哥的netplay()我没有用到,在程序起来的时候就直接开了一个网络任务去初始化网卡那些,就是LAN8720_Init();,lwip_comm_init();然后发心跳包
|
|
|
|
[AppleScript] 纯文本查看 复制代码
u8 Change_IPValue(u16 HIPADDR0,u16 LIPADDR0,u16 HIPADDR1,u16 LIPADDR1,u16 HPORT,u16 LPORT,u16 HNET0,u16 LNET0,u16 HNET1,u16 LNET1,u16 LDRIPADDR1){u8 retry=0; struct netif *Netif_Init_Flag;//μ÷óÃnetif_add()oˉêyê±μÄ·μ»ØÖμ,óÃóúÅD¶ÏíøÂç3õê¼»ˉêÇ·ñ3é1|struct ip_addr ipaddr; //ipμØÖ·struct ip_addr netmask; //×óíøÑúÂëstruct ip_addr gw; //ĬèÏíø1Ø u16 a,b,c,d,e,f,g,h,j,k,l; a = HIPADDR0; b = LIPADDR0; c = HIPADDR1; d = LIPADDR1; e = HPORT; f = LPORT; g = HNET0; h = LNET0; j = HNET1; k = LNET1; l = LDRIPADDR1; lwip_comm_ip_set(&lwipdev,a,b,c,d,e,f,g,h,j,k,l); IP4_ADDR(&ipaddr,lwipdev.ip[0],lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]);IP4_ADDR(&netmask,lwipdev.netmask[0],lwipdev.netmask[1] ,lwipdev.netmask[2],lwipdev.netmask[3]);IP4_ADDR(&gw,lwipdev.gateway[0],lwipdev.gateway[1],lwipdev.gateway[2],lwipdev.gateway[3]); printf("DÂíø¿¨enμÄMACμØÖ·Îa:................%d.%d.%d.%d.%d.%drn",lwipdev.mac[0],lwipdev.mac[1],lwipdev.mac[2],lwipdev.mac[3],lwipdev.mac[4],lwipdev.mac[5]);printf("D¾2ì¬IPμØÖ·........................%d.%d.%d.%drn",lwipdev.ip[0],lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]);printf("DÂ×óíøÑúÂë..........................%d.%d.%d.%drn",lwipdev.netmask[0],lwipdev.netmask[1],lwipdev.netmask[2],lwipdev.netmask[3]);printf("DÂĬèÏíø1Ø..........................%d.%d.%d.%drn",lwipdev.gateway[0],lwipdev.gateway[1],lwipdev.gateway[2],lwipdev.gateway[3]); netif_set_addr(&lwip_netif,&ipaddr,&netmask,&gw);return 0;//2ù×÷OK.} |
|
|
|
u8 Change_IPValue(u16 HIPADDR0,u16 LIPADDR0,u16 HIPADDR1,u16 LIPADDR1,u16 HPORT,u16 LPORT,u16 HNET0,u16 LNET0,u16 HNET1,u16 LNET1,u16 LDRIPADDR1)
{ u8 retry=0; struct netif *Netif_Init_Flag; //μ÷óÃnetif_add()oˉêyê±μÄ·μ»ØÖμ,óÃóúÅD¶ÏíøÂç3õê¼»ˉêÇ·ñ3é1| struct ip_addr ipaddr; //ipμØÖ· struct ip_addr netmask; //×óíøÑúÂë struct ip_addr gw; //ĬèÏíø1Ø u16 a,b,c,d,e,f,g,h,j,k,l; a = HIPADDR0; b = LIPADDR0; c = HIPADDR1; d = LIPADDR1; e = HPORT; f = LPORT; g = HNET0; h = LNET0; j = HNET1; k = LNET1; l = LDRIPADDR1; lwip_comm_ip_set(&lwipdev,a,b,c,d,e,f,g,h,j,k,l); IP4_ADDR(&ipaddr,lwipdev.ip[0],lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]); IP4_ADDR(&netmask,lwipdev.netmask[0],lwipdev.netmask[1] ,lwipdev.netmask[2],lwipdev.netmask[3]); IP4_ADDR(&gw,lwipdev.gateway[0],lwipdev.gateway[1],lwipdev.gateway[2],lwipdev.gateway[3]); printf("DÂíø¿¨enμÄMACμØÖ·Îa:................%d.%d.%d.%d.%d.%drn",lwipdev.mac[0],lwipdev.mac[1],lwipdev.mac[2],lwipdev.mac[3],lwipdev.mac[4],lwipdev.mac[5]); printf("D¾2ì¬IPμØÖ·........................%d.%d.%d.%drn",lwipdev.ip[0],lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]); printf("DÂ×óíøÑúÂë..........................%d.%d.%d.%drn",lwipdev.netmask[0],lwipdev.netmask[1],lwipdev.netmask[2],lwipdev.netmask[3]); printf("DÂĬèÏíø1Ø..........................%d.%d.%d.%drn",lwipdev.gateway[0],lwipdev.gateway[1],lwipdev.gateway[2],lwipdev.gateway[3]); netif_set_addr(&lwip_netif,&ipaddr,&netmask,&gw); return 0;//2ù×÷OK. } |
|
|
|
大神就是厉害,困扰了我一周多的问题搞定了,修改完成之后,网页上直接输入IP就可以了,原来直接用netif_set_addr()这个函数就可以直接改,是自己想多了,一直想着要重启网卡什么的。对了,如果是要重启网卡的话,那有什么办法么?我现在是想着如果碰到某些极端情况的时候,在串口这边发指令让板子进行网卡重启,重启之后能够连上网络。目前对LWIP了解得不够深入,对于这一块还是挺头疼的
|
|
|
|
这个没试过。。。。一直用上面的方法
|
|
|
|
这个没试过。。。。一直用上面的方法
|
|
|
|
嗯嗯,谢谢大神啦
|
|
|
|
你好,楼主。用这个函数怎么netif_set_addr() 怎么去修改IP、网关和掩码?
|
|
|
|
struct ip_addr ipaddr; //ipμØÖ·
struct ip_addr netmask; //×óíøÑúÂë struct ip_addr gw; //ĬèÏíø1Ø IP4_ADDR(&ipaddr,ip1,ip2,ip3,ip4); netif_set_addr(&lwip_netif,&ipaddr,&netmask,&gw); 大概这个样子就可以了,IP4_ADDR(&ipaddr,ip1,ip2,ip3,ip4);这个就是你要设置的数据了,参考一下原子哥的初始化函数就能理解了 |
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2316 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2059 浏览 5 评论
2750 浏览 3 评论
2518 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2459 浏览 4 评论
5641浏览 1评论
522浏览 0评论
524浏览 0评论
301浏览 0评论
128浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-29 18:20 , Processed in 1.221497 second(s), Total 83, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号