同事移植旧项目的lwip到新的项目上
并做了一些调整,加了些新功能
但是网络一直都有个奇怪的bug
板卡正常设置了mac地址,无论是走交换机还是直接连PC都ping不通,但是只要把mac地址设置成全F就可以ping的通了
好家伙,把他的工程里三层外三层查了个遍
IP地址,子网掩码,网关,端口号,电脑,交换机的设置。。
LWIP的设置与配置,初始化等等查了个底朝天都没有找出来,到底为啥ping不通。。。
结果,最后发现
他居然移植的时候初始化芯片mac的时候遗漏
没有把正确的mac地址录入到stm32的mac控制器里,但是lwip的mac地址却录入了正常的地址,导致mac控制器那里的mac地址应该是全F,所以当协议栈的mac地址和lwip的mac地址都设置为全F的时候,就能够对应上正常工作了
真是够折腾了
所以把这个记录下来,方便后人能够吸取教训
博客讲述了在移植旧项目中lwip到新平台时遇到的一个诡异网络bug。尽管设置的MAC地址正常,但设备无法通过交换机或直连PC进行ping通。问题在于移植过程中,芯片MAC地址在STM32的MAC控制器中未正确录入,而 lwip 中却使用了正常地址。只有当两者都设为全F时,网络才能正常工作。这个经验教训提醒我们在移植和调试过程中要仔细检查底层硬件配置。

8659

被折叠的 条评论
为什么被折叠?



