易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux PCI驱动模型

      PCI是外围设备互连(Peripheral Component Interconnect)的简称,作为一种通用的总线接口标准,它在目前的计算机系统中得到了非常广泛的应用。PCI提供了一组完整的总线接口规范,其目的是描述如何将计算机系统中的外围设备以一种结构化和可控化的方式连接在一起。
      PCI将计算机系统中的总线子系统与存储子系统完全地分开,CPU通过一块称为PCI桥(PCI-Bridge)的设备来完成同总线子系统的交互,尽管目前PCI设备大多采用32位数据总线,但PCI规范中已经给出了64位的扩展实现。
                                      
(1)关键数据结构
      PCI设备上有三种地址空间:PCI的I/O空间、PCI的存储空间和PCI的配置空间。CPU可以访问PCI设备上的所有地址空间,其中I/O空间和存储空间提供给设备驱动程序使用,而配置空间则由Linux内核中的PCI初始化代码使用。内核在启动时负责对所有PCI设备进行初始化,配置好所有的PCI设备,包括中断号以及I/O基址,并在文件/proc/pci中列出所有找到的PCI设备,以及这些设备的参数和属性。
A,pci_driver:这个数据结构在文件include/linux/pci.h里,这是Linux内核版本2.4之后为新型的PCI设备驱动程序所添加的,其中最主要的是用于识别设备的id_table结构,以及用于检测设备的函数probe( )和卸载设备的函数remove( )。
B,pci_dev:这个数据结构也在文件include/linux/pci.h里,它详细描述了一个PCI设备几乎所有的硬件信息,包括厂商ID、设备ID、各种资源等。
(2) 基本框架
      在用模块方式实现PCI设备驱动程序时,通常至少要实现以下几个部分:初始化设备模块、设备打开模块、数据读写和控制模块、中断处理模块、设备释放模块、设备卸载模块。下面给出一个典型的PCI设备驱动程序的基本框架(只列出主要引用)。
/* 指明该驱动程序适用于哪一些PCI设备 */
static struct pci_device_id demo_pci_tbl [] __initdata = {
    {PCI_VENDOR_ID_DEMO, PCI_DEVICE_ID_DEMO, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEMO},
    {0,}
};
/* 对特定PCI


相关文档:

Grub引导Linux或者windows系统

很多新手,在安装linux系统时常常会出现的问题:引导程序装错,或者不小心删除linux分区,把mbr删掉了。或者装完linux后又重装windows,把mbr覆盖了,以致无法启动系统,出现"Grub>"的情况。
如果将Grub或者Lilo安装在Mbr(主引导扇区),重新安装Windows会造成Grub或者Lilo的丢失。如果把它们安装在根分区(root分区), ......

Linux/Unix工具Windows版本的下载地址

Linux/Unix命令行下的功能相当强大,当然Windows下也可以分享其功能,以下是Linux/Unix工具Windows版本的下载地址
 
1、GnuWin32 packages
http://gnuwin32.sourceforge.net/packages.html
 
2、Gnu utilities for Win32
http://unxutils.sourceforge.net/UnxUtils.html
 
两个资源站点各有优点:
......

linux下logrotate 配置和理解

对于Linux 的系统安全来说,日志文件是极其重要的工具。系统管理员可以使用logrotate 程序用来管理系统中的最新的事件,对于Linux 的系统安全来说,日志文件是极其重要的工具。系统管理员可以使用logrotate 程序用来管理系统中的最新的事件。logrotate 还可以用来备份日志文件,本篇将通过以下几部分来介绍
  &n ......

linux内核register_chrdev_region()系列函数

内核中所有已分配的字符设备编号都记录在一个名为 chrdevs
散列表里。该散列表中的每一个元素是一个 char_device_struct 结构,它的定义如下:
  
static struct char_device_struct {
       struct char_device_struct *next;    // 指向散列冲突链表中的 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号