目录
说明
此次是参加RT-Thread组织的活动,进行FRDM-MCXN947开发板的评测。本文先发于RT-Thread论坛,稍加修改后发表在我的博客。在上一篇博文中,我介绍了如何配置FRDM-MCXN947开发板的开发环境。
我的任务是测试ETH接口,也就是网络接口。开发板提供了RJ45的接口,我们先测试最基本的网络功能,然后在此基础上测试网络相关的应用程序。
menuconfig设置
我使用的开发环境是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']
测试结果
再次编译程序并下载,这次程序就可以正常运行了。
我们通过ifconfig命令很容易看到当前的网络配置。ps命令也可以看出当前的各个网络相关线程都正常运行。
再使用PING命令可以正常工作了!
下面我们将继续测试网络的其他功能。