大学生
最后登录1970-1-1
在线时间 小时
注册时间2017-3-19
|
1火花
问题描述: g_mynetif ,netif的内容变了,全局变量和指向全局变量的地址。
使用MCU:之前使用的是STM32F407
目前项目需要更换:使用GD32F407ZGT6
根据例程修了Lwip代码
netconf.c 文件中定义了一个全局变量
static struct netif g_mynetif;
netif_add(&g_mynetif, &ipaddr, &netmask, &gw, NULL, ðernetif_init, ðernet_input); // (1)
netif_set_default(&g_mynetif); // (2)
ethernetif_init =》low_level_init(netif); =》netif->flags |= NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP;
但是仿真的时候,全局变量 g_mynetif 和 指向 全局变量的指针 netif里面内容不一致,地址相同,数据丢失了。
从截图中可以看到 { g_mynetif ,netif}的地址都是0x20017e08,但是运行过程中,我打了一个断点数据就不对了。导致判断的时候出现了异常。
D:\Soft_Normal\Youdao\Data\weixinobU7VjjylVFJIRHXm-Xo83a5OsH8\dedcc9245cb14190b5b370f1ee31e2ea\clipboard.png
实际上代码的运行需要判断,先处于某个阶段然后启用
netif->flags & NETIF_FLAG_UP != 1
然后设置启用,判断就出现问题了,一般这种问题,会是哪里影响的,在另外一个工程没有出现这个问题,这个是全局变量啊。
|
|