3.5数据包接收 数据包的接收是通过中断处理,当有数据到达时,就产生中断信号,网络设备驱能层就调用数据包接收程序来处理数据包的接收,然后网络协议接口层调用netif_rx函数把接收到的数据包传输到网络协议的上层请看如下
3.5数据包接收
数据包的接收是通过中断处理,当有数据到达时,就产生中断信号,网络设备驱能层就调用数据包接收程序来处理数据包的接收,然后网络协议接口层调用netif_rx函数把接收到的数据包传输到网络协议的上层进行处理。
DM9000A接收缓存区中的每帧数据由4字节长的首部、有效数据和CRC校验序列构成。首部4字节依次是01H、以太网帧状态、以太网帧长度低字节和长度高字节,数据包接收程序首先检测如果第一个字节是01H,则说明有数据;如果是00H,则说明无数据,需要进行复位。然后调用函数dev_alloc_skb申请一块sK_buff结构缓冲区,从DM9000A读出数据放置到缓冲区里,根据获取的长度信息,判断是否读完一帧。如果读完,接着读下一帧,直到遇到首字节是00H的帧,说明接收数据已读完。接下来填充sK_buff中的一些信息,使之成为规范的sk_buff结构,最后调用netif_rx()函数将接收到的数据传输到网络协议的上层。
最后,可通过两种方法加载网络设备驱动程序:系统内核加载和模块加载。
4网络的应用及测试
通过读取/proc/net中的信息得到当前系统中的网络设备,通过它来测试:
#cat/proc/net/dev
Linux网络配置可在应用程序中通过ifconfig和router两个命令实现,它们都可以在busybox软件包中找到。可用以下命令来配置ip、网关、子网掩码和域名解析服务器:
#ifconfigeth0192.168.0.11O
#routeadd-netdeultgw192.168.0.254netmask255.255.255.0
#nameserver202.106.196.115
最后,通过Ping命令,来测试一下和主机的通信是否联通。在本系统中通过。
在嵌入式应用程序开发及调试中,NFS起着非常重要的应用。不但可以通过NFS文件系统共享远程硬盘的文件,我们还可以mount远程文件系统直接作为嵌入式的根文件系统。
5结论
本文完成了Linux下扩展以太网接口及测试网络接口的研究,采用了以太网芯片DM9000,围绕太分析了嵌入式Linux网络的基本原理。最后我的嵌入式设备顺利连上网络。同时本文为移植2.6内核的网络部分提供了移植方法。
tags:192.168.0.25