文档库 最新最全的文档下载
当前位置:文档库 › SATA及ADMA控制器Linux操作系统驱动的设计与实现

SATA及ADMA控制器Linux操作系统驱动的设计与实现

SATA及ADMA控制器Linux操作系统驱动的设计与实现
SATA及ADMA控制器Linux操作系统驱动的设计与实现

第23卷第ll 期 计算机应用与软件

VoI.23,No.ll

2006年ll 月 Computer AppIications and Software Nov.2006

SATA 及ADMA 控制器Linux 操作系统驱动的设计与实现

孙文波 尤晋元

(上海交通大学软件学院 上海200030)

收稿日期:2004-09-27。基金项目:国家自然科学基金(项目编号:60l73033)的资助。孙文波,硕士生,主研领域:嵌入式系统,软件工程。

摘 要 信息时代,数据的存储及远程备份尤为重要。为了满足用户对存储系统产品的高性能及低费用的需求,设计和实现了一种新型存储外设的操作系统驱动,该存储系统采用SATA 磁盘及ADMA 控制器并基于Linux 系统。着重于如何驱动SATA 磁盘及ADMA 控制器并实现一些关键功能,以大幅提升数据存储性能。实验结果表明,性能已远超过采用IDE 磁盘的存储系统,对于大批量数据存取,性能更为显著。

关键词 SATA 及ADMA 控制器 ADMA NCO ADMA 命令标记 热插拔

DESIGN AND IMPLEMENTATI N LINUX DEVICE

DRIVER BASED N SATA&ADMA C NTR LLER

Sun Wenbo You Jinyuan

(School of Software ,Shanghai Jiaotong Uniuersity ,Shanghai 200030,China )

Abstract At the age of information ,it s very important for the IocaI or remote data storage and backup.For meeting the needs of users on the storage system product that is high performance and Iow cost ,in this paper ,the 0S device driver of a new storage peripheraI that is SATA Hard-Disk and ADMA controIIer has been designed and impIemented under Linux 0S.This paper highIights how to drive SATA and ADMA controIIer based on some important functions for high performance.The resuIts of experiment indicate :the performance of system exceeds far-ther that of system based on IDE hard-disk ,especiaIIy in a Iarge data transfer.

Keywords SATA and ADMA controIIer ADMA NCO ADMA tagged command Hot-pIug

1 前 言

在Linux 系统里,I /0设备被分为三类:块设备、字符设备和网络设备。本文属于块设备驱动。块设备用来存储定长且可随机访问的数据块,对块设备的所有操作都以块为单位进行。在高性能系统的块设备I /0控制方式中,DMA 和I /0通道方式较为常用,前者由DMA 控制器接管CPU 总线控制权,数据不经过CPU 而直接在内存和I /0设备之间进行成块传输,从而在一定程度上提高了系统的数据传输效率;后者可以获得CPU 和外设之间更高的并行能力,它的引入使得数据的输入输出成为一个独立的系统。但它的成本较高。

2 SATA 及ADMA 控制器及其功能简介

从以上两种I /0控制方式优缺点比较可以看出,其功能和

性能的提升还有很大空间,尤其是随着一种新型块设备SeriaI ATA (SATA )的出现,促使设计开发一种功能与性能更强的I /0控制器来发挥高性能SATA 的潜力,这种I /0控制器就是本文所要介绍的ADMA 控制器,它采用一种新的I /0控制方式。

2.1 SATA

SATA 相对于并行ATA 硬盘内部总线而言,它是一种串行

架构。同IDE /ATA 及SCSI 接口的块设备相比较而言,

SATA 有许多显著优点。(l )针脚减少使连接更便捷、信号干扰变小使传输更稳定,准确性提高;(2)传输速度更快,SATAl.0可达lS0MB /s ,SATA3.0可达600MB /s ,同时SATA 支持热插拔;(3)SATA 扩展性良好,技术也更成熟。就成本而言,远低于SCSI 产品,甚至比一些IDE /ATA 产品的成本还要低。因此,适用范围更广。

2.2 ADMA

ADMA 即Automatic Direct Memory Access 。它在I /0控制方式上使用ADMA 方式,

在数据I /0传输方式上等同于DMA ,但ADMA 在功能和性能上又远强于DMA ,DMA 处理大批量数据传输,而ADMA 则是处理大量DMA 的数据传输,即若干个DMA 数据传输形成DMA 链交由ADMA 控制与处理,数据校验及结果检查都由ADMA 来完成。CPU 基本上不干预数据的传送操作,只是在ADMA 操作开始和结束时,花费极短的时间参与控制管理工作。

2.3 ADMA 控制器

ADMA 控制器管理多个SATA 设备,它主要实现了ADMA

计算机应用与软件2006年

功能,为了发挥ADMA 的性能,主板上一般采用速度和频率更高的64位PCI-X 总线,因为ADMA 控制器是以板卡的形式插在PCI 或PCI-X 总线插槽上的。ADMA 控制器包含若干个ADMA Engine ,ADMA Engine 是其核心部分,它实现了重要的CPB (Command Parameter BIock )命令链及APRD (ADMA PhysicaI Re-gion Descriptor )数据链架构并包含大量的控制、状态和数据寄存器以及用于传输数据的FIF0等。此外,ADMA 控制器还包含对命令标记功能的支持。图l 为CPB 及APRD 结构图。

图 l

2.4 SATA 命令排队及ADMA 命令标记

命令排队在优化驱动器命令执行次序、最小化驱动器机械定位延迟及提高系统性能方面起到了非常重要及显著的作用。在SATA 设备中,命令排队被称为NCO (Native Command Oueu-ing )。NCO 是一个命令协议,它允许同时对一个SATA 驱动器发出多条命令,这些命令进入驱动器形成命令队列,驱动器可以动态地对命令队列中的未完成的命令重排序或重新调度,同时跟踪未完成的命令和已完成的命令。

ADMA 命令标记功能实现在ADMA Engine 的CPB 命令链中,每个CPB 均可加上标记,一旦启动ADMA Engine 进行数据传输,若当前CPB 不能马上得到执行,那么该CPB 的地址信息被暂时存入CPB Lookup TabIe (见图l )中,后续CPB 不受该CPB 的影响继续运行,若该CPB 随后又得到了运行时机,那么根据其标记从CPB Lookup TabIe 中再找到该CPB 并将其投入运行。反之,若不使用ADMA 命令标记功能,则CPB 不加标记,那么当前CPB 若不能马上得到执行,那么就等待,直到其完成为止,然后后续的CPB 才能运行。

3 SATA 及ADMA 控制器Linux 操作系统驱

动的设计与实现

以上介绍了SATA 与ADMA 设备及其功能,那么在相应的Linux 系统驱动的设计与实现中,则必然要发挥SATA 与ADMA 设备的功能和体现其优越的性能,同时向操作系统提供强有力的支持。在本文的设计与实现中,主要涉及协议选型、ADMA Engine 控制、命令链与数据链及一些关键数据结构的构造与操作,数据I /0的实现及中断处理、命令标记及Hot-pIug 的功能实现等。如下将做一一介绍。

3.1 总线技术及协议选取(IDE 比较SCSI )

IDE 即ATA 。IDE 控制器实现了寄存器模型,其命令寄存器是非常重要的一类寄存器,因为当对磁盘进行操作时,是通过发命令方式进行的。在Linux 系统中,IDE 架构有一个显著特

点,即上层经驱动对IDE 设备进行读写数据时,每次只能发送一个命令,只有当前命令完成并返回后,上层才会发送第二个命令下来。SCSI 在标准上被分解为接口、协议、设备模型和命令集。SCSI 块设备模型遵循整个SCSI 体系结构模型,在SCSI 块设备模型中,命令集非常重要,它表示了该类设备功能的强弱。在Linux 系统SCSI 架构下,当上层经驱动对SCSI 块设备进行读写数据时,每次可以发送多个读写命令下来,当这些命令操作完成后可一并返回,这样减少了系统开销。对于大批量数据传输,采用SCSI 结架构的数据传输机制其性能优势尤为明显。鉴于以上分析,采用SCSI 的驱动架构比较合理且切实可行。

3.2 驱动架构及流程的设计与实现

SATA 及ADMA 的SCSI 驱动架构分两部分作以介绍:驱动架构部分和驱动流程部分。在Linux 系统中,SCSI 子系统架构分三个层次:SCSI Upper LeveI (SUL )、SCSI MiddIe LeveI (SML )和SCSI Low-LeveI Drivers (LLD )。SUL 处于SCSI 子系统的最上层,对上同II_rw_bIk 层交互,对下同SML 层衔接。SUL 层的任务就是把上层传来的请求转换为SCSI 格式的请求,并提交给

SML 层,同时等待处理结果。SML 处于中间层,对下同LLD 层通信。LLD 是最低层,同硬件打交道,它负责在Initiator (启动器)和Target (目标器)之间传送命令、数据、状态及消息等,启动器和目标器是SCSI 子系统的设备模型。本文的SATA 及AD-MA 控制器的Linux 系统驱动设计与实现就属于LLD 层的设计与实现,ADMA 控制器对应启动器,SATA 设备对应目标器,图2为SATA 及ADMA 控制器的SCSI 子系统功能结构图。

图 2

LLD 层驱动的主要任务是控制SATA 及ADMA 控制器,它负责启动SATA 及ADMA 设备,捕获设备中断并进行I /0中断处理以及实现设备无关性等。驱动直接与硬件打交道,并向SML 层提供一组访问接口,LLD 驱动就是要设计和实现这组接口。图3为两层之间的接口示意图。

图 3

在LLD 驱动架构中,驱动接口和功能的设计与实现尤为重要。驱动与外界的接口分三部分:(l )驱动与Linux 系统内核的接口,这里即为与SML 层的接口;(2)驱动与系统引导的接口,这部分对SATA 及ADMA 设备进行初始化,入口为Detect 函数;(3)驱动与SATA 及ADMA 设备的接口,驱动通过SATA 及

AD-

2

第ll期孙文波等:SATA及ADMA控制器Linux操作系统驱动的设计与实现

MA控制器的接口寄存器及ADMA Engine的命令链和数据链(见图l)同SATA及ADMA设备进行信息交互。驱动的功能分为五个部分:(l)驱动注册与注销。驱动注册通过使用函数Scsi _register向SML层注册并提供一组访问接口(见图3)。驱动注销刚好相反,释放软硬件资源。(2)ADMA控制器的设备识别及资源初始化。设备识别通过设备的Vendor ID、Device ID以及系统函数调用Pci_find_device来实现。若ADMA控制器被找到,则在系统中被标识为一个PCI设备。随后,可以获取设备中断资源、I/0及Memory地址空间等,同时注册中断处理函数。(3)SATA设备识别及其寄存器设置。SATA设备识别是通过SML层向LLD层发送命令的方式进行的,成功执行三条命令即可识别一个SATA设备并可向该设备进行读写操作,这三个命令为:Inguiry、Test_Unit_Ready和ReadCapacity。然后设置其寄存器为数据I/0做准备,通常设置数据传输模式及设备特性等。(4)SATA及ADMA设备读写操作。ADMA的数据传输机制见2.2的相关内容。在数据传输之前,先要构造和初始化其命令链与数据链(见图l),驱动程序根据SML层下传的命令及数据地址信息填充CPB链和APRD链,在完成填充后,就可启动AD-MA Engine进行数据传输。(5)SATA及ADMA设备中断处理。当数据传输完成后,就会触发一个中断,并调用中断处理函数进行处理,在中断处理函数中,检查数据传输后的结果是否异常,并通报SML层。

驱动流程部分如下:(l)SML层调用驱动的Detect函数对SATA及ADMA设备进行初始化,其中包括向上层注册一组访问接口;(2)构造和初始化ADMA Engine的命令链与数据链,一旦需要数据传输,就填充CPB链和APRD链,同时启动ADMA Engine;(3)在ADMA Engine完成数据传输以后,会触发一个中断,并调用中断处理函数;(4)系统卸载某个ADMA控制器HBA 时,则先要释放该HBA初始化时所获取的软硬件资源。卸载该驱动时,则先得卸载所有HBA。以上介绍了驱动架构及流程的设计与实现。下面将着重一些重要功能的实现。

3.3 ADMA命令标记实现

ADMA命令标记的思想见2.4。在构造CPB命令链时,可在每个CPB的命令控制标志字段加入标记,当ADMA Engine启动运行时,若某个CPB不能马上得到执行,那么该CPB的地址信息被暂存入CPB Lookup Tabie(见图3)中,CPB Lookup Tabie 是一段内存空间,它在驱动初始化时被分配好同时它的首地址被放入ADMA Engine的CPB地址寄存器中。随后若该CPB的数据传输操作可以被SATA设备执行,那么SATA设备就会触发一个中断,驱动在得到中断通知后,检查SATA设备的相关寄存器位的值是否正确,若正确它就从SATA设备中读取未执行命令的标记,驱动根据命令标记、所要读写数据的设备以及CPB 地址寄存器中的地址信息就可以从CPB Lookup Tabie中找到未执行的CPB并将其投入运行。

3.4 Hot-plug功能实现

SATA标准定义了Hot-piug(热插拔),因此SATA设备可具有热插拔功能。在驱动程序中,SATA设备的热插拔功能是靠中断机制来实现的。当一个SATA设备接入ADMA控制器时,会触发一个中断,然后进入中断处理程序(该处理程序在ADMA 控制器初始化时就已经向系统作了注册)更新ADMA控制器

HBA的资源及对应的数据结构信息,同时报告上层有新的设备插入。随后驱动程序发送命令对新的设备进行识别,正确识别后即可进入正常的数据I/0阶段。反之,SATA设备拔出ADMA 控制器,则驱动执行过程同上述正好相反。

4 实验测试

实验测试环境为CPU PIII l.2G,内存256M,操作系统Red-Hat9(kernei2.4),主板PCI总线频率66MHz。

为了检验ADMA系统的性能,分别对Uitrai33系统和AD-MA系统做性能测试且对比两者的读写性能。所有的测试都进行三遍,然后对于测试结果取平均值。测试结果如图4所示。实验结果显示,与Uitrai33系统的读写性能相比,ADMA系统将读写性能提高了将近0.5倍,因此,它对数据存储性能的提升是显而易见的。

(Uitral33系统代表Uitral33控制器,具有PATA接口,连接两个S0GB7200RPM Maxtor磁盘且磁盘不支持TCO功能以及它们的驱动程序。ADMA系统代表ADMA控制器,具有SATA接口,连接两个74GB l0000RPM WD SATA磁盘且磁盘支持TCO功能以及它们的驱协程序)

图4

5 结论与展望

在存储系统中,外设一直存在着性能瓶颈问题,从而严重影响整个系统性能的提高。而本文的ADMA存储系统则使这一现状大有改观。实验结果显示,ADMA存储系统对数据存取性能的提升是非常显著的。这使得它在高端存储系统以及对数据存储性能要求很高的场合,ADMA存储系统均能提供良好的支持,若要进一步扩展其功能和性能,则还需要在此基础上做软硬件的再开发。比如硬件RAID和iSCSI网络存储的支持,RAID 可实现RAID0/l/l0/5,iSCSI除实现本身的协议外,还可以实现T0E。总之,基于如上技术可以开发不同形式的存储系统产品提供个人、家庭及企业用户使用,同时实现更好的性价比,来满足市场的需求!

参考文献

[l]Seriai ATA Advanced Host Controiier Interface(AHCI),Intei Corpora-tion,Apr,2004.

[2]Seriai ATA Native Command Oueuing,Intei Corporation and Seagate Teclnoiogy,Jui,2003.

[3]PCI Seriai-ATA Host Bus Adapters Specification Working Draft Revision

0.3,LSI Design&Integration Corporation,May,2003.

[4]ATA/ATAPI Host Adapters Standard(ATA-Adapter)Working Draft Re-vision l.0,Pacific Digitai Corporation,Jan,2003.

3

SATA及ADMA控制器Linux操作系统驱动的设计与实现

作者:孙文波, 尤晋元, Sun Wenbo, You Jinyuan

作者单位:上海交通大学软件学院,上海,200030

刊名:

计算机应用与软件

英文刊名:COMPUTER APPLICATIONS AND SOFTWARE

年,卷(期):2006,23(11)

参考文献(4条)

1.ATA/ATAPI Host Adapters Standard(ATA-Adapter) Working Draft Revision 1.0 2003

2.PCI Serial-ATA Host Bus Adapters Specification Working Draft Revision 0.3 2003

3.Serial ATA Native Command Queuing,Intel Corporation and Seagate Technology 2003

4.Serial ATA Advanced Host Controller Interface(AHCI) 2004

本文链接:https://www.wendangku.net/doc/1b16545961.html,/Periodical_jsjyyyrj200611001.aspx

字符设备驱动程序课程设计报告

中南大学 字符设备驱动程序 课程设计报告 姓名:王学彬 专业班级:信安1002班 学号:0909103108 课程:操作系统安全课程设计 指导老师:张士庚 一、课程设计目的 1.了解Linux字符设备驱动程序的结构; 2.掌握Linux字符设备驱动程序常用结构体和操作函数的使用方法; 3.初步掌握Linux字符设备驱动程序的编写方法及过程; 4.掌握Linux字符设备驱动程序的加载方法及测试方法。 二、课程设计内容 5.设计Windows XP或者Linux操作系统下的设备驱动程序; 6.掌握虚拟字符设备的设计方法和测试方法;

7.编写测试应用程序,测试对该设备的读写等操作。 三、需求分析 3.1驱动程序介绍 驱动程序负责将应用程序如读、写等操作正确无误的传递给相关的硬件,并使硬件能够做出正确反应的代码。驱动程序像一个黑盒子,它隐藏了硬件的工作细节,应用程序只需要通过一组标准化的接口实现对硬件的操作。 3.2 Linux设备驱动程序分类 Linux设备驱动程序在Linux的内核源代码中占有很大的比例,源代码的长度日益增加,主要是驱动程序的增加。虽然Linux内核的不断升级,但驱动程序的结构还是相对稳定。 Linux系统的设备分为字符设备(char device),块设备(block device)和网络设备(network device)三种。字符设备是指在存取时没有缓存的设备,而块设备的读写都有缓存来支持,并且块设备必须能够随机存取(random access)。典型的字符设备包括鼠标,键盘,串行口等。块设备主要包括硬盘软盘设备,CD-ROM等。 网络设备在Linux里做专门的处理。Linux的网络系统主要是基于BSD unix的socket 机制。在系统和驱动程序之间定义有专门的数据结构(sk_buff)进行数据传递。系统有支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的支持。 3.3驱动程序的结构 驱动程序的结构如图3.1所示,应用程序经过系统调用,进入核心层,内核要控制硬件需要通过驱动程序实现,驱动程序相当于内核与硬件之间的“系统调用”。

最新LED显示屏驱动电路设计

L E D显示屏驱动电路 设计

摘要 LED显示屏具有使用寿命长、响应速度快、可视距离远、规格品种多、数字化程度高、亮度高等特点,在信息显示领域已经得到了非常广泛的应用。它利用发光二极管构成的点阵模块或像素单元,组成大面积显示屏。其显示方法有静态显示和动态扫描显示。动态扫描显示耗用硬件资源少,但软件要不断处理,耗CPU。静态显示虽然软件简单但硬件价格稍贵。LED显示屏主要包括发光二极管构成的阵列、驱动电路、控制系统及传输接口和相应的应用软件。而驱动电路设计的好坏,对LED显示屏的显示效果、制作成本及系统的运行性能起着很重要的作用。 本文介绍了点阵式电子显示屏的硬件电路设计原理与软件设计方案,采用51系列单片机芯片,得到了一个能同时显示8个汉字16×16的LED点阵式电子显示屏。 关键词:LED显示屏动态扫描 AT89S52 74HC595

ABSTRACT The LED display monitor has the long of service life, quacking response speed, the far of it’s visual range , many specification variety, high of the digitized, the brightness higher characteristic. It in the information demonstrated the domain already obtained the extremely widespread application. It lattice module or picture element unit which constitutes using the light emitter, composes the big area display monitor. It’s demonstration method has the static demonstration and the dynamic scanning demonstration. The dynamic scanning demonstration consumes the hardware resources to be few, but the software must process unceasingly, and consumes CPU. Although the static state software for display is simple, the hardware price is slightly expensive. The LED display monitor mainly include the array which the light emitter diode constitutes , actuates the electric circuit ,the control system and the transmission connection and the corresponding application software. But actuates the circuit design the quality, to the LED display monitor demonstration effect, the manufacture cost and the system performance characteristic is playing the very vital role. Key words: LED display monitor Dynamic scanning AT89S52 74HC595

linux网卡驱动的配置

RedHat5.1下安装Realtek8168网卡驱动 1.先识别机器上的网卡型号: [root@localhost kernel]#kudzu --probe --class=network 2、使用命令查看kernel包是否都装全了,具体如下: [root@localhost kernel]# rpm -qa | grep kernel 如果装全了,会显示如下几个包: kernel-xen-devel-2.6.18-8.el5 kernel-devel-2.6.18-8.el5 kernel-2.6.18-8.el5 kernel-xen-2.6.18-8.el5 kernel-headers-2.6.18-8.el5 如果没有装全,就在redhat enterprise Linux 5.0第一个ISO的Server文件目录下可以找到对应的包,拷贝到某一具体目录下,进入目录后,用如下命令就可以进行安装: [root@localhost kernel]# rpm -ivh kernel-devel-2.6.18-8.el5.x86_64.rpm

注意:如果不装全这些包,在网卡编译时就会报错说找不到src目录文件。 用如下命令查看GCC是否安装,通常都装上的,还是检查一下比较好。 [root@localhost 2.6.18-8.el5]# whereis -b gcc gcc : /usr/bin/gcc /usr/lib/gcc /usr/libexec/gcc 3、将r8168-8.aaa.bb.tar.bz2解压出来变成r8168-8.aaa.bb文件夹形式,拷到U盘 在redhat下挂载U盘: 插入U盘 [root@localhost kernel]#mount /dev/sdb1 /mnt/usb 4.将r8168-8.aaa.bb文件夹拷都本地,如/home目录下 首先将u盘中的驱动程序包拷贝到/home目录下 [root@localhost media]# cp r8168-8\[1\].011.00.tar.bz2 /home/ [root@localhost media]# cd /home/ [root@localhost home]# ls r8168-8[1].011.00.tar.bz2 5.其次解压驱动程序包 [root@localhost home]# tar -vjxf r8168-8\[1\].011.00.tar.bz2

LCD显示屏的器件选择和驱动电路设计说明

LCD显示屏的器件选择和驱动电路设计 如何实现LCD平板显示屏驱动电路的高性能设计是当前手持设备设计工程师面临的重要挑战。本文分析了LCD显示面板的分类和性能特点,介绍了LCD显示屏设计中关键器件L DO和白光LED的选择要点,以及电荷泵LED驱动电路的设计方法。 STN-LCD彩屏模块的部结构如图1所示,它的上部是一块由偏光片、玻璃、液晶组成的LCD屏,其下面是白光LED和背光板,还包括LCD驱动IC和给LCD驱动IC提供一个稳定电源的低压差稳压器(LDO),二到八颗白光LED以及LED驱动的升压稳压IC。 STN-LCD彩屏模块的电路结构如图2所示,外来电源Vcc经LDO降压稳压后,向LCD驱动IC如S6B33BOA提供工作电压,驱动彩色STN-LCD的液晶显示图形和文字;外部电源Vcc经电荷泵升压稳压,向白光LED如NACW215/NSCW335提供恒压、恒流电源,LED的白光经背光板反射,使LCD液晶的65K色彩充分表现出来,LED的亮度直接影响LCD色彩的靓丽程度。

LCD属于平板显示器的一种,按驱动方式可分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)以及有源矩阵驱动(Active Matrix)三种。其中,单纯矩阵型又可分为扭转式向列型(Twisted Nematic,TN)、超扭转式向列型(Super Twisted Nematic,STN),以及其它无源矩阵驱动液晶显示器。有源矩阵型大致可区分为薄膜式晶体管型(ThinFilmTr ansistor,TFT)及二端子二极管型(Metal/Insulator/Metal,MIM)两种。TN、STN及TFT型液晶显示器因其利用液晶分子扭转原理的不同,在视角、彩色、对比度及动画显示品质上有优劣之分,使其在产品的应用围分类亦有明显差异。以目前液晶显示技术所应用的围以及层次而言,有源矩阵驱动技术是以薄膜式晶体管型为主流,多应用于笔记本电脑及动画、影像处理产品;单纯矩阵驱动技术目前则以扭转向列以及STN为主,STN液晶显示器经由彩色滤光片(colorfilter),可以分别显示红、绿、蓝三原色,再经由三原色比例的调和,可以显示出全彩模式的真彩色。目前彩色STN-LCD的应用多以手机、PDA、数码相机和视屏游戏机消费产品以及文字处理器为主。 器件选择 1. LDO选择。由于手机、PDA、数码相机和视屏游戏机消费产品都是以电池为电源,随着使用时间的增长,电源电压逐渐下降,LCD驱动IC需要一个稳定的工作电压,因此设计电路时通常由一个LDO提供一个稳定的 2.8V或 3.0V电压。LCM将安装在手机的上方,与手机的射频靠得很近,为了防止干扰,必须选用低噪音的LDO,如LP2985、AAT3215。 2. 白光LED。按背光源的设计要求,需要前降电压(VF)和前降电流(IF)小、亮度高(500-1800mcd)的白光LED。以手机LCM为例,目前都使用3-4颗白光LED,随着LED 的亮度增加和手机厂商要求降低成本和功耗,预计到2004年中LCM都会选用2颗高亮度白光LED(1200-2000mcd),PDA和智能手机由于LCD屏较大会按需要使用4-8颗白光LED。NAC W215/NSCW335和EL 99-21/215UCW/TR8是自带反射镜的白光LED,EL系列其亮度分为T、S、R三个等级,T为720-1000mcd,S为500-720mcd,都是在手机LCD背光适用之列。 LED驱动电路设计

Linux串口(serial、uart)驱动程序设计

Linux串口(serial、uart)驱动程序设计 https://www.wendangku.net/doc/1b16545961.html,/space.php?uid=23089249&do=blog&id=34481 一、核心数据结构 串口驱动有3个核心数据结构,它们都定义在<#include linux/serial_core.h> 1、uart_driver uart_driver包含了串口设备名、串口驱动名、主次设备号、串口控制台(可选)等信息,还封装了tty_driver(底层串口驱动无需关心tty_driver)。 struct uart_driver { struct module *owner;/* 拥有该uart_driver的模块,一般为THIS_MODULE */ const char*driver_name;/* 串口驱动名,串口设备文件名以驱动名为基础 */ const char*dev_name;/* 串口设备名*/ int major;/* 主设备号*/ int minor;/* 次设备号*/ int nr;/* 该uart_driver支持的串口个数(最大) */ struct console *cons;/* 其对应的console.若该uart_driver支持serial console, 否则为NULL */ /* * these are private; the low level driver should not * touch these; they should be initialised to NULL */ struct uart_state *state; struct tty_driver *tty_driver; }; 2、uart_port uart_port用于描述串口端口的I/O端口或I/O内存地址、FIFO大小、端口类型、串口时钟等信息。实际上,一个uart_port实例对应一个串口设备

TFT—LCD显示及驱动电路的设计

摘要 TFT—LCD显示及驱动电路设计由视频解码电路,LCD显示电路,电源控制电路和单片机控制电路四个模块组成。视频源产生模拟视频信号,由TVP5150视频解码把模拟视频信号解码输出数字视频信号,由LCD液晶屏显示。对视频解码和液晶显示器的配置是通过单片机完成的。本设计主要针对高校电视技术实践课程设计,应用于视频解码输出教学,实现信号处理可视模块化教学方案。 关键字 视频解码 LCD显示单片机

毕业论文 目录 第一章概述 (3) 1.1 设计背景 (3) 1.2系统框图 (3) 第二章 TFT--LCD液晶显示技术 (1) 2.1液晶基本性质及显示原理 (1) 2.2 PT035TN01—V6液晶显示屏 (1) 2.2.1 PT035TN01—V6模式选择 (1) 2.2.2 PT035TN01—V6屏的交直流电路设计 (1) 2.2.3 PT035TN01—V6屏的SPI电路设计 (2) 第三章图像解码的电路设计 (4) 3.1视频解码芯片的选取 (4) 3.2 TVP5150视频解码芯片 (5) 3.2.1 TVP5150芯片引脚功能 (5) 3.2.2 TVP5150典型寄存器 (5) 3.3 TVP5150视频解码系统配置 (6) 3.3 TVP5150典型电路 (6) 3.3.1 复位电路 (6) 3.3.2 A/D采样电路 (6) 3.3.3 晶振电路 (6) 3.4 TVP5150的具体配置 (7) 第四章 MCU 控制电路 (9) 4. 1单片机概述 (9) 4.2单片机的总线控制 (9) 4.2.1单片机对液晶屏的控制 (9) 4.2.2单片机对TVP5150的控制 (9) 第五章开关电源设计 (11) 5.1设计要求 (11) 5.1.1 电源芯片的选取 (11) 5.1.2功能分析 (11) 5.2 升压电路 (11) 5.2.1升压原理 (11) 5.2.2 升压电路 (11) 5.2 降压电路 (11) 5.2.1降压原理 (11) 5.2.2降压电路 (11) 第六章软件系统 (12) 6.1软件流程图 (12) 6.1.1 PT035TN01—V6液晶显示屏软件流程图 (12) 6.1.2 TVP5150解码电路程序框图 (13) 6.2 TVP5150 IIC程序见附录一 (13) 第七章系统调试与结果 (14) 7.1 硬件调试 (14) 7.1.1 调试方法 (14) 7.1.2 调试数据 (14) 7.2软件调试 (14) 7.2.1 编译环境 (14) 7.2.2 调试波形 (14) 总结 (15) 谢辞 (16) 参考文献 (17) 附录一 (18)

linux UART串口驱动开发文档

linux UART串口驱动开发文档 w83697/w83977 super I/O串口驱动开发 内容简介: 介绍了Linux下的串口驱动的设计层次及接口, 并指出串口与TTY终端之间的关联层次(串口可作TTY终端使用), 以及Linux下的中断处理机制/中断共享机制, 还有串口缓冲机制当中涉及的软中断机制; 其中有关w83697/w83977 IC方面的知识, 具体参考相关手册, 对串口的配置寄存器有详细介绍, 本文不再进行说明. 目录索引: 一. Linux的串口接口及层次. 二. Linux的中断机制及中断共享机制. 三. Linux的软中断机制. 四. TTY与串口的具体关联. 一. Linux的串口接口及层次. 串口是使用已经非常广的设备了, 因此在linux下面的支持已经很完善了, 具有统一的编程接口, 驱动开发者所要完整的工作就是针对不同的串口IC来做完成相应的配置宏, 这此配置宏包括读与写, 中断打开与关闭(如传送与接收中断), 接收状态处理, 有FIFO时还要处理FIFO的状态. 如下我们就首先切入这一部分, 具体了解一下与硬件串口IC相关的部分在驱动中的处理, 这一部分可以说是串口驱动中的最基础部分, 直接与硬件打交道, 完成最底层具体的串口数据传输. 1. 串口硬件资源的处理. W83697及W83977在ep93xx板子上的映射的硬件物理空间如下: W83697: 0x20000000起1K空间. W83977: 0x30000000起1K空间. 因为串口设备的特殊性, 可以当作终端使用, 但是终端的使用在内核还未完全初始化之前(关于串口与终端的关联及层次在第四节中详细), 此时还没有通过mem_init()建立内核的虚存管理机制, 所以不能通过ioreamp来进行物理内存到虚存的映射(物理内存必须由内核映射成系统管理的虚拟内存后才能进行读写访问), 这与先前所讲的framebuffer的物理内存映射是不同的, 具体原因如下: √终端在注册并使用的调用路径如下: start_kernel→console_init→uart_console_init→ep93xxuart_console_init→register_conso

linux下安装编译网卡驱动的方法

linux下安装编译网卡驱动的方法 你还在为不知道linux下安装编译网卡驱动的方法而不知所措么?下面来是小编为大家收集的linux下安装编译网卡驱动的方法,欢迎大家阅读: linux下安装编译网卡驱动的方法 安装linux操作系统后发现没有网卡驱动,表现为 system → Administration → Network下Hardware列表为空。 以下为安装编译网卡驱动的过程,本人是菜鸟,以下是我从网上找的资料进行整理,并实际操作的过程,仅供借鉴。 一.检测linux系统内核版本和网卡类型,相关命令如下: uname -r 查看linux内核版本(uname -a 可显示所有信息)

lsmod 设备加载情况 ls /usr/share/hwdata 查看硬件设备 lspci 查看pci网卡设备ethernet controller 厂商和型号,modprobe **** ****为网卡型号,例如modprobe RTL8101E ,如果出错,说明模块不存在,该型号不识别 我在这一步时查找不到网卡型号,无奈只能由同时采购的其他相同型号预装win7的电脑下查看网卡型号,是个笨办法,嘿嘿…… 找到网卡型号后就到驱动之家下载了相应网卡的linux驱动,这些需要根据自己的实际情况下载,不多说了,重点是后面。 二.下载网卡驱动 Intel_e1000e-1.9.5.zip 为我下载的所需的网卡驱动,这个在linux下需自己编译. 三.安装网卡驱动

1.检测编译需要用到内核的源代码包和编译程序gcc。所以如果没有的话,要先装。 [root@localhost ~]# rpm -qa|grep kernel kernel-xen-2.6.18-8.el5 kernel-xen-devel-2.6.18-8.el5 kernel-headers-2.6.18-8.el5 [root@localhost ~]# rpm -qa|grep gcc gcc-c++-4.1.1-52.el5 libgcc-4.1.1-52.el5 gcc-4.1.1-52.el5 gcc-gfortran-4.1.1-52.el5 如果缺少kernel-xen-devel-2.6.18-8.el5,可以去安装光

USB设备驱动程序设计

USB设备驱动程序设计 引言 USB 总线是1995 年微软、IBM 等公司推出的一种新型通信标准总线, 特点是速度快、价格低、独立供电、支持热插拔等,其版本从早期的1.0、1.1 已经发展到目前的2.0 版本,2.0 版本的最高数据传输速度达到480Mbit/s,能 满足包括视频在内的多种高速外部设备的数据传输要求,由于其众多的优点,USB 总线越来越多的被应用到计算机与外设的接口中,芯片厂家也提供了多种USB 接口芯片供设计者使用,为了开发出功能强大的USB 设备,设计者往往 需要自己开发USB 设备驱动程序,驱动程序开发一直是Windows 开发中较难 的一个方面,但是通过使用专门的驱动程序开发包能减小开发的难度,提高工 作效率,本文使用Compuware Numega 公司的DriverStudio3.2 开发包,开发了基于NXP 公司USB2.0 控制芯片ISP1581 的USB 设备驱动程序。 USB 设备驱动程序的模型 USB 设备驱动程序是一种典型的WDM(Windows Driver Model)驱动程序,其程序模型如图1 所示。用户应用程序工作在Windows 操作系统的用户模式层,它不能直接访问USB 设备,当需要访问时,通过调用操作系统的 API(Application programming interface)函数生成I/O 请求信息包(IRP),IRP 被传输到工作于内核模式层的设备驱动程序,并通过驱动程序完成与UBS 外设通 信。设备驱动程序包括两层:函数驱动程序层和总线驱动程序层,函数驱动程 序一方面通过IRP 及API 函数与应用程序通信,另一方面调用相应的总线驱动 程序,总线驱动程序完成和外设硬件通信。USB 总线驱动程序已经由操作系统 提供,驱动程序开发的重点是函数驱动程序。 USB 设备驱动程序的设计

linux串口测试程序

linux串口测试程序 由于已经完成了第一个HELLO程序,标志着整个编译环境已经没有问题了,下来准备做一下串口测试程序。由于串口驱动开发板已经作好了,所以就作一个Linux串口测试工具简单的数据收发看看。 Linux串口测试工具网上常见的版本都看起来比较烦琐,下面是一个简单一点的,这个程序功能是收到10个字节后会发前7个字节,如果所发的数据的第一个字节是9则退出。 #include #include #include #include #include #include #include #include #define BAUDRATE B9600 #define MODEMDEVICE "/dev/ttyUSB1" int main() { int fd,c=0,res;struct termios oldtio,newtio;//intch;static char s1[10],buf[10];printf("start ……\n");/*打开PC的COM1口*/ fd = open(MODEMDEVICE,O_RDWR|O_NOCTTY);if (fd < 0) { perror(MODEMDEVICE);exit(1);} printf("open……\n");/*将旧的通讯参数存入oldtio结构*/ tcgetattr(fd,&oldtio);/*初始化新的newtio */ bzero(&newtio,sizeof(newtio));/*8N1*/ newtio.c_cflag = BAUDRATE|CS8|CLOCAL|CREAD;newtio.c_iflag = IGNPAR;newtio.c_oflag = 0;/*正常模式*/ /*newtio.c_lflag = ICANON;*/ /*非正常模式*/ newtio.c_lflag = 0;newtio.c_cc[VTIME] = 0;newtio.c_cc[VMIN] = 10; tcflush(fd,TCIFLUSH);/*新的temios作为通讯端口参数*/ tcsetattr(fd,TCSANOW,&newtio);printf("writing……\n"); while(1) { //printf("read……\n");res = read(fd,buf,10);//res = read(fd,s1,10);//strcat(buf,s1);// res = write(fd,buf,7);printf("buf = %s\n",buf);if(buf[0]==9) break;} printf("close……\n");close(fd);/*还原旧参数*/ tcsetattr(fd,TCSANOW,&oldtio);return 0;} 还有一点要注意,就是Linux串口测试工具串口有两种工作模式,即正规模式和非正规模式,如果习惯在串口调试器中用16进制发送,此时串口应该为非正规模式才行。 下面是这两种模式的说明Linux串口测试工具正规模式(CANONICAL或者COOKED) 此模式下,终端设备会处理特殊字符,并且数据传输是一次一行的方式,既按回车后才开始发送和接收数据。例如LINUX的SHELL. Linux串口测试工具非正规模式(NON-CANONICAL

linux串口编程参数配置详解

linux串口编程参数配置详解 1.linux串口编程需要的头文件 #include //标准输入输出定义 #include //标准函数库定义 #include //Unix标准函数定义 #include #include #include //文件控制定义 #include //POSIX中断控制定义 #include //错误号定义 2.打开串口 串口位于/dev中,可作为标准文件的形式打开,其中: 串口1 /dev/ttyS0 串口2 /dev/ttyS1 代码如下: int fd; fd = open(“/dev/ttyS0”, O_RDWR); if(fd == -1) { Perror(“串口1打开失败!”); } //else //fcntl(fd, F_SETFL, FNDELAY); 除了使用O_RDWR标志之外,通常还会使用O_NOCTTY和O_NDELAY这两个标志。 O_NOCTTY:告诉Unix这个程序不想成为“控制终端”控制的程序,不说明这

个标志的话,任何输入都会影响你的程序。 O_NDELAY:告诉Unix这个程序不关心DCD信号线状态,即其他端口是否运行,不说明这个标志的话,该程序就会在DCD信号线为低电平时停止。 3.设置波特率 最基本的串口设置包括波特率、校验位和停止位设置,且串口设置主要使用termios.h头文件中定义的termios结构,如下: struct termios { tcflag_t c_iflag; //输入模式标志 tcflag_t c_oflag; //输出模式标志 tcflag_t c_cflag; //控制模式标志 tcflag_t c_lflag; //本地模式标志 cc_t c_line; //line discipline cc_t c_cc[NCC]; //control characters } 代码如下: int speed_arr[] = { B38400, B19200, B9600, B4800, B2400, B1200, B300, B384 00, B19200, B9600, B4800, B2400, B1200, B300, }; int name_arr[] = {38400, 19200, 9600, 4800, 2400, 1200, 300, 38400, 19200, 9 600, 4800, 2400, 1200, 300, }; void SetSpeed(int fd, int speed) { int i; struct termios Opt; //定义termios结构 if(tcgetattr(fd, &Opt) != 0) { perror(“tcgetattr fd”); return; }

在linux系统下如何安装网卡驱动

2011年研发二部工作 周报月报 作者:赵玉武 时间:2012-6-13

目录 一、整理漏扫系统的结构 (1) 1、整理NetScan目录中的程序。 (1) 2、整理proftpd目录中内容(插件的检测信息)。 (4) 3、整理proxyd目录中的安管(安管平台)。 (8) 二、熟悉Nessus的工作原理 (8) 1、Nessus扫描引擎的工作原理... 错误!未定义书签。 三、整理运行的整个流程.............. 错误!未定义书签。 1、通过客户端下发策略,上传到服务器上。错误!未定 义书签。 2、服务端:接收客户端下发的策略。错误!未定义书签。 3、服务端进行身份的认证....... 错误!未定义书签。

一、整理漏扫系统的结构 网卡是Linux服务器中最重要网络设备。据统计,Linux网络故障有35%在物理层、25%在数据链路层、10%在网络层、10%在传输层、10%在对话、7%在表示层、3%在应用层。由此可以看出,网络故障通常发生在网络七层模型的下三层,即物理层、链路层和网络层。对应于实际网络也就是使用的网络线缆、网卡、交换机、路由器等设备故障。Linux的网络实现是模仿FreeBSD的,它支持FreeBSD 的带有扩展的Sockets(套接字)和TCP/IP协议。它支持两个主机间的网络连接和Sockets通讯模型,实现了两种类型的Sockets:BSD Sockets和INET Sockets。它为不同的通信模型和服务质量提供了两种传输协议,即不可靠的、基于消息的UDP传输协议和可靠的、基于流的传输协议TCP,并且都是在IP网络协议上实现的。INET sockets 是在以上两个协议及IP协议之上实现的。 由于交换机、路由器通常独立于Linux或者其他操作系统。网卡设置故障是造成Linux 服务器故障最主要原因。可能因为硬件的质量或性能、磨损老化、人为误操作、不正确的网络设置、管理问题、Linux软件的BUG、系统受到黑客攻击和Linux病毒等原因造成。 Linux 服务器网卡故障排除的思路是:应当遵循先硬件后软件的方法。因为硬件如果出现物理损坏那么如何设定网卡都不能解决故障。解决问题的方法可以从自身Linux计算机的网卡查起,如果确定硬件没有问题了,再来考虑软件的设定。 1、网卡的选择 一般来说,2.4版本以后的 Linux可以支持的网卡芯片组数量已经很完备了,包括著名厂商如:Intel 以及使用广泛的 RealTek, Via 等网卡芯片都已经被支持,所以使用者可以很轻易的设定好他们的网

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结构体。

4位7段数码管驱动电路设计要求

4位7段数码管驱动电路 图1 开发板电路原理图 信号说明

1. iRST_N(异步复位) 当iRST_N信号为低时,Seg7_Driver模块中的所有寄存器异步复位为初值。 2. iCLK 模块的输入时钟40MHz。 3. iSeg_Val[15:0] 7段数码管输入二进制值,0x0~0xF iSeg_Val[15:12],左侧第一位7段数码管的值。 iSeg_Val[11: 8],左侧第两位7段数码管的值。 iSeg_Val[ 7: 4],左侧第三位7段数码管的值。 iSeg_Val[ 3: 0],左侧第四位7段数码管的值。 4. iDot_Val[3:0] 各位7段数码管小数点的显示,值为1表示显示小数点,0表示不显示小数点。 iDot_Val[3],左侧第一位7段数码管的小数点。 iDot_Val[2],左侧第两位7段数码管的小数点。 iDot_Val[1],左侧第三位7段数码管的小数点。 iDot_Val[0],左侧第四位7段数码管的小数点。 5. oDisplay[7:0] 7段数码管的数据信号。4位7段数码管共用数据信号。7段数码管为共阳极连接,各段数据线为0时,对应段发光。 6. oDis_En[3:0] 各位7段数码管的使能信号,低有效。

oDis_En[3],左侧第一位7段数码管的使能信号。 oDis_En[2],左侧第两位7段数码管的使能信号。 oDis_En[1],左侧第三位7段数码管的使能信号。 oDis_En[0],左侧第四位7段数码管的使能信号。 建议的分块: 将整个驱动电路分成Seg7_Ctrl模块与Seg7_Hex2seg模块 Seg7_Ctrl模块负责产生数码管动态显示的控制信号oDis_En的时序 Seg7_Hex2Seg模块负责将二进制值转换成数据码管显示的数据值,包括小数点的值。 注意点: 1. 动态显示过程是利用人眼的视觉残留现象来实现的,应选择适当的数码管扫描频率。可先 选择数码管的扫描显示的刷新率为125Hz(8ms),即每位数码管用2ms。 2. 完成基本功能后,可实验改变刷新率,观察数码管显示的效果,并思考原因。 3. 如果要使得数码管能够显示,A,b,C,n,o等其他字符,模块应该作怎样的修改?

Linux下网卡驱动程序

Linux下8019网卡驱动程序 福建鑫诺通信有限公司陈光平(chenggp_fj@https://www.wendangku.net/doc/1b16545961.html,) 本文以S3C44B0的CPU为例,详细解析了linux下RTL8019网卡驱动程序工作原理,其间知识大多来源互联网络,特别是浙大潘纲的论文,在此不一一列出,此文目的只是让嵌入式linux爱好者得到更多网卡驱动的资料,并获得交流机会,不足之处请指正 (一)、硬件相关部份 1、CPU与网卡的连接方式 (s3c44B0 CPU) (RTL 8019网卡) CPU与网卡接线图 上图为S3c44b0CPU和网卡的接线图,此接法并非固定,如接法不同,则牵涉到很多相应的改动,下面会详细分析不同之处 从硬件部门得到:网卡在CPU的存储空间上接BANK4,即0x08000000(看44B0手册)外部中断号为:EXTINT3 (irqs.h文件获得值为22) 上面两个值可以查CPU手册,或询问硬件设计人员 由上图可以知道以下数据: (1)、网卡与CPU地址线连接错开8位(A0接A8) (2)、总共连线,其实4根就足够用了,因为每根线可以译码4个地址空间,总共是16个地址空间,每个地址空间对应一个寄存器地址,而8019总共就是16个寄存器(3)、一般是跳线模式,不使用9346芯片 1-1 基地址算法 首先8019的基地址是300H(见RTL8019芯片资料:选择IO总线地址),但是有些硬件已在芯片中做过了偏移,比如我们的网卡已做了处理,基址已偏移到0x08000000, 那么因为网卡A0接CPU的A8,表示基地址左移8位,下一个寄存器reg0的地址就是:0x08000100(0000,0000,0001 0001,0000,0000) 还不理解的话我们看另一种接法:

TFT-LCD显示驱动电路设计

目录 1 选题背景 (1) 1.1 TFT-LCD的发展现状 (1) 1.2 课设基本内容及要求 (2) 1.2.1 硬件电路设计 (2) 1.2.2 驱动设计 (2) 1.2.3 基本要求 (2) 2 方案论证 (2) 2.1 总体设计 (2) 2.2 显示原理 (3) 2.2.1 LCD器件结构 (3) 2.2.2 液晶显示原理 (3) 2.2.3 TFT元件的工作原理 (4) 3 过程论述 (6) 3.1 控制电路设计 (6) 3.1.1 时钟电路设计 (7) 3.1.2 复位电路设计 (7) 3.1.3 液晶模块驱动 (8) 3.2 软件部分设计 (8) 3.2.1 主程序 (9) 3.2.2 初始子化程序 (9) 3.2.3 显示子程序 (9) 4 系统调试 (10) 4.1 硬件调试 (10) 4.2 软件调试 (11) 5 总结 (11) 参考文献 (13) 附录1 原理图 (14) 附录2 源程序 (15)

1 选题背景 1.1 TFT-LCD的发展现状 网络和无线通信技术的发展及其产品的迅速普及,全球数字化技术的迅速推进,促进了信息技术与信息产业的蓬勃兴起。显示器集电子、通信和信息处理技术于一体,被认为是电子工业在微电子、计算机之后的又一重大发展机会,具有广阔的市场好良好的机遇。各种平板显示技术成为研究开发的热点,其中薄膜晶体管液晶显示器(TFT-LCD)是目前唯一在亮度、对比度、功耗、寿命、体积和重量等综合性能上全面赶上和超过CRT的显示器件。它的性能优良、大规模生产特性好,自动化程度高,原料成本低廉,发展空间广阔,已迅速成为新世纪的主流产品,是21世纪全球经济增长的一个亮点。 本文围绕设计以单片机作为LCD液晶显示系统控制器为主线,基于单片机AT89C51,采用的液晶显示控制器的芯片是SED1520,主要实现由按键控制的中文显示、图片显示、滚屏以及左右移动功能。同时也对部分芯片和外围电路进行了介绍和设计,并附以系统结构框图加以说明,着重介绍了本系统应用的各硬件接口技术和各个接口模块的功能及工作过程,并详细阐述了程序的各个模块。本系统是以单片机的C语言来进行软件设计,指令的执行速度快,可读性强。 1.2 课设基本内容及要求 题目:64*128 TFT-LCD显示驱动电路设计 1.2.1 硬件电路设计 (1) 显示器与驱动IC(电路)间的接口电路设计; (2) 驱动IC(电路)与MCU间的接口电路设计; (3) 驱动IC、MCU的外围电路设计。 1.2.2 驱动设计 (1) 初始化程序设计 (2) 显示实例设计 (3) 硬件电路与驱动程序的联调、仿真 (4) 实物制作与测试 1.2.3 基本要求 (1) 具有从下向上的滚动显示功能; (2) 实现64bit级灰度调制; (3) 支持SPI接口;

Linux下查看网卡驱动和版本信息

Linux下查看网卡驱动和版本信息 查看网卡生产厂商和信号 查看基本信息:lspci 查看详细信息:lspci -vvv # 3个小写的v 查看网卡信息:lspci | grep Ethernet 查看网卡驱动 查看网卡驱动信息:lspci -vvv # 找到网卡设备的详细信息,包括网卡驱动 # lsmod 列出加载的所有驱动,包括网卡驱动 查看网卡驱动版本 查看模块信息:modifo # 其中包含version信息 或# ethtool-i RHEL 6.3中的网卡驱动版本: # modinfo igb filename: /lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/igb/igb.ko version: 3.2.10-k license: GPL description: Intel(R) Gigabit Ethernet Network Driver # modinfo e1000e filename: /lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/e1000e/e1000e.ko version: 1.9.5-k license: GPL

description: Intel(R) PRO/1000 Network Driver author: Intel Corporation, # modinfo e1000 filename: /lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/e1000/e1000.ko version: 8.0.35-NAPI license: GPL description: Intel(R) PRO/1000 Network Driver # modinfo ixgbe filename: /lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/ixgbe/ixgbe.ko version: 3.6.7-k license: GPL description: Intel(R) 10 Gigabit PCI Express NetworkDriver # modinfo r8169 filename: /lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/r8169.ko version: 2.3LK-NAPI license: GPL description: RealTek RTL-8169 Gigabit Ethernet driver 查看网络接口队列数 查看网卡接口的中断信息:#cat /proc/interrupts | grep eth0 或# ethtool-S eth0 查看网卡驱动源码的版本号 解压Intel网卡驱动源码,打开解压缩目录下的*.spec文件查看驱动的版本。 例如:解压e1000-8.0.35.tar.gz网卡驱动后,查看e1000.spec文件。

相关文档