当前位置:文档之家› 嵌入式系统的以太网接口设计及linux驱动

嵌入式系统的以太网接口设计及linux驱动

嵌入式系统的以太网接口设计及linux驱动
嵌入式系统的以太网接口设计及linux驱动

嵌入式系统的以太网接口设计及linux驱动

1 以太网概述

以太网(Ethernet)是当今局域网采用的最通用的通信协议标准。在以太网中,所有计算机被连接在一条电缆上,采用带冲突检测的载波侦听多路访问(CSMA/CD)方法,采用竞争机制和总线拓扑结构。基本上,以太网由共享传输媒体,如双绞线电缆或同轴电缆、多端口集线器、网桥或交换机构成。

按照OSI(Open System Interconnection Reference Model,开放式系统互联参考模型)7层参考模型,以太网定义的是物理层(PHY)和数据链路层(对应以太网的MAC层)的标准。

2 嵌入式处理器上扩展以太网接口

以太网接口控制器主要包括MAC乘PHY两部分,如图1所示为嵌入式处理器集成MAC层控制器。

MAC层控制器和PHY的连接是通过MII、RMII等接口实现的。在IEEE802的标准系列中,数据链路层包括LLC和MAC两个子层。其中MAC负责完成数据帧的封装、解封、发送和接受功能。PHY层的结构随着传输速率的不同而有一定的差异。对于1OBaseT等网络,从以太网PHY芯片输出的就是传输所需的差分信号。但是还需要一个网络隔离变压器组成图2的结构。网络隔离变压器可起到抑制共模干扰、隔离线路以及阻抗匹配等作用。

本文介绍一种新款网络接口芯片DM9000A,它可以很方便的实现与嵌入式CPU的接口,实现扩展以太网口的功能。DM9000A是中国台湾DAVICOM公司推出的一款高速以太网接口芯片,其基本特征是:集成10/100M物理层接口;内部带有16K字节SRAM用作接收发送的FIFO缓存;支持8/16bit两种主机工作模式:

通过HP认证的AUTO-Mdix(支持直接互连自动翻转)功能;支持TCP/IP加速,减轻CPU负担,提高整机效能;10ns I/O读写时间。DM9000A以太网控制器遵循IEEE颁布的802.3以太网传输协议。该电路还集成了EEPROM接口,自举时通过EEPROM接口输入到芯片中,从而实现自动初始化。

芯片和处理器的连接原理图就不列图表示了,处理器这里选择AT91RM9200,DM9000A与处理器连接时要注意:

◆总线宽度读/写等待周期、时序匹配问题

◆CS8900A芯片复位后,在总线上的默认地址如何配置与保存

◆默认的中断号及中断触发模式问题(上升沿,还是下降沿;低电平,还是高电平触发)

系统上电时,AT91RM9200通过总线配置DM9000A内部网络控制寄存器(NCR)、中断寄存器(ISR)等,完成DM9000A的初始化。随后,DM9000A进入数据收发等待状态。当AT91RM9200向以太网发送数据时,先将数据打包成UDP或IP数据包,并通过16 bit总线发送到DM9000A的数据发送缓存中,然后将数据长度等信息填充到DM9000A的相应寄存器内,使能发送。当DM9000A接收到外部网络送来的以太网数据时,首先检测数据帧的合法性,如果帧头标志有误或存在CRC校验错误,则将该帧数据丢弃。否则将数据帧缓存到内部RAM,并通过中断标志位通知AT91RM9200,由AT91RM9200对DM9000A接收到的数据进行处理。

3 linux网络驱动程序

3.1 Linux网络驱动程序体系结构

Linux的网络系统主要是基于BSD UNIX的套接字(socket)机制。在系统和驱动程序之间定义有专门的数据结构(sk_buff)进行数据传输。系统支持对发送数据缓存,提供流量控制机制,提供对多协议的支持。Linux网络驱动程序的体系结构可划分为图2所示的4个层次.Linux内核中提供了网络设备接口及以上层次的代码,所以移植(或编写)特定网络硬件的驱动程序最主要的工作就是完成设备驱动功能层,主要是包括数据的接收,发送等控制。

Linux中所有的网络设备都抽象为一个接口,有结构体struct net_device 来表示网络设备在内核中的运行情况,即网络设备接口,此结构体位于网络驱动层的核心地位。net_device中有很多供系访问和协议层调用的设备方法。网络驱动就是要实现这些具体的设备方法。

3.2 网络设备的初始化

由结构体net_device中的init函数指针所指向的初始化函数来完成。网络的初始化是设备工作的第一步。当系统加载网络驱动模块的时候,就会调用初始化过程。首先利用函数:request_mem_region映射DM9000A的数据、地址端口,通过dmfe_probe函数检测网络物理设备是否存在,检测DM9000A内部串行NIC 的值是否正确,然后再对设备进行资源配置,构造设备的net_device数据结构。包括一些低层硬件信息:base_addr(网络接口的I/O基地址),irq(安排的中断号)等。

3.3 打开设备和关闭设备

open方法在网络设备被激活的时被调用,具体DM9000A的硬件初始化工作放到这里来做。对于DMOOOOA需要完成的初始化包括:对DM9000A内部上电,软件复位,通过NCR寄存器设置网络工作模式,可以选择设置内部或者外部PHY、全双工或者半双工模式、使能唤醒事件等网络操作,对RX/TX中断使能,使能数据接收功能。调用request_jrq()申请中断号登记中断处理函数,调用

netif_carrier_on侦测连接状态。启动定时器,调用netif_start_queue激活设备发送队列。

这里对DM9000A的中断设计做了一个特殊处理:通常AT91RM9200提供最多

32个中断源,默认提供7个外部中断源,但对于较复杂的嵌入式系统,可能会面临中断源不够用的情况。由于AT9lRM9200的PIO可以实现功能复用,因此可以把多余的IO引脚配置为可用的中断源。故本系统中,设计DM9000A中断源与AT91RM9200外部I/O口PD8引脚相连。一个PIO端口的32个引脚共享一个中断ID,只需要在中断状态寄存器中区分具体哪个引脚引起中断,然后转向特定的中断处理函数执行操作,就可以实现中断处理。close所做的工作和open相反,主要释放open获得的资源,以减少系统负担。

3.4 数据包发送

数据包的发送和接收是实现Linux网络驱动程序中两个最关键的过程,对这两个过程处理的好坏将直接影响到驱动程序的整体运行质量。

数据传输通过hard_start_xmit函数实现,首先把存放在套接字缓冲区中的数据发送到网络芯片DM9000A内部的TX FIFO SRAM中,该缓冲区是由数据结构sk buff表示,把要传送的数据长度写入DM9000A中的传输包长度寄存器TXPLL 和TXPLH中。然后使能传输。如果数据发送成功,则会触发一次中断。实际中会出现多个数据帧传输,需要考虑做并发处理。在发送时检测传输队例暂时满载时就要通过netif_stop_queue来暂停,当发送完成触发中断处理时,调用

netif_wake_queue函数来重新启动传输队例。网络传输由于系统忙或硬件的问题发生延迟,则会调用传送超时处理函数tx_timeout,对硬件复位操作。

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、网关、子网掩码和域名解析服务器:

# ifconfig eth0 192.168.0.11O

# route add -net default gw 192.168.0.254 netmask 255.255.255.0 # nameserver 202.106.196.115

最后,通过Ping命令,来测试一下和主机的通信是否联通。在本系统中通过。

在嵌入式应用程序开发及调试中,NFS起着非常重要的应用。不但可以通过NFS文件系统共享远程硬盘的文件,我们还可以mount远程文件系统直接作为嵌入式的根文件系统。

5 结论

本文完成了Linux下扩展以太网接口及测试网络接口的研究,采用了以太网芯片DM9000,围绕太分析了嵌入式Linux 网络的基本原理。最后我的嵌入式设备顺利连上网络。同时本文为移植2.6内核的网络部分提供了移植方法。

嵌入式Linux应用软件开发流程

从软件工程的角度来说,嵌入式应用软件也有一定的生命周期,如要进行需求分析、系统设计、代码编写、调试和维护等工作,软件工程的许多理论对它也是适用的。 但和其他通用软件相比,它的开发有许多独特之处: ·在需求分析时,必须考虑硬件性能的影响,具体功能必须考虑由何种硬件实现。 ·在系统设计阶段,重点考虑的是任务的划分及其接口,而不是模块的划分。模块划分则放在了任务的设计阶段。 ·在调试时采用交叉调试方式。 ·软件调试完毕固化到嵌入式系统中后,它的后期维护工作较少。 下面主要介绍分析和设计阶段的步骤与原则: 1、需求分析 对需求加以分析产生需求说明,需求说明过程给出系统功能需求,它包括:·系统所有实现的功能 ·系统的输入、输出 ·系统的外部接口需求(如用户界面) ·它的性能以及诸如文件/数据库安全等其他要求 在实时系统中,常用状态变迁图来描述系统。在设计状态图时,应对系统运行过程进行详细考虑,尽量在状态图中列出所有系统状态,包括许多用户无需知道的内部状态,对许多异常也应有相应处理。 此外,应清楚地说明人机接口,即操作员与系统间地相互作用。对于比较复杂地系统,形成一本操作手册是必要的,为用户提供使用该系统的操作步骤。为使系统说明更清楚,可以将状态变迁图与操作手册脚本结合起来。

在对需求进行分析,了解系统所要实现的功能的基础上,系统开发选用何种硬件、软件平台就可以确定了。 对于硬件平台,要考虑的是微处理器的处理速度、内存空间的大小、外部扩展设备是否满足功能要求等。如微处理器对外部事件的响应速度是否满足系统的实时性要求,它的稳定性如何,内存空间是否满足操作系统及应用软件的运行要求,对于要求网络功能的系统,是否扩展有以太网接口等。 对于软件平台而言,操作系统是否支持实时性及支持的程度、对多任务的管理能力是否支持前面选中的微处理器、网络功能是否满足系统要求以及开发环境是否完善等都是必须考虑的。 当然,不管选用何种软硬件平台,成本因素都是要考虑的,嵌入式Linux 正是在这方面具有突出的优势。 2、任务和模块划分 在进行需求分析和明确系统功能后,就可以对系统进行任务划分。任务是代码运行的一个映象,是无限循环的一段代码。从系统的角度来看,任务是嵌入式系统中竞争系统资源的最小运行单元,任务可以使用或等待CPU、I/O设备和内存空间等系统资源。 在设计一个较为复杂的多任务应用系统时,进行合理的任务划分对系统的运行效率、实时性和吞吐量影响都极大。任务分解过细会不断地在各任务之间切换,而任务之间的通信量也会很大,这样将会大大地增加系统的开销,影响系统的效率。而任务分解过粗、不够彻底又会造成原本可以并行的操作只能按顺序串行执行,从而影响系统的吞吐量。为了达到系统效率和吞吐量之间的平衡折中,在划分任务时应在数据流图的基础上,遵循下列步骤和原则:

经典中的经典 以太网电接口采用UTP设计的EMC设计指导书

?以太网电接口采用UTP设计的EMC设计指导书 一、UTP(非屏蔽网线)的介绍 非屏蔽网线由两根具有绝缘保护层的铜导线组成,两根绝缘铜导线按照一定密度绞在一起,每一根导线在传输中辐射的电波会与另外一根的抵消,这样可降低信号的干扰程度。 用来衡量UTP的主要指标有: 1、衰减:就是沿链路的信号损失度量。 2、近端串扰:测量一条UTP链路对另一条的影响。 3、直流电阻。 4、衰减串扰比(ACR)。 5、电缆特性。 二、10/100/1000BASE-T以太网电接口原理图设计 10/100/1000BASE-T以太网口电路按照连接器的种类网口电路可以分为:网口变压器集成在连接器里的网口电路和网口变压器不集成在连接器里的网口电路。 1、网口变压器未集成在连接器里的网口电路原理图 网口电路主要包括PHY芯片,网口变压器,网口连接器三部分,图中左侧的八个49.9Ω的电阻是差分线上的终端匹配电阻,其阻值的大小由差分线的特性阻抗决定,当变压器内的线圈匝数发生变化时,其阻值也跟随变化,保证两者的阻抗匹配。由电容组成的差模、共模滤波器可以增强EMC性能。在线圈的中心抽头处接的电容可以有效的改善电路的抗EMC性能,合理的选择电容值可以使电路的EMC做到最优。电路的右侧四个75Ω的电阻是电路的共模阻抗。 2、网口变压器集成在连接器里的网口电路原理图

网口电路主要包括PHY芯片,网口连接器两部分,网口变压器部分集成在接口内部,同样左侧的49.9Ω的电阻阻值也是由变压器的匝数及差分线的特性阻抗决定的。中间的电容组成共模、差模滤波器,滤除共模及差模噪声。75Ω的共模电阻也集成在网口连接器的内部。 3、网口指示灯电路原理图 带指示灯的以太网口电路原理图与不带指示灯灯的大致相同,只是多出指示灯的驱动电路。 注意点: 1)、两个匹配电阻是否需要根据PHY层芯片决定,如有的PHY层芯片内部集成匹配电阻就不需要。匹配电阻是接地还是接电源也是由PHY芯片决定,一般接电源。 2)、芯片侧中间抽头需要通过磁珠串接电源,并且注意每一路接一个磁珠,并通过电容0.01-0.1uf接数字地。 3)、点灯部分电路,link和ACT灯走线要加磁珠处理,同时供电电源也要加磁珠处理。但所有显示驱动灯的电源可以共用一个磁珠。 4)、变压器与连接器部分的匹配电阻75欧姆和50欧姆精度可以放低到5%。

嵌入式Linux系统中音频驱动的设计与实现

第31卷 第2期 2008年4月 电子器件 Ch in es e Jo u rnal Of Electro n Devi ces Vol.31 No.2Apr.2008 Design and Implementation of Audio Driver for Embedded Linux System YU Yue,YA O G uo -liang * (N ational A S I C S ystem Eng ine ering Center ,S outhe ast Unive rsity ,N anj ing 210096,China) Abstract:This paper intro duces the fundam ental principle and architecture of the audio system w hich con -sists of the CODEC UCB1400and the 805puls,and describes the design of audio dev ice dr iv er based on Audio Codec .97for Embedded Linux System.The paper focuses o n the implementatio n of the DM A trans -port and ioctl interface.T he audio dr iv e is running w ell in actual Embedded Linux system equipments.Key words:805plus;embedded Linux;Audio A C .97driver;DM A;ioctl interface EEACC :1130B 嵌入式Linux 系统中音频驱动的设计与实现 虞 跃,姚国良 * (东南大学国家专用集成电路系统工程中心,南京210096) 收稿日期:2007-07-09 作者简介:虞 跃(1982-),男,东南大学电子工程系国家专用集成电路工程技术研究中心硕士研究生,研究方向为嵌入式系统设计; 姚国良(1979-),男,东南大学电子工程系博士研究生,yuyueo@https://www.doczj.com/doc/ef4489546.html,. 摘 要:介绍了由805puls 处理器和U CB1400编解码芯片构成的音频系统体系结构及工作原理,接着阐述了嵌入式Linux 操作系统下基于A C .97协议标准的音频设备驱动程序的设计与实现。其中着重讲述了采用循环缓冲区进行音频数据的DM A 传输流程以及ioctl 接口的实现。此设计方案已在嵌入式L inux 系统中得到使用,运行效果良好。 关键词:805plus;嵌入式L inux ;AC .97音频驱动;DM A;ioctl 接口中图分类号:TP391 文献标识码:A 文章编号:1005-9490(2008)02-0709-03 嵌入式音频系统广泛应用于GPS 自动导航、PDA,3G 手机等移动信息终端,具备播放、录音功能的音频系统的应用使得移动信息终端上视听娱乐IP 电话、音频录制等成为可能,并推动了移动信息终端设备的发展。 在软件上,嵌入式操作系统的新兴力量Linux 的开源性,内核可定制等优点吸引了许多的开发者与开发商。它是个和U nix 相似、以核心为基础的、完全内存保护、多任务多进程的操作系统。支持广泛的计算机硬件,包括X86,A lpha,Sparc,M IPS,PPC,ARM ,NEC,MOT OROLA 等现有的大部分芯片[1]。 本文针对805puls 微处理器选用Philips 公司的编解码芯片(CODEC)U CB1400,构建了基于Au -dio Codec .97(AC .97)标准的音频系统。并介绍了该音频系统在Linux 操作系统2.4.19内核下驱动 程序的实现技术。 1 音频系统构架 1.1 微处理器805plus 805plus 是东南大学ASIC 系统工程技术研究中心和北京大学微处理器研究开发中心共同设计和开发的32bit 嵌入式微处理器,是采用H ar vard 结构的RISC 处理器。内部采用五级流水线结构,兼容16bit 和32bit 的指令系统805plus 嵌入式微处理器集成了存储接口EMI,时钟和功耗管理PM C,中断控制器INTC,通用定时器T IM ER,脉宽调制器PWM,实时时钟RT C,通用串口UA RT,LCD 控制器LCDC,AC .97控制器,同步外设接口SPI 。1.2 AC .97协议标准[2] AC'97协议标准是一套关于A C'97数字音频处理(AC'97Digital Controller)、AC '97数字串口(AC

CAN总线在嵌入式Linux下驱动程序的实现

CAN总线在嵌入式Linux下驱动程序的实现 时间:2009-11-05 09:41:22 来源:微计算机信息作者:黄捷峰蔡启仲郭毅锋田小刚 1 引言 基于嵌入式系统设计的工业控制装置,在工业控制现场受到各种干扰,如电磁、粉尘、天气等对系统的正常运行造成很大的影响。在工业控制现场各个设备之间要经常交换、传输数据,需要一种抗干扰性强、稳定、传输速率快的现场总线进行通信。文章采用CAN总线,基于嵌入式系统32位的S3C44B0X微处理器,通过其SPI接口,MCP2510 CAN控制器扩展CAN总线;将嵌入式操作系统嵌入到S3C44B0X微处理器中,能实现多任务、友好图形用户界面;针对S3C44B0X微处理器没有内存管理单元MMU,采用uClinux嵌入式操作系统。这样在嵌入式系统中扩展CAN设备关键技术就是CAN设备在嵌入式操作系统下驱动程序的实现。文章重点解决了CAN总线在嵌入式操作系统下驱动程序实现的问题。对于用户来说,CAN设备在嵌入式操作系统驱动的实现为用户屏蔽了硬件的细节,用户不用关心硬件就可以编出自己的用户程序。实验结果表明驱动程序的正确性,能提高整个系统的抗干扰能力,稳定性好,最大传输速率达到1Mb/s;硬件的错误检定特性也增强了CAN的抗电磁干扰能力。 2 系统硬件设计 系统采用S3C44B0X微处理器,需要扩展CAN控制器。常用的CAN控制器有SJA1000和MCP2510,这两种芯片都支持CAN2.0B标准。SJA1000采用的总线是地址线和数据线复用的方式,但是嵌入式处理器外部总线大多是地址线和数据线分开的结构,这样每次对SJA1000操作时需要先后写入地址和数据2次数据,而且SJA1000使用5V逻辑电平。所以应用MCP2510控制器进行扩展,收发器采用82C250。MCP2510控制器特点:1.支持标准格式和扩展格式的CAN数据帧结构(CAN2.0B);2.0~8字节的有效数据长度,支持远程帧;3.最大1Mb/s的可编程波特率;4.2个支持过滤器的接受缓冲区,3个发送缓冲区; 5.SPI高速串行总线,最大5MHz; 6.3~5.5V宽电压范围供电。MCP2510工作电压为3.3V,能够直接与S3C44B0X微处理器I/O口相连。为了进一步提高系统抗干扰性,可在CAN控制器和收发器之间加一个光隔6N137。其结构原理框图如图1: 图1.S3C44B0X扩展CAN结构框图图2.字符设备注册表 3 CAN设备驱动程序的设计 Linux把设备看成特殊的文件进行管理,添加一种设备,首先要注册该设备,增加它的驱动。设备驱动程序是操作系统内核与设备硬件之间的接口,并为应用程序屏蔽了硬件细节。在linux中用户进程不能直接对物理设备进行操作,必须通过系统调用向内核提出请求,

以太网EMC接口电路设计与PCB设计说明

以太网EMC接口电路设计及PCB设计 我们现今使用的网络接口均为以太网接口,目前大部分处理器都支持以太网口。目前以太网按照速率主要包括10M、10/100M、1000M三种接口,10M应用已经很少,基本为10/100M所代替。目前我司产品的以太网接口类型主要采用双绞线的RJ45接口,且基本应用于工控领域,因工控领域的特殊性,所以我们对以太网的器件选型以及PCB设计相当考究。从硬件的角度看,以太网接口电路主要由MAC(Media Access Controlleroler)控制和物理层接口(Physical Layer,PHY)两大部分构成。大部分处理器内部包含了以太网MAC控制,但并不提供物理层接口,故需外接一片物理芯片以提供以太网的接入通道。面对如此复杂的接口电路,相信各位硬件工程师们都想知道该硬件电路如何在PCB上实现。 下图1以太网的典型应用。我们的PCB设计基本是按照这个框图来布局布线,下面我们就以这个框图详解以太网有关的布局布线要点。 图1 以太网典型应用 1.图2网口变压器没有集成在网口连接器里的参考电路PCB布局、布线图,下面就以图2介绍以太网电路的布局、布线需注意的要点。 图2 变压器没有集成在网口连接器的电路PCB布局、布线参考 a)RJ45和变压器之间的距离尽可能的短,晶振远离接口、PCB边缘和其他的高频设备、走线或磁性元件周围,PHY层芯片和变压器之间的距离尽可能短,但有时为了

顾全整体布局,这一点可能比较难满足,但他们之间的距离最大约10~12cm,器件布局的原则是通常按照信号流向放置,切不可绕来绕去; b)PHY层芯片的电源滤波按照要芯片要求设计,通常每个电源端都需放置一个退耦电容,他们可以为信号提供一个低阻抗通路,减小电源和地平面间的谐振,为了让电容起到去耦和旁路的作用,故要保证退耦和旁路电容由电容、走线、过孔、焊盘组成的环路面积尽量小,保证引线电感尽量小; c)网口变压器PHY层芯片侧中心抽头对地的滤波电容要尽量靠近变压器管脚,保证引线最短,分布电感最小; d)网口变压器接口侧的共模电阻和高压电容靠近中心抽头放置,走线短而粗(≥15mil); e)变压器的两边需要割地:即RJ45连接座和变压器的次级线圈用单独的隔离地,隔离区域100mil以上,且在这个隔离区域下没有电源和地层存在。这样做分割处理,就是为了达到初、次级的隔离,控制源端的干扰通过参考平面耦合到次级; f)指示灯的电源线和驱动信号线相邻走线,尽量减小环路面积。指示灯和差分线要进行必要的隔离,两者要保证足够的距离,如有空间可用GND隔开; g)用于连接GND和PGND的电阻及电容需放置地分割区域。 2.以太网的信号线是以差分对(Rx±、Tx±)的形式存在,差分线具有很强共模抑制能力,抗干扰能力强,但是如果布线不当,将会带来严重的信号完整性问题。下面我们来一一介绍差分线的处理要点: a)优先绘制Rx±、Tx±差分对,尽量保持差分对平行、等长、短距,避免过孔、交叉。由于管脚分布、过孔、以及走线空间等因素存在使得差分线长易不匹配,时序会发生偏移,还会引入共模干扰,降低信号质量。所以,相应的要对差分对不匹配的情况作出补偿,使其线长匹配,长度差通常控制在5mil以内,补偿原则是哪里出现长度差补偿哪里; b)当速度要求高时需对Rx±、Tx±差分对进行阻抗控制,通常阻抗控制在100Ω±10%; c)差分信号终端电阻(49.9Ω,有的PHY层芯片可能没有)必须靠近PHY层芯片的Rx±、Tx±管脚放置,这样能更好的消除通信电缆中的信号反射,此电阻有些接电源,有些通过电容接地,这是由PHY芯片决定的; d)差分线对上的滤波电容必须对称放置,否则差模可能转成共模,带来共模噪声,且其走线时不能有stub ,这样才能对高频噪声有良好的抑制能力。

linux驱动开发的经典书籍

linux驱动开发的经典书籍 结构、操作系统、体系结构、编译原理、计算机网络你全修过 我想大概可以分为4个阶段,水平从低到高 从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码 其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数 安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式 系统编程推荐《高级unix环境编程》,黑话叫APUE 还有《unix网络编程》 这时候大概还需要看资料理解elf文件格式,连接器和加载器,cmu的一本教材中文名为《深入理解计算机系统》比较好 内核开发阅读内核源码阶段,从写驱动入手逐渐深入linux内核开发 参考书如下《linux device drivers》,黑话叫ldd 《linux kernel development》,黑话叫lkd 《understading the linux kernel》,黑话叫utlk 《linux源码情景分析》 这四本书为搞内核的必读书籍 最后,第三阶段和第四阶段最重动手,空言无益,光看书也不罩,不动手那些东西理解不了 学习linux/unix编程方法的建议 建议学习路径: 首先先学学编辑器,vim, emacs什么的都行。 然后学make file文件,只要知道一点就行,这样就可以准备编程序了。 然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。 如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。 然后再看Douglus E. Comer的《用TCP/IP进行网际互连》第一卷,学习一下网络的知识,再看《UNP》的第一卷,不仅学习网络编程,而且对系统编程的一些常用的技巧就很熟悉了,如果继续网络编程,建议看《TCP/IP进行网际互连》的第三卷,里面有很多关于应用

以太网接口PCB设计经验分享

以太网口PCB布线经验分享 目前大部分32 位处理器都支持以太网口。从硬件的角度看,以太网接口电路主要由 MAC 控制器和物理层接口(Physical Layer ,PHY )两大部分构成,目前常见的以太网接口 芯片,如LXT971 、RTL8019 、RTL8201、RTL8039、CS8900、DM9008 等,其内部结构也 主要包含这两部分。 一般32 位处理器内部实际上已包含了以太网MAC 控制,但并未提供物理层接口,因此,需外接一片物理层芯片以提供以太网的接入通道。 常用的单口10M/100Mbps 高速以太网物理层接口器件主要有RTL8201、LXT971 等,均提供MII 接口和传统7 线制网络接口,可方便的与CPU 接口。以太网物理层接口器件主 要功能一般包括:物理编码子层、物理媒体附件、双绞线物理媒体子层、10BASE-TX 编码/ 解码器和双绞线媒体访问单元等。 下面以RTL8201 为例,详细描述以太网接口的有关布局布线问题。 一、布局 CPU M A RTL8201 TX ± 变 压 RJ45 网口 器 C RX± 1、RJ45和变压器之间的距离应当尽可能的缩短. 2、RTL8201的复位信号Rtset 信号(RTL8201 pin 28 )应当尽可能靠近RTL8021,并且,如果可能的话应当远离TX+/-,RX+/-, 和时钟信号。 3、RTL8201的晶体不应该放置在靠近I/O 端口、电路板边缘和其他的高频设备、走线或磁性 元件周围. 4、RTL8201和变压器之间的距离也应该尽可能的短。为了实际操作的方便,这一点经常被放弃。但是,保持Tx±, Rx±信号走线的对称性是非常重要的,而且RTL8201和变压器之间的距离需要保持在一个合理的范围内,最大约10~12cm。 5、Tx+ and Tx- (Rx+ and Rx-) 信号走线长度差应当保持在2cm之内。 二、布线 1、走线的长度不应当超过该信号的最高次谐波( 大约10th) 波长的1/20 。例如:25M的时钟走线不应该超过30cm,125M信号走线不应该超过12cm (Tx ±, Rx ±) 。 2、电源信号的走线( 退耦电容走线, 电源线, 地线) 应该保持短而宽。退耦电容上的过孔直径 最好稍大一点。 3、每一个电容都应当有一个独立的过孔到地。 4、退耦电容应当放在靠近IC的正端(电源),走线要短。每一个RTL8201 模拟电源端都需要退耦电容(pin 32, 36, 48). 每一个RTL8201 数字电源最好也配一个退耦电容。 5、Tx±, Rx ±布线应当注意以下几点: (1)Tx+, Tx- 应当尽可能的等长,Rx+, Rx- s 应当尽可能的等长; (2) Tx±和Rx±走线之间的距离满足下图: (3) Rx±最好不要有过孔, Rx ±布线在元件侧等。

以太网通信接口电路设计规范

目录 1目的 (3) 2范围 (3) 3定义 (3) 3.1以太网名词范围定义 (3) 3.2缩略语和英文名词解释 (3) 4引用标准和参考资料 (4) 5以太网物理层电路设计规范 (4) 5.1:10M物理层芯片特点 (4) 5.1.1:10M物理层芯片的分层模型 (4) 5.1.2:10M物理层芯片的接口 (5) 5.1.3:10M物理层芯片的发展 (6) 5.2:100M物理层芯片特点 (6) 5.2.1:100M物理层芯片和10M物理层芯片的不同 (6) 5.2.2:100M物理层芯片的分层模型 (6) 5.2.3:100M物理层数据的发送和接收过程 (8) 5.2.4:100M物理层芯片的寄存器分析 (8) 5.2.5:100M物理层芯片的自协商技术 (10) 5.2.5.1:自商技术概述 (10) 5.2.5.2:自协商技术的功能规范 (11) 5.2.5.3:自协商技术中的信息编码 (11) 5.2.5.4:自协商功能的寄存器控制 (14) 5.2.6:100M物理层芯片的接口信号管脚 (15) 5.3:典型物理层器件分析 (16) 5.4:多口物理层器件分析 (16) 5.4.1:多口物理层器件的介绍 (16) 5.4.2:典型多口物理层器件分析。 (17) 6以太网MAC层接口电路设计规范 (17) 6.1:单口MAC层芯片简介 (17) 6.2:以太网MAC层的技术标准 (18) 6.3:单口MAC层芯片的模块和接口 (19) 6.4:单口MAC层芯片的使用范例 (20) 71000M以太网(单口)接口电路设计规范 (21) 8以太网交换芯片电路设计规范 (21) 8.1:以太网交换芯片的特点 (21) 8.1.1:以太网交换芯片的发展过程 (21) 8.1.2:以太网交换芯片的特性 (22) 8.2:以太网交换芯片的接口 (22) 8.3:MII接口分析 (23) 8.3.1:MII发送数据信号接口 (24) 8.3.2:MII接收数据信号接口 (25) 8.3.3:PHY侧状态指示信号接口 (25) 8.3.4:MII的管理信号MDIO接口 (25) 8.4:以太网交换芯片电路设计要点 (27) 8.5:以太网交换芯片典型电路 (27) 8.5.1:以太网交换芯片典型电路一 (28)

linux驱动程序的编写

linux驱动程序的编写 一、实验目的 1.掌握linux驱动程序的编写方法 2.掌握驱动程序动态模块的调试方法 3.掌握驱动程序填加到内核的方法 二、实验内容 1. 学习linux驱动程序的编写流程 2. 学习驱动程序动态模块的调试方法 3. 学习驱动程序填加到内核的流程 三、实验设备 PentiumII以上的PC机,LINUX操作系统,EL-ARM860实验箱 四、linux的驱动程序的编写 嵌入式应用对成本和实时性比较敏感,而对linux的应用主要体现在对硬件的驱动程序的编写和上层应用程序的开发上。 嵌入式linux驱动程序的基本结构和标准Linux的结构基本一致,也支持模块化模式,所以,大部分驱动程序编成模块化形式,而且,要求可以在不同的体系结构上安装。linux是可以支持模块化模式的,但由于嵌入式应用是针对具体的应用,所以,一般不采用该模式,而是把驱动程序直接编译进内核之中。但是这种模式是调试驱动模块的极佳方法。 系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。同时,设备驱动程序是内核的一部分,它完成以下的功能:对设备初始化和释放;把数据从内核传送到硬件和从硬件读取数据;读取应用程序传送给设备文件的数据和回送应用程序请求的数据;检测和处理设备出现的错误。在linux操作系统下有字符设备和块设备,网络设备三类主要的设备文件类型。 字符设备和块设备的主要区别是:在对字符设备发出读写请求时,实际的硬件I/O一般就紧接着发生了;块设备利用一块系统内存作为缓冲区,当用户进程对设备请求满足用户要求时,就返回请求的数据。块设备是主要针对磁盘等慢速设备设计的,以免耗费过多的CPU时间来等待。 1 字符设备驱动结构 Linux字符设备驱动的关键数据结构是cdev和file_operations结构体。

RJ45以太网接口EMC防雷设计方案

以太网接口EMC设计方案 一、接口概述 RJ45以太网接口是目前应用最广泛的通讯设备接口,以太网口的电磁兼容性能关系到通讯设备的稳定运行。 二、接口电路原理图的EMC设计 百兆以太网接口2KV防雷滤波设计 图1 百兆以太网接口2KV防雷滤波设计 接口电路设计概述: 本方案从EMC原理上,进行了相关的抑制干扰和抗敏感度的设计;从设计层次解决EMC问题;同时此电路兼容了百兆以太网接口防雷设计。 本防雷电路设计可通过IEC61000-4-5或GB17626.5标准,共模2KV,差摸1KV的非屏蔽平衡信号的接口防雷测试。 电路EMC设计说明: (1) 电路滤波设计要点: 为了抑制RJ45接口通过电缆带出的共模干扰,建议设计过程中将常规网络变压器改为接口带有共模抑制作用的网络变压器,此种变压器示意图如下。

图2 带有共模抑制作用的网络变压器 RJ45接口的NC空余针脚一定要采用BOB-smith电路设计,以达到信号阻抗匹配,抑制对外干扰的作用,经过测试,BOB-smith电路能有10个dB左右的抑制干扰的效果。 网络变压器虽然带有隔离作用,但是由于变压器初次级线圈之间存在着几个pF的分布电容;为了提升变压器的隔离作用,建议在变压器的次级电路上增加对地滤波电容,如电路图上C4-C7,此电容取值5Pf~10pF。 在变压器驱动电源电路上,增加LC型滤波,抑制电源系统带来的干扰,如电路图上L1、C1、C2、C3,L1采用磁珠,典型值为600Ω/100MHz,电容取值0.01μF~0.1μF。 百兆以太网的设计中,如果在不影响通讯质量的情况,适当减低网络驱动电压电平,对于EMC干扰抑制会有一定的帮助;也可以在变压器次级的发送端和接收端差分线上串加10Ω的电阻来抑制干扰。 (2) 电路防雷设计要点: 为了达到IEC61000-4-5或GB17626.5标准,共模2KV,差摸1KV的防雷测试要求,成本最低的设计方案就是变压器初级中心抽头通过防雷器件接地,电路图上的D1可以选择成本较低的半导体放电管,但是要注意“防护器件标称电压要求大于等于6V;防护器件峰值电流要求大于等于50A;防护器件峰值功率要求大于等于300 W。注意选择半导体放电管,要注意器件“断态电压、维持电流”均要大于电路工作电压和工作电流。 根据测试标准要求,对于非屏蔽的平衡信号,不要求强制性进行差模测试,所以对于差模1KV以内的防护要求,可以通过变压器自身绕阻来防护能量冲击,不需要增加差模防护器件。 接口电路设计备注: 如果设备为金属外壳,同时单板可以独立的划分出接口地,那么金属外壳与接口地直接电气连接,且单板地与接口地通过1000pF电容相连。

Linux驱动工程师成长之路

本人此刻还不是什么驱动工程师,连入门都谈不上,但我坚信在未来的3-5年我肯定能成为我想像中的人,因为我马上就要进入这一行工作了。写下这个日志来记录我是怎么最后成为我想像中的人才的,呵呵。 《Linux驱动工程师》这个东西是我在大二的时候看到有一篇讲如何学习嵌入式的,点击这里下载PDF,里面讲到嵌入式分为四层:硬件,驱动,系统,应用程序;还说linux驱动最难然后工资也最高就冲着他这句话我就决定我大学毕业的时候要去做这个linux驱动工程师,随后我就先后买了51单片机,ARM7,ARM9还有一大堆的视频教程准备来进行学习。我还跟我旁边那个哈工大哥们说:“我们学校像我这样的人很少,你们学校呢?”他说:“太少了,不过我们学校都是做这种板子卖的人比较多!”。行,你们牛!即使是买了这些东西,从大二到现在都快毕业了但感觉还是没有入门。回想一下我都学过什么啊:1:自己在ARM9上写bootloader(主要锻炼了三方面的知识:C语言应该写了有近万行的代码,ARM9的外设的基本操作方法如UART,LCD,TOUCH,SD,USB,ETHERNET...,makefile);2:移植和学习linux驱动。下面我说一下我学习Linux驱动的一个思路这也是我在面试的时候自我介绍中最重要的部分;1:硬件知识学习Linux驱动首先得了解这个驱动对应的硬件的一些基本原理和操作方法比如LCD你得了解它的场同步,行同步,像素时钟,一个像素的表示模式,还有就是这个LCD是怎么把图像显示在屏幕上的。如果是USB,SD卡就得了解相关协议。可以通过spec(协议)、datasheet来了解,这就是传说中的Linux驱动开发三件宝之二,还有一个就是linux相关源码。2:了解linux驱动框架linux下的每一类驱动差不多都是一个比较完善的子系统,比如FLASH的驱动它就属于MTD子系统从上到下分为四层:设备节点层,设备层,原始设备层,最下面的与具体硬件相关的硬件驱动层,通常要我们自己来实现就是最下面这个与具体硬件相关那部分代码。3:了解这个驱动的数据流。这个过程与第二个过程紧密相关,如果了解了驱动的框架差不多这个过程也算了解了。比如flash.在/dev/目录下有对应flash的字符设备文件和块设备文件,用户对这些文件进行读、写、ioctl操作,其间通过层层的函数调用最终将调用到最下面的硬件驱动层对硬件进行操作。了解这个过程我相信在调试驱动的时候是很有帮助。3:分析与硬件相关通常需要我们实现的那部分源代码。4:三板子上将驱动调试出来。每次调试都会出问题,但我买的板子提供的资料比较全调试过程中遇到的问题都比较浅显,即使是浅显的问题也要把它记录下来。(这个是我上次在华为面试的时候,那个人问我你调试驱动遇到过什么问题吗?你是如何解决的。当时我学习还没有到调试驱动这一步,所以那次面试也惨败收场)。 好像说了这么多,还没有进入正题《工作的选择》。在年前去了龙芯,实习2.8K,转正3.5k,环境还是不错,经理很好,头儿也很帅都是中科院的硕士。不过去了两周我就没去了身边的人都不太理解,我也一度有过后悔的时候,从龙芯出来应该是1月6号,也就是从那个时候开始我就没有再找工作,转而学习linux驱动。一直到上周日。上周日的晚上我就开始投简历一开始要找linux驱动,在智联里面输入linux驱动出来500来个职位,点开一看没有一个自己符合要求的,差不多都要3-5年经验本科,有时候好不容易有个实习的关键字在里面,一看要求硕士,严重打击了我的信心,哎不管了随便投,最后又投了一下嵌入式关键字的职位。最后就瞎申请,看看职位要求差不多就申请。周一来了,这周一共来了6个面试,创下了我求职以来的历史新高。周一下午面了一家感觉还不错不过到现在也没有给我一个通知,估计当时我要了4500把他给要跑了,这家是做测量的不是Linux驱动,差不多是把ARM当单片机用。周二上午一家也是要招linux驱动面了估计不到二分钟,他

从零开始搭建Linux驱动开发环境

参考: 韦东山视频第10课第一节内核启动流程分析之编译体验 第11课第三节构建根文件系统之busybox 第11课第四节构建根文件系统之构建根文件系统韦东山书籍《嵌入式linux应用开发完全手册》 其他《linux设备驱动程序》第三版 平台: JZ2440、mini2440或TQ2440 交叉网线和miniUSB PC机(windows系统和Vmware下的ubuntu12.04) 一、交叉编译环境的选型 具体的安装交叉编译工具,网上很多资料都有,我的那篇《arm-linux- gcc交叉环境相关知识》也有介绍,这里我只是想提示大家:构建跟文件系统中所用到的lib库一定要是本系统Ubuntu中的交叉编译环境arm-linux- gcc中的。即如果电脑ubuntu中的交叉编译环境为arm-linux-

二、主机、开发板和虚拟机要三者互通 w IP v2.0》一文中有详细的操作步骤,不再赘述。 linux 2.6.22.6_jz2440.patch组合而来,具体操作: 1. 解压缩内核和其补丁包 tar xjvf linux-2.6.22.6.tar.bz2 # 解压内核 tar xjvf linux-2.6.22.6_jz2440.tar.bz2 # 解压补丁

cd linux_2.6.22.6 patch –p1 < ../linux-2.6.22.6_jz2440.patch 3. 配置 在内核目录下执行make 2410_defconfig生成配置菜单,至于怎么配置,《嵌入式linux应用开发完全手册》有详细介绍。 4. 生成uImage make uImage 四、移植busybox 在我们的根文件系统中的/bin和/sbin目录下有各种命令的应用程序,而这些程序在嵌入式系统中都是通过busybox来构建的,每一个命令实际上都是一个指向bu sybox的链接,busybox通过传入的参数来决定进行何种命令操作。 1)配置busybox 解压busybox-1.7.0,然后进入该目录,使用make menuconfig进行配置。这里我们这配置两项 一是在编译选项选择动态库编译,当然你也可以选择静态,不过那样构建的根文件系统会比动态编译的的大。 ->Busybox Settings ->Build Options

嵌入式linux android驱动工程师 面试题总汇

嵌入式linux android驱动工程师面试题总汇 1.嵌入式系统中断服务子程序(ISR)收藏中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字__interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。 2.C语言中对位的操作,比如对a的第三位清0,第四位置1.本来应该会的,一犯晕写反了,以后注意! #define BIT3 (1<<3) #define BIT4 (1<<4) a &= ~BIT3;a |= BIT4; 3.考到volatile含义并举例: 理解出错,举了很具体的例子,连程序都搬上去了,有些理解不深的没举出来…… volatile表示这个变量会被意想不到的改变,每次用他的时候都会小心的重新读取一遍,不适用寄存器保存的副本。 volatile表示直接存取原始地址 例: 并行设备的硬件寄存器(状态寄存器) 在多线程运行的时候共享变量也要时时更新 一个中断服务子程序中访问到的的非自动变量(不太清楚,正在查找资料ing……) 4.要求设置一绝对地址为0x67a9的整型变量的值为0xaa66

当时我的写法: #define AA *(volatile unsigned long *)0xaa66AA = 0x67a9; 答案: int *ptr =(int *)0xaa66; *ptr = 0x67a9; 我感觉自己写的应该不算错吧(自我感觉,还请达人指正),我写的适合裸机下用,当做寄存器用,而答案就是适合在操作系统下的写法。 1. linux内核里面,内存申请有哪几个函数,各自的区别? 2. IRQ和FIQ有什么区别,在CPU里面是是怎么做的? 3. int *a; char *b; a 和b本身是什么类型? a、b里面本身存放的只是一个地址,难道是这两个地址有不同么? 4.xx的上半部分和下半部分的问题: 讲下分成上半部分和下半部分的原因,为何要分?讲下如何实现? 5.内核函数mmap的实现原理,机制? 6.驱动里面为什么要有并发、互斥的控制?如何实现?讲个例子? 7. spinlock自旋锁是如何实现的? 8.任务调度的机制? 【二、本人碰到】

以太网接口和框图详细讲解

实时嵌入式系统 以太网接口及应用

网络层次模型

以太网层次模型

以太网层次功能 物理层:物理层:定义了数据传输与接收所需要的光与电信号光与电信号,,线路状态线路状态,,时钟基准时钟基准,,数据编码电路等编码电路等。。并向数据链路层设备提供标准接口准接口。。 数据链路层数据链路层::提供寻址机制提供寻址机制,,数据帧的构建,数据差错检查数据差错检查,,传输控制传输控制。。向网络层提供标准的数据接口等功能提供标准的数据接口等功能。。

IP 层IP 数据报 以太网的MAC 帧格式在帧的前面插入的8 字节中的第一个字段共7 个字节,是前同步码,用来迅速实现MAC 帧的比特同步。 第二个字段是帧开始定界符,表示后面的信息就是MAC 帧。 MAC 帧物理层 MAC 层以太网V2 MAC 帧 目的地址源地址类型数据FCS 6624字节 46 ~ 150010101010101010 10101010101010101011前同步码帧开始 定界符7 字节 1 字节… 8 字节 插 入 为了达到比特同步,在传输媒体上实际传送的要比MAC 帧还多8 个字节

以太网接口的构成 从硬件的角度看,从硬件的角度看,以太网接口电路主要由MAC MAC控制器和物理层接口控制器和物理层接口控制器和物理层接口((Physical Layer Physical Layer,,PHY PHY))两大部分构成两大部分构成。。 嵌入式网络应用的两种方案 处理器加以太网接口芯片处理器加以太网接口芯片。。芯片如芯片如RTL8019RTL8019RTL8019、、RTL8029RTL8029、、RTL8139RTL8139、、CS8900CS8900、、DM9000DM9000等等,其内部结构也主要包含这两部分部结构也主要包含这两部分。。 自带自带MAC MAC MAC控制器的处理器加物理层接口芯片控制器的处理器加物理层接口芯片控制器的处理器加物理层接口芯片。。如DP83848DP83848、、BCM5221BCM5221、、ICS1893ICS1893等等。

嵌入式系统的以太网接口设计

龙源期刊网 https://www.doczj.com/doc/ef4489546.html, 嵌入式系统的以太网接口设计 作者:于申申 来源:《硅谷》2011年第17期 摘要:随着网络和嵌入式系统的发展,嵌入式系统与网络的结合已经成为最新的研究方向。使用处理器S3C44B0X和以太网接口芯片RTL8019AS,设计一种通用的嵌入式系统以太网接口设计与实现方案。这种设计结构简单,实现方便,具有很好的实用价值。 关键词: S3C44BOX; RTL8019AS; uCLinux操作系统 中图分类号:TP368 文献标识码:A 文章编号:1671-7597(2011)0910067-01 目前,随着计算机技术、通信技术的飞速发展,以太网以它的普遍性及低廉的接口价格,已经作为一种最通用的网络,广泛应用于生产和生活中。使得我们在计算机进行网络互连的同时,许多领域的嵌入式设备如工业控制、数据采集、数控机床和智能仪表等也有接入网络的需求。伴随着信息家电出现,嵌入式设备的网络化必将拥有更广阔的发展前途。在这个过程里,首先要解决的是嵌入式设备如何实现网络互连。 本文基于常用的嵌人式处理器S3C44B0X和以太网驱动器RTL8019AS以及μClinux系统设计了一款嵌人式以太网接口。该方案和其它设计比较具有高性能、低功耗、软硬件易扩展特点,是当前及今后工业以太网控制器的理想选择方案。本设计的特点是,既可仅用于嵌人式以太网驱动设备,方便简单,又可进行扩展其他模块,必要时可以移植操作系统,应用于其他复杂领域。 1 芯片简介 1.1 S3C44B0X芯片概述 系统的CPU采用S3C44B0X,它是Samsung公司推出的16/32位RISC处理器,采用了ARM7TDMI内核,0.25um工艺的CMOS标准宏单元和存储编译器。S3C44B0X还采用了一种新的总线结构,即SAMBA-II(三星ARM嵌入式微处理器总线结构)。S3C44B0X[1]通过提供全面的、通用的片上外设,大大减少了系统电路中外围元器件配置,从而最小化系统的成本,它为一般应用提供了高性价比和高性能的微处理器解决方案。 由于S3C44B0X微处理器集成了丰富的外设,非常适合控制管理。而μClinux系统又可对多种硬件资源进行控制,加之S3C44B0X对μClinux操作系统的完美支持,故采用了三星公司S3C44B0X芯片作为微处理器。

嵌入式LINUX四按键驱动

对一个具有四个按键的按键驱动的分析 源代码: /*Headers-------------------------------------------------*/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef CONFIG_DEVFS_FS #include #endif /*V ars----------------------------------------------------*/ #define DEVICE_NAME "buttons" #define EXTINT_OFF (IRQ_EINT4 - 4) unsigned int buttons_major=0; unsigned int buttons_minor=0; unsigned int type = IRQT_FALLING; struct button_info { unsigned int irq_no; unsigned int gpio_port; unsigned int IN; int button_no; }; struct button_info realarm_button_info[4] = { { IRQ_EINT19, S3C2410_GPG11, S3C2410_GPG11_INP, 1 }, { IRQ_EINT8, S3C2410_GPG0, S3C2410_GPG0_INP, 2 },

相关主题
文本预览
相关文档 最新文档