Mini2440 DM9000 驱动分析

发布者:CelestialGarden最新更新时间:2022-01-15 来源: eefocus关键字:Mini2440  DM9000  驱动分析 手机看文章 扫描二维码
随时随地手机看文章

net_device_ops中方法的相应说明

/*

 * This structure defines the management hooks for network devices.

 * The following hooks can be defined; unless noted otherwise, they are

 * optional and can be filled with a null pointer.

 *

 * int (*ndo_init)(struct net_device *dev);

 *     This function is called once when network device is registered.

 *     The network device can use this to any late stage initializaton

 *     or semantic validattion. It can fail with an error code which will

 *     be propogated back to register_netdev

 *

 * void (*ndo_uninit)(struct net_device *dev);

 *     This function is called when device is unregistered or when registration

 *     fails. It is not called if init fails.

 *

 * int (*ndo_open)(struct net_device *dev);

 *     This function is called when network device transistions to the up

 *     state.

 *

 * int (*ndo_stop)(struct net_device *dev);

 *     This function is called when network device transistions to the down

 *     state.

 *

 * netdev_tx_t (*ndo_start_xmit)(struct sk_buff *skb,

 *                               struct net_device *dev);

 * Called when a packet needs to be transmitted.

 * Must return NETDEV_TX_OK , NETDEV_TX_BUSY.

 *        (can also return NETDEV_TX_LOCKED iff NETIF_F_LLTX)

 * Required can not be NULL.

 *

 * u16 (*ndo_select_queue)(struct net_device *dev, struct sk_buff *skb);

 * Called to decide which queue to when device supports multiple

 * transmit queues.

 *

 * void (*ndo_change_rx_flags)(struct net_device *dev, int flags);

 * This function is called to allow device receiver to make

 * changes to configuration when multicast or promiscious is enabled.

 *

 * void (*ndo_set_rx_mode)(struct net_device *dev);

 * This function is called device changes address list filtering.

 *

 * void (*ndo_set_multicast_list)(struct net_device *dev);

 * This function is called when the multicast address list changes.

 *

 * int (*ndo_set_mac_address)(struct net_device *dev, void *addr);

 * This function  is called when the Media Access Control address

 * needs to be changed. If this interface is not defined, the

 * mac address can not be changed.

 *

 * int (*ndo_validate_addr)(struct net_device *dev);

 * Test if Media Access Control address is valid for the device.

 *

 * int (*ndo_do_ioctl)(struct net_device *dev, struct ifreq *ifr, int cmd);

 * Called when a user request an ioctl which can't be handled by

 * the generic interface code. If not defined ioctl's return

 * not supported error code.

 *

 * int (*ndo_set_config)(struct net_device *dev, struct ifmap *map);

 * Used to set network devices bus interface parameters. This interface

 * is retained for legacy reason, new devices should use the bus

 * interface (PCI) for low level management.

 *

 * int (*ndo_change_mtu)(struct net_device *dev, int new_mtu);

 * Called when a user wants to change the Maximum Transfer Unit

 * of a device. If not defined, any request to change MTU will

 * will return an error.

 *

 * void (*ndo_tx_timeout)(struct net_device *dev);

 * Callback uses when the transmitter has not made any progress

 * for dev->watchdog ticks.

 *

 * struct net_device_stats* (*ndo_get_stats)(struct net_device *dev);

 * Called when a user wants to get the network device usage

 * statistics. If not defined, the counters in dev->stats will

 * be used.

 *

 * void (*ndo_vlan_rx_register)(struct net_device *dev, struct vlan_group *grp);

 * If device support VLAN receive accleration

 * (ie. dev->features & NETIF_F_HW_VLAN_RX), then this function is called

 * when vlan groups for the device changes.  Note: grp is NULL

 * if no vlan's groups are being used.

 *

 * void (*ndo_vlan_rx_add_vid)(struct net_device *dev, unsigned short vid);

 * If device support VLAN filtering (dev->features & NETIF_F_HW_VLAN_FILTER)

 * this function is called when a VLAN id is registered.

 *

 * void (*ndo_vlan_rx_kill_vid)(struct net_device *dev, unsigned short vid);

 * If device support VLAN filtering (dev->features & NETIF_F_HW_VLAN_FILTER)

 * this function is called when a VLAN id is unregistered.

 *

 * void (*ndo_poll_controller)(struct net_device *dev);

 */

#define HAVE_NET_DEVICE_OPS

struct net_device_ops {

int (*ndo_init)(struct net_device *dev);

void (*ndo_uninit)(struct net_device *dev);

int (*ndo_open)(struct net_device *dev);

int (*ndo_stop)(struct net_device *dev);

netdev_tx_t (*ndo_start_xmit) (struct sk_buff *skb,

   struct net_device *dev);

u16 (*ndo_select_queue)(struct net_device *dev,

    struct sk_buff *skb);

#define HAVE_CHANGE_RX_FLAGS

void (*ndo_change_rx_flags)(struct net_device *dev,

       int flags);

#define HAVE_SET_RX_MODE

void (*ndo_set_rx_mode)(struct net_device *dev);

#define HAVE_MULTICAST

void (*ndo_set_multicast_list)(struct net_device *dev);

#define HAVE_SET_MAC_ADDR

int (*ndo_set_mac_address)(struct net_device *dev,

       void *addr);

#define HAVE_VALIDATE_ADDR

int (*ndo_validate_addr)(struct net_device *dev);

#define HAVE_PRIVATE_IOCTL

int (*ndo_do_ioctl)(struct net_device *dev,

        struct ifreq *ifr, int cmd);

#define HAVE_SET_CONFIG

int (*ndo_set_config)(struct net_device *dev,

          struct ifmap *map);

#define HAVE_CHANGE_MTU

int (*ndo_change_mtu)(struct net_device *dev,

  int new_mtu);

int (*ndo_neigh_setup)(struct net_device *dev,

   struct neigh_parms *);

#define HAVE_TX_TIMEOUT

void (*ndo_tx_timeout) (struct net_device *dev);

 

struct net_device_stats* (*ndo_get_stats)(struct net_device *dev);

 

void (*ndo_vlan_rx_register)(struct net_device *dev,

        struct vlan_group *grp);

void (*ndo_vlan_rx_add_vid)(struct net_device *dev,

       unsigned short vid);

void (*ndo_vlan_rx_kill_vid)(struct net_device *dev,

        unsigned short vid);

#ifdef CONFIG_NET_POLL_CONTROLLER

#define HAVE_NETDEV_POLL

void                    (*ndo_poll_controller)(struct net_device *dev);

#endif

#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE)

int (*ndo_fcoe_enable)(struct net_device *dev);

int (*ndo_fcoe_disable)(struct net_device *dev);

int (*ndo_fcoe_ddp_setup)(struct net_device *dev,

      u16 xid,

      struct scatterlist *sgl,

      unsigned int sgc);

int (*ndo_fcoe_ddp_done)(struct net_device *dev,

     u16 xid);

#endif

};

ethtool_ops 中方法的相应说明

/**

 * ðtool_ops - Alter and report network device settings

 * get_settings: Get device-specific settings

 * set_settings: Set device-specific settings

 * get_drvinfo: Report driver information

 * get_regs: Get device registers

 * get_wol: Report whether Wake-on-Lan is enabled

 * set_wol: Turn Wake-on-Lan on or off

 * get_msglevel: Report driver message level

 * set_msglevel: Set driver message level

 * nway_reset: Restart autonegotiation

 * get_link: Get link status

 * get_eeprom: Read data from the device EEPROM

 * set_eeprom: Write data to the device EEPROM

 * get_coalesce: Get interrupt coalescing parameters

 * set_coalesce: Set interrupt coalescing parameters

 * get_ringparam: Report ring sizes

 * set_ringparam: Set ring sizes

 * get_pauseparam: Report pause parameters

 * set_pauseparam: Set pause parameters

 * get_rx_csum: Report whether receive checksums are turned on or off

 * set_rx_csum: Turn receive checksum on or off

 * get_tx_csum: Report whether transmit checksums are turned on or off

 * set_tx_csum: Turn transmit checksums on or off

 * get_sg: Report whether scatter-gather is enabled

 * set_sg: Turn scatter-gather on or off

 * get_tso: Report whether TCP segmentation offload is enabled

 * set_tso: Turn TCP segmentation offload on or off

 * get_ufo: Report whether UDP fragmentation offload is enabled

 * set_ufo: Turn UDP fragmentation offload on or off

 * self_test: Run specified self-tests

 * get_strings: Return a set of strings that describe the requested objects 

 * phys_id: Identify the device

 * get_stats: Return statistics about the device

 * get_flags: get 32-bit flags bitmap

 * set_flags: set 32-bit flags bitmap

 * 

 * Description:

 *

 * get_settings:

 * @get_settings is passed an ðtool_cmd to fill in.  It returns

 * an negative errno or zero.

 *

 * set_settings:

 * @set_settings is passed an ðtool_cmd and should attempt to set

 * all the settings this device supports.  It may return an error value

 * if something goes wrong (otherwise 0).

 *

 * get_eeprom:

 * Should fill in the magic field.  Don't need to check len for zero

 * or wraparound.  Fill in the data argument with the eeprom values

 * from offset to offset + len.  Update len to the amount read.

 * Returns an error or zero.

 *

 * set_eeprom:

 * Should validate the magic field.  Don't need to check len for zero

 * or wraparound.  Update len to the amount written.  Returns an error

 * or zero.

 */

struct ethtool_ops {

int (*get_settings)(struct net_device *, struct ethtool_cmd *);

[1] [2]
关键字:Mini2440  DM9000  驱动分析 引用地址:Mini2440 DM9000 驱动分析

上一篇:mini2440一线总线移植tslib1.4
下一篇:Mini2440 DM9000 驱动分析(三)

推荐阅读最新更新时间:2024-11-10 10:16

解决mini2440声卡全双工问题 实现同时录音及播放
#include unistd.h #include fcntl.h #include sys/types.h #include sys/ioctl.h #include stdlib.h #include stdio.h #include linux/soundcard.h #include pthread.h #define LENGTH 3 #define RATE 8000 #define SIZE 8 #define CHANNELS 1 unsigned char buf ; int main() { int fd_r,fd_w;
[单片机]
Linux设备驱动开发 - LCD设备驱动分析
一、S3C6410 LCD驱动裸机代码 LCD控制器初始化: 1 unsigned long VideoBuffer = {0}; 2 void lcd_init(void) 3 { 4 /* 1.初始化IO端口为LCD端口 */ 5 /* GPIO configure */ 6 GPICON = 0xAAAAAAAA; 7 GPJCON = 0x00AAAAAA; 8 9 /* 2.使能LCD时钟 */ 10 //HCLK_GATE |= (1 3); //默认打开 11 12 MIFPCON &=~(1 3); 13 14 /* 3.设置I/F类型 *
[单片机]
Linux设备<font color='red'>驱动</font>开发 - LCD设备<font color='red'>驱动</font><font color='red'>分析</font>
利用jlink command 烧写uboot到mini2440 nand flash方法
//说明:我的板子是mini2440 有2M的s29al016j nor flash 和一块 256M的 k9f2608u0b nand flash。 //这篇文章并非全部原创,只是把网友“sblpp”在https://bbs.eeworld.com.cn/thread-144846-1-1.html 的帖子修改了并附图。需要说明的是uboot.bin这个文件必须支持nand flash 驱动 //使用的uboot.bin 是网友tekkaman移植的。大家可以到这里下载:http://blog.chinaunix.net/uid-20543672-id-94362.html,也可以从这里下载 u-boot.zip //下面用的初
[单片机]
mini2440存储器的理解和使用
S3C2440是32位的处理器理论寻址范围为2^32即4G,S3C2440使用 作为地址线,寻址范围128M,使用 作为bank选择信号,所以S3C2440可以连接8个外设,如果全部连接存储器就可以达到1GB的内存。在S3C2440中内存为64MB,它使用了第6和第7个bank连接两片32MB的SDAM。由于外设多种多样其位宽也不尽相同,所以每个bank的数据宽度是可以软件编程控制的。 为什么下载程时要下载到0x30000000地址单元执行,或下载文件到0x30000000地址单元再通过写操作写到NAND FLASH? 因为两片SDARM在bank6和bank7上面连接,通过 的信号决定选择那块bank,所以bank6的起
[单片机]
对<font color='red'>mini2440</font>存储器的理解和使用
mini2440开发板网络设置(永久改变,重启后不恢复)
mini2440开发板网络设置最简单的办法就是进行ifconfig设置,不过这样设置以后,重启开发板ifconfig后的ip、网关等依然还是设置前的ip、网关。那么如何设置使得复位或重启开发板后ifconfig看到理想的ip呢?以下是设置步骤: 1、因为ifconfig后看到的ip、子网掩码、默认网关等信息在开发板的/etc/eth0-setting 文件中。所以 #vi /etc/eth0-setting 2、在打开的文件中修改相应的IP、Mask、DNS等信息;然后:wq保存、退出。 3、重启eth0 # /etc/init.d/ifconfig-eth0 restart 到此就修改完了,重新ifconfig就会看到自己想
[单片机]
uCOS_II 移植到友善之臂mini2440
1. 准备源代码 在官网或者其他地方找到源代码,我所用版本为以前下载的版本号V2.51。源码有16个文件,其中体系结构无关的 OS_CORE.C OS_MBOX.C OS_FLAG..C OS_SEM.C OS_Q.C OS_MUTEX.C OS_TASK.C OS_TIME.C OS_MEM.C uCOS_II.C (没用到) OS_CONFIG.H uCOS_II.H INCLUDE.H 与体系结构相关的文件有三个 OS_CPU.H OS_CPU_A.S OS_CPU_C.C 二.选取开发环境ADS 1.2。(编译器的选择要考虑是否可以生成可重入性代码) 三
[单片机]
uCOS_II 移植到友善之臂<font color='red'>mini2440</font>
LED照明驱动电源设计中问题分析
LED 的排列方式及LED 光源的规范决定着基本的驱动器要求。LED驱动器的主要功能就是在一定的工作条件范围下限制流过LED的电流,而无论输入及输出电压如何变化。最常用的是采用变压器来进行电气隔离。文中论述了LED照明设计需要考虑的因素。 一、LED驱动器通用要求 驱动LED 面临着不少挑战,如正向电压会随着温度、电流的变化而变化,而不同个体、不同批次、不同供应商的LED 正向电压也会有差异;另外,LED 的“色点”也会随着电流及温度的变化而漂移。 另外,应用中通常会使用多颗LED,这就涉及到多颗LED 的排列方式问题。各种排列方式中,首选驱动串联的单串LED,因为这种方式不论正向电压如何变化、输出电压(Vout)如何
[电源管理]
LED照明<font color='red'>驱动</font>电源设计中问题<font color='red'>分析</font>
mini2440一线总线移植tslib1.4
最近在学习中接触到了触摸库tslib,自己试着移植的时候发现网上分为两种方案,一种是使用2440自带AD的方案,另一种是友善的一线总线方案。我的液晶型号是TD35,默认的连接方案是一线总线,所以这里移植的是一线总线方案。 上网搜索的过程中发现网上可用的一线总线tslib并不是1.4版本的,但是编译后使用是没有问题的,抱着试一试的心态决定移植一下1.4版本的tslib到MINI2440,经过实验,成功将tslib的1.4版本移植到了mini2440. 移植主要是将友善提供的one_wire_ts_input.c文件添加到对应位置,修改配置文件就可以了。 下面列出补丁文件 diff -ru tslib/configur
[单片机]

推荐帖子

直流供电电路中,关于电源并联二极管、电容作用的思考与总结
问题:直流供电电路中,电源并联一个整流二极管的作用。解析:1.防止电源接反。a)电源接反,二极管导通相当于电源短路,电流很大(2A甚至更大),如果电源有保护就保护了,没保护就烧电源。对于有保护的电源,要求二极管的耐压值高于电源电压和最大正向电流高于电源的限制电流(保护电路的保护值或者保险丝的电流值),否则烧坏二极管,并且电路依然会在二极管烧坏之后被烧坏(待补充)。2.防止外电路反灌。a)电源没反接的情况下,如果外电路接了储能元件如电
木犯001号 电源技术
开放式现场总线CC-Link特性
1996年,三菱电机以“多厂家设备环境、高性能、省配线”理念开发、公布和开放了现场总线CC-Link。  CC-Link是Control&CommunicationLink(控制与通信链路系统)的简称。具有性能卓越、应用广泛使用简单节省成本等突出优点。  一般而言,我们将网络系统分为3至4个层次:管理层、控制器层、部件层,部件层也就是指装置层和传感器层。由于CC-Link的数据容量大,通信速度多级可选择,CC-Link是一个复合的、开放的、适应性强的网络系统,能够适应于较高的管理
totopper 工控电子
线性相位
本帖最后由paulhyde于2014-9-1509:33编辑线性相位线性相位本帖最后由paulhyde于2014-9-1509:33编辑嗯,直流放大用的,楼主有心了。本帖最后由paulhyde于2014-9-1509:33编辑嗯,直流放大用的,楼主有心了本帖最后由paulhyde于2014-9-1509:33编辑谢谢。。。真的是需要这个理论呢。。。本帖最后由paulhyde于2014-9-15
miaorui2008 电子竞赛
高手谈嵌入式调试的复杂性
嵌入式系统的调试往往很复杂,可用的手段并不像PC编程那么多,开发成本较PC系统也要大很多。嵌入式系统调试主要手段只有JTAG为代表的单步追踪、printf夹杀大法等。这两种调试方法在嵌入式中也不尽然全部能解决问题。Jtag需要调试者有一个调试设备(有可能很昂贵),和目标系统相连。使用类似GDBClient等软件登录调试设备,跟踪运行程序。说实话,这个方法对嵌入式来讲是终极的调试办法,也是比较好的调试方法。但仍然有几个不足,当断点过多时,超出硬件的限制,某些低档的CPU不支持更多的断
jingcheng stm32/stm8
有没有人给点PID控制的程序?
拜托各位了,小弟最近在高PID控制,自己用C语言写的不准确,请高手赐教一下,最好是解释的比较清楚的那种。我的邮箱:sishuiliunian902@163.com有没有人给点PID控制的程序?
wzh320 单片机
请问这个红外接收头是什么型号?能用哪个型号代替?谢谢
网络电视盒子上的,SEK1FN3L|K1EA请问这个红外接收头是什么型号?能用哪个型号代替?谢谢 现在一般都是一体化红外接收头只要管脚对得起来一般都能用。具体可以试试在看。 手里有两个VS1838B,昨天试了一下,不能用,所以来问问。今天再试试看。谢谢 看看手里的和你板子上的引脚是否对得上,不行得画要把管脚交叉连起来。就算电压地输出三个腿要能连接对。看板子看你手上得接收头资料。红外遥控接收?不同型号的应该可以互相替用吧
liys_sunny RF/无线
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved