次测试MCXN947开发板的ETH接口,官方提供了网络驱动程序,所以可以直接进行配置。本次使用的开发环境是Env环境,可以直接用命令进行编译。 在Env中使用menuconfig命令进行配置工作。官方提供了网络的驱动程序,所以可以直接进行有关网络的配置: 使能PHY驱动 在RT-Thread Components -> Device Drivers中选择Using ethernet phy device drivers 使能网络相关组件在RT-Thread Components -> Network中选择网络相关的组件 遇到的问题和解决方案 不过当直接将程序下载到开发板时遇到了一个问题,当使用ifconfig命令时,程序报告错误:ifconfig: network interface device list error. 然后使用list device命令也确实没有看到网络相关的设备。 经过仔细检查编译日志,发现drv_eth.c文件就压根没有编译。而注册网络设备的工作是在drv_eth.c文件中实现的。我检查了drv_eth.c所在目录的D:\rt-thread\bsp\nxp\mcx\mcxn\Libraries\drivers\SConscript。该文件的内容是这样的: from building import * cwd = GetCurrentDir() src = [] if GetDepend('BSP_USING_PIN'): src += ['drv_pin.c'] if GetDepend('BSP_USING_UART'): src += ['drv_uart.c'] if GetDepend('BSP_USING_RTC'): src += ['drv_rtc.c'] if GetDepend('BSP_USING_SPI'): src += ['drv_spi.c'] if GetDepend('BSP_USING_SDIO'): src += ['drv_sdio.c'] if GetDepend('BSP_USING_I2C'): src += ['drv_i2c.c'] if GetDepend('BSP_USING_ADC'): src += ['drv_adc.c'] if GetDepend('BSP_USING_DAC'): src += ['drv_dac.c'] if GetDepend('BSP_USING_HWTIMER'): src += ['drv_hwtimer.c'] if GetDepend('BSP_USING_WDT'): src += ['drv_wdt.c'] if GetDepend('BSP_USING_PWM'): src += ['drv_pwm.c'] path = [cwd,cwd + '/config'] group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path) Return('group') 从这个文件看,压根就没有添加drv_eth.c,所以即使我们在前面选择了ETH PHY的选项,也不会编译drv_eth.c文件。解决的办法是在文件中加上: if GetDepend('RT_USING_PHY'): src += ['drv_eth.c'] 修改后的文件参见:rt-thread/bsp/nxp/mcx/mcxn/Libraries/drivers/SConscript at master · zealsoftstudio/rt-thread · GitHub 测试结果 再次编译程序并下载,这次程序就可以正常运行了。 我们通过ifconfig命令很容易看到当前的网络配置。ps命令也可以看出当前的各个网络相关线程都正常运行。 再使用PING命令可以正常工作了!
|