Linux系统移植(第2版):第9章 网卡驱动程序移植

上传人:努力****83 文档编号:193017176 上传时间:2023-03-07 格式:PPTX 页数:64 大小:672.62KB
收藏 版权申诉 举报 下载
Linux系统移植(第2版):第9章 网卡驱动程序移植_第1页
第1页 / 共64页
Linux系统移植(第2版):第9章 网卡驱动程序移植_第2页
第2页 / 共64页
Linux系统移植(第2版):第9章 网卡驱动程序移植_第3页
第3页 / 共64页
资源描述:

《Linux系统移植(第2版):第9章 网卡驱动程序移植》由会员分享,可在线阅读,更多相关《Linux系统移植(第2版):第9章 网卡驱动程序移植(64页珍藏版)》请在装配图网上搜索。

1、第9章 网卡驱动程序移植9.1 以太网概述9.2 网络设备驱动程序体系结构9.3 net_device 数据结构9.4 DM9000网卡概述9.5 DM9000网卡驱动程序移植9.1 以太网概述9.1.1 以太网连接9.1.2 以太网技术概述9.1.3 以太网的帧结构9.1.1 以太网连接以太网技术规范中规定了以太网的拓扑结构、传输介质和工作模式,以下分别对其进行描述。1.以太网的拓扑结构2.以太网接口的工作模式3.传输介质1.以太网的拓扑结构以太网拓扑结构有总线型和星型。总线型:总线型网络所采用的传输介质一般也是同轴电缆(包括粗缆和细缆),不过现在也有采用光缆作为总线型传输介质的。星型:网络

2、中的各工作站结点设备通过一个网络集中设备(如集线器或者交换机)连接在一起,各个结点呈星状分布,这便是星型结构。2.以太网接口的工作模式以太网卡可以工作在以下两种模式下:半双工与全双工。半双工:半双工就是指一个时间段内只有一个动作发生。全双工:全双工(Full Duplex)是指网卡在发送数据的同时也能够接收数据,两者同时进行。3.传输介质以太网中采用了多种传输介质,包括同轴缆、双绞线和光纤等。9.1.2 以太网技术概述以下简单概述以太网的相关技术标准。1.以太网的工作原理2.Ethernet地址3.数据链路层1.以太网的工作原理(1)先检测网络查看是否有其他主机正在传输,即监听信道是否空闲。(

3、2)如果信道忙,则等待,直到信道空闲;如果信道闲,站点就传输数据。(3)在发送数据的同时,主机继续监听网络并确信没有其他主机在同时传输数据。(4)当一个传输结点识别出一个冲突,它就发送一个拥塞信号,这个信号使得冲突的时间足够长,让其他的结点都能发现。(5)其他结点收到拥塞信号后,都停止传输,等待一个随机产生的时间间隙(回退时间,Backoff Time)后重发。2.Ethernet地址以太网中通过给每台主机上的网络适配器(网络接口卡)分配一个唯一的通信地址标识以太网上的每台计算机,通常也称为网卡的物理地址、MAC地址。3.数据链路层数据链路层位于OSI参考模型中的第二层,介乎于物理层及网络层之

4、间。数据链路层在物理层提供服务的基础上向网络层提供服务。局域网的数据链路层具有介质访问控制的功能。一般数据链路层划分成两个子层。9.1.3 以太网的帧结构在Ethernet中有几种不同的帧格式,下面就简单介绍一下几种不同的帧格式及它们的差异,先分别列出各种格式的名称。Ethernet II即DIX 2.0Ethernet 802.3 rawEthernet 802.3 SAPEthernet 802.3 SNAP1Ethernet II帧格式2Ethernet 802.3 raw帧格式3Ethernet 802.3 SAP帧格式4Ethernet 802.3 SNAP帧格式9.2 网络设备驱动

5、程序体系结构9.2.1 嵌入式Linux网络驱动程序介绍9.2.2 Linux网络设备驱动的体系结构9.2.3 网络设备驱动程序编写方法9.2.4 网络设备驱动程序应用实例9.2.1 嵌入式Linux网络驱动程序介绍通常,Linux驱动程序有两种加载方式:一种是静态地编译进内核,内核启动时自动加载;另一种是编写为内核模块,使用insmod命令将模块动态加载到正在运行的内核,不需要时可用rmmod命令将模块卸载。Linux 2.6内核引入了kbuild机制,将外部内核模块的编译同内核源码树的编译统一起来,大大简化了特定参数和宏的设置。9.2.2 Linux网络设备驱动的体系结构如图9.8所示,L

6、inux网络驱动程序的体系结构可划分为4个层次,即网络协议接口层、网络设备接口层、提供实际功能的设备驱动功能层及设备物理媒介层。9.2.3 网络设备驱动程序编写方法网络设备驱动程序编写包括网络设备的初始化,数据包发送和接收函数的编写及其他相关内容。1.初始化2.数据包的发送与接收3.实现模式1.初始化网络设备的初始化主要是由device数据结构中的init函数指针所指的初始化函数来完成的,当内核启动或加载网络驱动模块的时候,就会调用初始化过程。最后调用registre_netdevice()向Linux内核中注册该设备并申请内存空间。2.数据包的发送与接收数据包的发送和接收是实现Linux网络

7、驱动程序中两个最重要的过程,对这两个过程处理的成功与否将直接影响到驱动程序的整体运行质量。数据包接收是通过系统的中断机制来完成的。3.实现模式实现Linux网络设备驱动的功能主要有两种形式,一是通过内核进行加载,当内核启动的时候,就开始加载网络设备驱动程序,内核启动完成之后,网络驱动功能也随即实现了,再就是通过模块加载的形式。比较这两种形式,第二种形式更灵活些,在此重点对模块加载形式进行讨论。9.2.4 网络设备驱动程序应用实例以ne2000兼容网卡为例,来具体介绍基于模块的网络驱动程序的设计过程。可以参考文件linux/drivers/net/ne.c和linux/drivers/net/8

8、390.c。1.模块加载和卸载2网络接口初始化1.模块加载和卸载ne2000网卡的模块加载功能由init_module()函数完成。模块卸载功能由cleanup_module()函数。2网络接口初始化实现此功能是由ne_probe()函数完成的,前面已经提到过,在init_module()函数中用它来初始化init()函数指针。它主要对网卡进行检测,并且初始化系统中网络设备信息用于后面的网络数据的发送和接收。9.3 net_device 数据结构9.3.1 全局信息9.3.2 硬件信息9.3.3 接口信息9.3.4 设备方法9.3.5 公用成员9.3.1 全局信息结构体net_device的第

9、一部分由下面成员组成:char nameIFNAMSIZ /设备名字unsigned long state /设备状态struct net_device*next /全局列表中指向下一个设备的指针。int(*init)(struct net_device*dev)/一个初始化函数。9.3.2 硬件信息下面的成员包含了相对简单的设备低层硬件信息。它们是早期 Linux 网络的延续;大部分现代驱动确实使用它们(可能的例外是 if_port)。unsigned long rmem_endunsigned long rmem_startunsigned long mem_endunsigned lon

10、g mem_start /设备内存信息unsigned long base_addr /这个成员表示网络接口的I/O基地址。unsigned char irq /表示中断号unsigned char if_port /在多端口设备中,这里表示使用的端口。unsigned char dma /为设备分配的DMA通道9.3.3 接口信息有关接口的大部分信息是由ether_setup函数设置的(或者任何其他对给定硬件类型适合的设置函数)。以太网卡可以通过这个通用的函数设置大部分接口信息成员,要指出的是flags和dev_addr成员是特定设备的,须在初始化时明确指定。9.3.4 设备方法网络接口的设

11、备方法可分为2组:基本的和可选的。基本的方法包括那些必需的能够使用接口的;可选的方法实现更多高级的不是严格要求的功能。下列是基本方法:int(*open)(struct net_device*dev);/打开接口int(*stop)(struct net_device*dev);/停止接口int(*hard_start_xmit)(struct sk_buff*skb,struct net_device*dev);/起始报文的发送方法int(*hard_header)(struct sk_buff*skb,struct net_device*dev,unsigned short type,vo

12、id*daddr,void*saddr,unsigned len);/用之前取到的源和目的硬件地址来建立硬件头的函数(在hard_start_xmit前调用)。int(*rebuild_header)(struct sk_buff*skb);/用来在ARP解析完成后但是在报文发送前重建硬件头的函数。void(*tx_timeout)(struct net_device*dev);/一个报文发送没有在一个合理的时间内完成时,由网络代码调用的方法。struct net_device_stats*(*get_stats)(struct net_device*dev);/任何时候当一个应用程序需要获取

13、接口的统计信息时,调用这个方法。int(*set_config)(struct net_device*dev,struct ifmap*map);/改变接口配置。9.3.5 公用成员结构net_device剩下的数据成员由接口使用。有些是ifconfig和netstat用来提供给用户关于当前配置的信息。因此,接口应该给这些成员赋值:unsigned long trans_start;unsigned long last_rx;/保存一个jiffy值的成员int watchdog_timeo;/网络层认为一个传送超时发生前应当过去的最小时间(按jiffy计算)。void*priv;filp-pr

14、ivate_data的对等者。struct dev_mc_list*mc_list;int mc_count;/处理组播发送的成员。c_count是mc_list中的项数目。spinlock_t xmit_lock;int xmit_lock_owner;/xmit_lock用来避免对驱动的hard_start_xmit()函数多个同时调用。xmit_lock_owner是已获得xmit_lock的CPU号。9.4 DM9000网卡概述9.4.1 DM9000网卡总体介绍9.4.2 DM9000网卡的特点9.4.1 DM9000网卡总体介绍DM9000是一种快速以太网控制处理器,它合成了MAC

15、、PHY和MMU。DM9000还集成了接收缓冲区。DM9000还提供介质无关接口。9.4.2 DM9000网卡的特点DM9000网卡具有如下特点。支持处理器读写内部存储器的数据操作命令以字节/字/双字的长度进行;集成10/100M自适应收发器;支持介质无关接口;支持背压模式半双工流量控制模式;IEEE 802.3x流量控制的全双工模式;支持唤醒帧,链路状态改变和远程的唤醒;4K双字SRAM;支持自动加载EEPROM里面生产商ID和产品ID;支持4个通用输入输出口;超低功耗模式;功率降低模式;电源故障模式;可选择1:1 YL18-2050S,YT37-1107S 或5 4变压比例的变压器降低格外

16、功率;兼容3.3V和5.0V输入输出电压;100脚CMOS LQFP封装工艺。9.4.3 内部寄存器DM9000包含一系列可被访问的控制状态寄存器,这些寄存器是字节对齐的,它们在硬件或软件复位时被设置成初始值,以下为DM9000的寄存器功能详解。1.网络控制寄存器(NCR)网络控制寄存器用于对DM9000工作状态的控制,可以使DM9000复位。功功 能能位位描描 述述EXT_PHY71选择外部选择外部PHY,0选择内部选择内部PHY,不受软件复位影响,不受软件复位影响WAKEEN6事件唤醒使能,事件唤醒使能,1使能,使能,0禁止并清除事件唤醒状态,不受软件复位影响禁止并清除事件唤醒状态,不受软

17、件复位影响保留保留5 FCOL41强制冲突模式,用于用户测试强制冲突模式,用于用户测试FDX3全双工模式。内部全双工模式。内部PHY模式下只读,外部模式下只读,外部PHY下可读写下可读写LBK1-2回环模式(回环模式(Loopback)00通常,通常,01MAC内部回环,内部回环,10内部内部PHY 100M模式数字回环,模式数字回环,11保留保留RST01软件复位,软件复位,10us后自动清零后自动清零2.网络状态寄存器(NSR)网络状态寄存器,通过该寄存器可以获知DM9000当前的工作状态,例如是否处于连接状态,发送数据是否完毕,是否处于睡眠状态等。功功 能能位位描描 述述SPEED7媒介

18、速度,在内部媒介速度,在内部PHY模式下,模式下,0为为100Mbps,1为为10Mbps。当。当LINKST=0时,此位不用时,此位不用LINKST6连接状态,在内部连接状态,在内部PHY模式下,模式下,0为连接失败,为连接失败,1为已连接为已连接WAKEST5唤醒事件状态。读取或写唤醒事件状态。读取或写1将清零该位。不受软件复位影响将清零该位。不受软件复位影响保留保留4 TX2END3TX(发送)数据包(发送)数据包2完成标志,读取或写完成标志,读取或写1将清零该位。数据包指针将清零该位。数据包指针2传输完成传输完成TX2END2TX(发送)数据包(发送)数据包1完成标志,读取或写完成标志

19、,读取或写1将清零该位。数据包指针将清零该位。数据包指针1传输完成传输完成RXOV1RX(接收)(接收)FIFO(先进先出缓存)溢出标志(先进先出缓存)溢出标志保留保留0 3.发送控制寄存器(TCR)发送控制寄存器,可以控制发送使能。功功 能能位位描描 述述保留保留7 TJDIS6Jabber传输使能。传输使能。1使能使能Jabber传输定时器(传输定时器(2048字节),字节),0禁止禁止EXCECM5额外冲突模式控制。额外冲突模式控制。0当额外的冲突计数多于当额外的冲突计数多于15则终止本次数则终止本次数据包,据包,1始终尝试发送本次数据包始终尝试发送本次数据包PAD_DIS24禁止为数据

20、包指针禁止为数据包指针2添加添加PADCRC_DIS23禁止为数据包指针禁止为数据包指针2添加添加CRC校验校验PAD_DIS22禁止为数据包指针禁止为数据包指针1添加添加PADCRC_DIS21禁止为数据包指针禁止为数据包指针1添加添加CRC校验校验TXREQ0TX(发送)请求。发送完成后自动清零该位(发送)请求。发送完成后自动清零该位4.数据包指针1的发送状态寄存器1(TSR_I)数据包指针1的发送状态寄存器1功能描述。功功 能能位位描描 述述TJTO7Jabber传输超时。该位置位表示由于多于传输超时。该位置位表示由于多于2048字节数据被传输而字节数据被传输而导致数据帧被截掉导致数据帧

21、被截掉LC6载波信号丢失。该位置位表示在帧传输时发生红载波信号丢失。在内部载波信号丢失。该位置位表示在帧传输时发生红载波信号丢失。在内部回环模式下该位无效回环模式下该位无效NC5无载波信号。该位置位表示在帧传输时无载波信号。在内部回环无载波信号。该位置位表示在帧传输时无载波信号。在内部回环模式下该位无效模式下该位无效LC4冲突延迟。该位置位表示在冲突延迟。该位置位表示在64字节的冲突窗口后又发生冲突字节的冲突窗口后又发生冲突COL3数据包冲突。该位置位表示传输过程中发生冲突数据包冲突。该位置位表示传输过程中发生冲突EC2额外冲突。该位置位表示由于发生了第额外冲突。该位置位表示由于发生了第16次

22、冲突(即额外冲突)次冲突(即额外冲突)后,传送被终止后,传送被终止保留保留1-0 5.数据包指针2的发送状态寄存器2(TSR_II)数据包指针2的发送状态寄存器2功能描述。功功 能能位位描描 述述TJTO7Jabber传输超时。该位置位表示由于多于传输超时。该位置位表示由于多于2048字节数据被传字节数据被传输而导致数据帧被截掉输而导致数据帧被截掉LC6载波信号丢失。该位置位表示在帧传输时发生红载波信号丢失。载波信号丢失。该位置位表示在帧传输时发生红载波信号丢失。在内部回环模式下该位无效在内部回环模式下该位无效NC5无载波信号。该位置位表示在帧传输时无载波信号。在内部无载波信号。该位置位表示在

23、帧传输时无载波信号。在内部回环模式下该位无效回环模式下该位无效LC4冲突延迟。该位置位表示在冲突延迟。该位置位表示在64字节的冲突窗口后又发生冲突字节的冲突窗口后又发生冲突COL3数据包冲突。该位置位表示传输过程中发生冲突数据包冲突。该位置位表示传输过程中发生冲突EC2额外冲突。该位置位表示由于发生了第额外冲突。该位置位表示由于发生了第16次冲突(即额外冲次冲突(即额外冲突)后,传送被终止突)后,传送被终止保留保留1-0 6.接收控制寄存器(RCR)接收控制寄存器,可以控制接收使能。功功 能能位位描描 述述保留保留7 WTDIS6看门狗定时器禁止。看门狗定时器禁止。1禁止,禁止,0使能使能DI

24、S_LONG5丢弃长数据包。丢弃长数据包。1为丢弃数据包长度超过为丢弃数据包长度超过1522字节的数字节的数据包据包DIS_CRC4丢弃丢弃CRC校验错误的数据包校验错误的数据包ALL3忽略所有多点传送忽略所有多点传送RUNT2忽略不完整的数据包忽略不完整的数据包PRMSC1混杂模式(混杂模式(Promiscuous Mode)RXEN0接收使能接收使能7.接收状态寄存器(RSR)功功 能能位位描描 述述RF7不完整数据帧。该位置位表示接收到小于不完整数据帧。该位置位表示接收到小于64字节的帧字节的帧MF6多点传送帧。该位置位表示接收到帧包含多点传送地址多点传送帧。该位置位表示接收到帧包含多点

25、传送地址LCS5冲突延迟。该位置位表示在帧接收过程中发生冲突延迟冲突延迟。该位置位表示在帧接收过程中发生冲突延迟RWTO4接收看门狗定时溢出。该位置位表示接收到大于接收看门狗定时溢出。该位置位表示接收到大于2048字节数字节数据帧据帧PLE3物理层错误。该位置位表示在帧接收过程中发生物理层错误物理层错误。该位置位表示在帧接收过程中发生物理层错误AE2对齐错误(对齐错误(Alignment)。该位置位表示接收到的帧结尾处)。该位置位表示接收到的帧结尾处不是字节对齐,即不是以字节为边界对齐不是字节对齐,即不是以字节为边界对齐CE1CRC校验错误。该位置位表示接收到的帧校验错误。该位置位表示接收到的

26、帧CRC校验错误校验错误FOE0接收接收FIFO缓存溢出。该位置位表示在帧接收时发生缓存溢出。该位置位表示在帧接收时发生FIFO溢出溢出8.接收/发送溢出控制寄存器(RTFCR)功功 能能位位描描 述述TXP071发送暂停包。发送完成后自动清零,并设置发送暂停包。发送完成后自动清零,并设置TX暂停包时间为暂停包时间为0000HTXPF61发送暂停包。发送完成后自动清零,并设置发送暂停包。发送完成后自动清零,并设置TX暂停包时间为暂停包时间为FFFFHTXPEN5强制发送暂停包使能。按溢出门限最高值使能发送暂停包强制发送暂停包使能。按溢出门限最高值使能发送暂停包BKPA4背压模式。该模式仅在半双

27、工模式下有效。当接收背压模式。该模式仅在半双工模式下有效。当接收SRAM超过超过BPHW并且接收新数据包时,产生一个拥挤状态并且接收新数据包时,产生一个拥挤状态BKPM3背压模式。该模式仅在半双工模式下有效。当接收背压模式。该模式仅在半双工模式下有效。当接收SRAM超过超过BPHW并数据包并数据包DA匹配时,产生一个拥挤状态匹配时,产生一个拥挤状态RXPS2接收暂停包状态。只读,清零时允许接收接收暂停包状态。只读,清零时允许接收RXPCS1接收暂停包当前状态接收暂停包当前状态FLCE0溢出控制使能控。溢出控制使能控。1设置使能溢出制模式设置使能溢出制模式9.传送数据长度寄存器DM_TXPLL(

28、0 xFC):传送数据长度低字节寄存器,在发送数据时,该寄存器存放发送的数据长度的低字节。DM_TXPLH(0 xFD):传送数据长度高字节寄存器,在发送数据时,该寄存器存放发送的数据长度的高字节。10.中断状态寄存器(ISR)功功 能能位位描描 述述IOMODE7-6处理器模式。处理器模式。00为为16位模式,位模式,01为为32位模式,位模式,10为为8位模式,位模式,00保留保留LNKCHG5连接状态改变连接状态改变UDRUN4传输传输“Underrun”ROOS3接收溢出计数器溢出接收溢出计数器溢出ROS2接收溢出接收溢出PTS1数据包传输数据包传输PRS0数据包接收数据包接收11.中

29、断掩码寄存器(IMR)功功 能能位位描描 述述PAR71使能指针自动跳回。当使能指针自动跳回。当SRAM的读、写指针超过的读、写指针超过SRAM的大小时,指针自动跳回起始位置。需要驱动程序设置该位,的大小时,指针自动跳回起始位置。需要驱动程序设置该位,若设置则若设置则REG_F5(MDRAH)将自动为)将自动为0CH保留保留6 LNKCHGI51使能连接状态改变中断使能连接状态改变中断UDRUNI41使能传输使能传输“Underrun”中断中断ROOI31使能接收溢出计数器溢出中断使能接收溢出计数器溢出中断ROI21使能接收溢出中断使能接收溢出中断PTI11使能数据包传输终端使能数据包传输终端

30、PRI01使能数据包接收中断使能数据包接收中断9.4.4 功能描述1.总线2.存储器直接访问控制3.包的发送1.总线总线是ISA总线兼容模式,8个I/O基址,分别是300H、310H、320H、330H、340H、350H、360H、370H。I/O基址与设定引脚或内部EEPROM的共同选定。访问芯片有两个地址端口,分别是地址端口和数据端口。2.存储器直接访问控制DM9000提供DMA(直接存取技术)来简化对内部存储器的访问。内部存储器空间大少16K字节。低3K字节单元用作发送包的缓冲区,其他13K字节用作接收包的缓冲区。3.包的发送有两个指针,顺序命名为指针1和指针2,能同时存储在发送包缓冲

31、区。发送控制寄存器(02H)控制冗余校验码和填充的插入,其状态分别记录在发送状态寄存器1(03H)和发送状态寄存器2(04H)发送器的起始地址是0 x00H,软件或硬件复位后默认是指针1,先通过DMA端口写数据到发送包缓冲区,然后写字节计数长度到字节计数寄存器。9.5 DM9000网卡驱动程序移植9.5.1 DM9000网卡连接9.5.2 驱动分析硬件的数据结构9.5.3 驱动分析数据读写函数9.5.4 驱动分析重置网卡9.5.5 驱动分析初始化网卡9.5.6 驱动分析打开和关闭网卡9.5.7 驱动分析数据包的发送与接收9.5.8 DM9000网卡驱动程序移植9.5.1 DM9000网卡连接由

32、于必须告知内核DM9000芯片所使用的硬件资源,所以移植的首要任务是分析DM9000芯片的硬件连接情况,以获得访问地址、中断号等硬件资源。9.5.2 驱动分析硬件的数据结构在内核源码中用board_info结构体来描述具体的硬件,它保存了一些硬件资源,其定义在driver/net/dm9000.c中。9.5.3 驱动分析数据读写函数static u8ior(board_info_t*db,int reg)writeb(reg,db-io_addr);return readb(db-io_data);static voidiow(board_info_t*db,int reg,int value

33、)writeb(reg,db-io_addr);writeb(value,db-io_data);9.5.4 驱动分析重置网卡static voiddm9000_reset(board_info_t*db)dev_dbg(db-dev,resetting devicen);/调试信息/*RESET device*/writeb(DM9000_NCR,db-io_addr);/写入要操作的寄存器地址,这里是DM9000_NCRudelay(200);/作一下延时writeb(NCR_RST,db-io_data);/写入置位值,这里是1udelay(200);9.5.5 驱动分析初始化网卡DM9

34、000网卡的初始化工作主要由driver/net/dm9000.c中的dm9000_probe来完成,该函数完成的主要工作是获取和申请硬件资源、申请中断号、初始化net_device结构体,最后注册网络设备。9.5.6 驱动分析打开和关闭网卡打开网卡就是激活网络接口,使它能接收来自网络的数据并且传送到网络协议栈的上面,也可以将数据发送到网络上,而网卡的关闭就是使网络接口停止工作。9.5.7 驱动分析数据包的发送与接收在驱动程序层次上,数据包的发送和接收都是通过底层对硬件的读写来完成的。当网络上的数据到来时,将触发硬件中断,根据注册的中断向量表确定处理函数,进入中断向量处理函数,将数据送到上层协

35、议进行处理或者转发出去。9.5.8 DM9000网卡驱动程序移植读懂了DM9000网卡驱动程序源码后,就可以开始移植这个驱动了,具体方法如下。1.定义网卡设备2.添加变量声名3.添加平台设备列表4.修改dm9000.c5.编译内核1.定义网卡设备硬件的使用需要知道硬件所用到的资源,如I/O端口和中断号等,在arch/arm/plat-s3c24xx的devs.c中添加DM9000用到的地址端口、数据端口和中断号。2.添加变量声名在前面步骤中,定义了s3c_device_dm9000并用EXPORT_SYMBOL(s3c_device_dm9000)使之变为全局变量,所以在这里要添加它的声明,在

36、arch/arm/plat-S3C24xx/include/plat/devs.hc添加声明如下:extern struct platform_device s3c_device_dm9000;3.添加平台设备列表static struct platform_device*smdk2440_devices _initdata=&s3c_device_usb,&s3c_device_lcd,&s3c_device_wdt,&s3c_device_i2c,&s3c_device_iis,&s3c_device_dm9000,;4.修改dm9000.c(1)设置GPGCON使GPG1功能设置为EINT7,可以用以下函数实现:s3c2410_gpio_cfgpin(S3C2410_GPG1,S3C2410_GPF3_EINT7);(2)外部中断EXTINT1的6:4位置100上升沿触发中。5.编译内核

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!