摘要:
问题描述: 两个ambarella peanut板子的网口之间用网线直连,会发现不能自动协商成功(网口灯不亮),但是ambarella peanut板子的网口和其他X86 Linux机器网口直连可以协商成功(网口灯亮)。 对于想使用peanut板子网口作LAN口,给其他peanut 板子DHCP分配 阅读全文
摘要:
在Linux系统中,终端是一种字符型设备,它有多种类型,通常使用 tty 来简称各种类型的终端设备。tty 是 Teletype 的缩写,Teletype 是最早出现的一种终端设备,很像电传打字机,是由 Teletype 公司生产的。Linux 中包含如下几类终端设备。 1. 串行端口终端(/dev 阅读全文
摘要:
一、DM9000 网卡硬件描述 DM9000是开发板采用的网络芯片,是一个高度集成且功耗很低的告诉网络控制器,可以和 CPU 直连,支持 10/100MB 以太网连接,芯片内部自带 4KB 双字节的 SRAM (3KB用来发送, 13KB用来接收)。针对不同的处理器,接口支持 8 位、16 位和 3 阅读全文
摘要:
网络设备的驱动程序提供一些供系统对设备的参数进行设置 或 读取设备相关信息的方法。 当用户调用 ioctl() 函数,并指定 SIOCSIFHWADDR 命令时,意味着要设置这个设备的 MAC 地址。设置网络设备的 MAC 地址可用如下代码所示的模板: 1 /* 2 * 设置网络设备的 MAC 地址 阅读全文
摘要:
网络适配器硬件电路可以检测出链路上是否有载波,载波反映了网络的连接是否正常。网络设备驱动可以通过 netif_carrier_on() 和 netif_carrier_off() 函数改变设备的连接状态,如果驱动检测到连接状态发生变化,也应该以 netif_carrier_on() 和 netif_ 阅读全文
摘要:
网络设备接收数据的主要方法是由中断引发设备的中断处理函数,中断处理函数判断中断类型,如果为接收中断,则读取接收到的数据,分配 sk_buffer 数据结构和数据缓冲区,将接收到的数据复制到数据缓冲区,并调用 netif_rx() 函数将 sk_buffer 传递给上层协议。下面是完成这个过程的函数模 阅读全文
摘要:
从网络设备驱动的结构分析可知,Linux 网络子系统在发送数据包时,会调用驱动程序提供的 hard_start_transmit( ) 函数,该函数用于启动数据包的发送。在设备初始化的时候,这个函数指针需被初始化以指向设备的 xxx_tx( )函数。 网络设备驱动完成数据包发送的流程如下。 网络设备 阅读全文
摘要:
网络设备的打开函数需要完成如下工作: 使能设备使用的硬件资源,申请 I/O 区域、中断和 DMA 通道等。 调用 Linux 内核提供的 netif_start_queue( )函数,激活设备发送队列。 网络设备的关闭函数需要完成如下工作: 调用 Linux 内核提供的 netif_stop_que 阅读全文
摘要:
网络设备的初始化主要完成如下几个方面的工作。 进行硬件上的准备工作,检查网络设备是否存在,如果存在,则检测设备所使用的硬件资源。 进行软件接口上的准备工作,分配 net_device 结构体并对其数据结构和函数指针成员赋值。 获得设备的私有信息指针并初始化各成员的值。如果私有信息中包括自旋锁或信号量 阅读全文
摘要:
网络设备驱动的注册与注销由 register_netdev( ) 和 unregister_netdev( ) 函数完成,这两个函数的原型为: /** * register_netdev - register a network device * @dev: device to register * 阅读全文