基于正点原子阿波罗F429开发板的LWIP应用(3)——Netbiosns功能
说在开头
正点原子F429开发板主芯片采用的是STM32F429IGT6,网络PHY芯片采用的是LAN8720A(V1)和YT8512C(V2),采用的是RMII连接,PHY_ADDR为0;在代码中将会对不同的芯片做出适配。
CubeMX版本:6.6.1;
F4芯片组Pack包版本:STM32Cube FW_F4 V1.27.0;
准备工作:
在本次实验开始前需要先前往以下地址下载LWIP2.1.2或者2.1.3版本的源码:Index of /releases/lwip/
下载完成后解压,仅需要保留其中src文件夹的内容,接下来进入上期工程的以下路径:"Middlewares/Third_Party/LwIP",删除原有的src文件夹,将下载的LWIP源码里的src文件夹复制到LwIP文件夹内;
复制完成后编译,一样是0警告和0错误;
Netbiosns功能介绍
Netbionsns功能是一个NetBIOS名称服务器功能,开启该功能后在ping某个IP时可以通过ping它的名称代替。简单来说如果要测试某个IP是否能够到达,我们通常会采用ping IP的方式来判断。在开启Netbionsns功能后在ping IP时可以使用设备名称代替IP。但是它有几点注意事项:1、它只响应配置过的名称;2、无法检测重复名称。
代码修改:
首先将"Middlewares/Third_Party/LwIP/src/apps/netbiosns/netbiosns.c"添加进工程“Application/User/LWIP/App”分组中;
lwip.c开头添加头文件:#include "lwip/apps/netbiosns.h"
lwip.c开头添加宏定义:#define HOST_NAME "STM32F429"
lwip.c的“void MX_LWIP_Init(void)”函数“netif_set_default(&gnetif);”语句后添加以下内容:
netif_set_hostname(&gnetif, HOST_NAME); /* 此函数必须开启 LWIP_NETIF_HOSTNAME 宏定义*/
netbiosns_set_name(HOST_NAME);
netbiosns_init();
修改完成后编译:0错误,0警告;烧录后首先ping模块IP,可以ping通;之后再ping模块名称可以发现也可以ping通,我这边模块IP是(192.168.1.251),演示结果如下:
本实验源代码如下: