系统设备驱动程序概述

系统设备驱动程序概述
系统设备驱动程序概述

Linux系统设备驱动程序概述

1.1 Linux设备驱动程序分类Linux设备驱动程序在Linux的内核源代码中占有很大的比例,源代码的长度日益增加,主要是驱动程序的增加。在Linux内核的不断升级过程中,驱动程序的结构还是相对稳定。在

2.0.xx到2.2.xx的变动里,驱动程序的编写做了一些改变,但是从2.0.xx的驱动到2.2.xx的移植只需做少量的工作。Linux系统的设备分为字符设备(char device),块设备(block device)和网络设备(network device)三种。字符设备是指存取时没有缓存的设备。块设备的读写都有缓存来支持,并且块设备必须能够随机存取(random access),字符设备则没有这个要求。典型的字符设备包括鼠标,键盘,串行口等。块设备主要包括硬盘软盘设备,CD-ROM等。一个文件系统要安装进入操作系统必须在块设备上。网络设备在Linux里做专门的处理。Linux的网络系统主要是基于BSD unix的socket 机制。在系统和驱动程序之间定义有专门的数据结构(sk_buff)进行数据的传递。系统里支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的支持。1.2编写驱动程序的一些基本概念无论是什么操作系统的驱动程序,都有一些通用的概念。操作系统提供给驱动程序的支持也大致相同。下面简单介绍一下网络设备驱动程序的一些基本要求。1.2.1发送和接收这是一个网络设备最基本的功能。一块网卡所做的无非就是收发工作。所以驱动程序里要告诉系统你的发送函数在哪里,系统在有数据要发送时就会调用你的发送程序。还有驱动程序由于是直接操纵硬件的,所以网络硬件有数据收到最先能得到这个数据的也就是驱动程序,它负责把这些原始数据进行必要的处理然后送给系统。这里,操作系统必须要提供两个机制,一个是找到驱动程序的发送函数,一个是驱动程序把收到的数据送给系统。1.2.2中断中断在现代计算机结构中有重要的地位。操作系统必须提供驱动程序响应中断的能力。一般是把一个中断处理程序注册到系统中去。操作系统在硬件中断发生后调用驱动程序的处理程序。Linux支持中断的共享,即多个设备共享一个中断。1.2.3时钟在实现驱动程序时,很多地方会用到时钟。如某些协议里的超时处理,没有中断机制的硬件的轮询等。操作系统应为驱动程序提供定时机制。一般是在预定的时间过了以后回调注册的时钟函数。在网络驱动程序中,如果硬件没有中断功能,定时器可以提供轮询(poll)方式对硬件进行存取。或者是实现某些协议时需要的超时重传等。二.Linux系统网络设备驱动程序2.1网络驱动程序的结构所有的Linux网络驱动程序遵循通用的接口。设计时采用的是面向对象的方法。一个设备就是一个对象(device结构),它内部有自己的数据和方法。每一个设备的方法被调用时的第一个参数都是这个设备对象本身。这样这个方法就可以存取自身的数据(类似面向对象程序设计时的this引用)。一个网络设备最基本的方法有初始化、发送和接收。------|deliver packets||receive packets

queue||(dev_queue_xmit())||them(netif_rx())|------||//||---|methods and variables(initialize,open,close,hard_xmit,||interrupt

handler,config,resources,status.)|---||//||-----|send to

hardware||receivce from hardware|-----||//||---|hardware media|---初始化程序完成硬件的初始化、device中变量的初始化和系统资源的申请。发送程序是

在驱动程序的上层协议层有数据要发送时自动调用的。一般驱动程序中不对发送数据进行缓存,而是直接使用硬件的发送功能把数据发送出去。接收数据一般是通过硬件中断来通知的。在中断处理程序里,把硬件帧信息填入一个skbuff结构中,然后调用netif_rx()传递给上层处理。2.2网络驱动程序的基本方法网络设备做为一个对象,提供一些方法供系统访问。正是这些有统一接口的方法,掩蔽了硬件的具体细节,让系统对各种网络设备的访问都采用统一的形式,做到硬件无关性。下面解释最基本的方法。2.2.1初始化(initialize)驱动程序必须有一个初始化方法。在把驱动程序载入系统的时候会调用这个初始化程序。它做以下几方面的工作。检测设备。在初始化程序里你可以根据硬件的特征检查硬件是否存在,然后决定是否启动这个驱动程序。配置和初始化硬件。在初始化程序里你可以完成对硬件资源的配置,比如即插即用的硬件就可以在这个时候进行配置(Linux内核对PnP 功能没有很好的支持,可以在驱动程序里完成这个功能)。配置或协商好硬件占用的资源以后,就可以向系统申请这些资源。有些资源是可以和别的设备共享的,如中断。有些是不能共享的,如IO、DMA。接下来你要初始化device结构中的变量。最后,你可以让硬件正式开始工作。2.2.2打开(open)open这个方法在网络设备驱动程序里是网络设备被激活的时候被调用(即设备状态由down--up)。所以实际上很多在initialize中的工作可以放到这里来做。比如资源的申请,硬件的激活。如果dev-open返回非0(error),则硬件的状态还是down。open方法另一个作用是如果驱动程序做为一个模块被装入,则要防止模块卸载时设备处于打开状态。在open方法里要调用MOD_INC_USE_COUNT宏。2.2.3关闭(stop)close方法做和open相反的工作。可以释放某些资源以减少系统负担。close是在设备状态由up转为down时被调用的。另外如果是做为模块装入的驱动程序,close里应该调用MOD_DEC_USE_COUNT,减少设备被引用的次数,以使驱动程序可以被卸载。另外close方法必须返回成功(0==success)。2.2.4发送(hard_start_xmit)所有的网络设备驱动程序都必须有这个发送方法。在系统调用驱动程序的xmit时,发送的数据放在一个sk_buff结构中。一般的驱动程序把数据传给硬件发出去。也有一些特殊的设备比如loopback把数据组成一个接收数据再回送给系统,或者dummy设备直接丢弃数据。如果发送成功,hard_start_xmit方法里释放sk_buff,返回0(发送成功)。如果设备暂时无法处理,比如硬件忙,则返回1。这时如果dev-tbusy 置为非0,则系统认为硬件忙,要等到dev-tbusy置0以后才会再次发送。tbusy 的置0任务一般由中断完成。硬件在发送结束后产生中断,这时可以把tbusy置0,然后用mark_bh()调用通知系统可以再次发送。在发送不成功的情况下,也可以不置dev-tbusy为非0,这样系统会不断尝试重发。如果hard_start_xmit发送不成功,则不要释放sk_buff。传送下来的sk_buff中的数据已经包含硬件需要的帧头。所以在发送方法里不需要再填充硬件帧头,数据可以直接提交给硬件发送。sk_buff是被锁住的(locked),确保其他程序不会存取它。2.2.5接收(reception)驱动程序并不存在一个接收方法。有数据收到应该是驱动程序来通知系统的。一般设备收到数据后都会产生一个中断,在中断处理程序中驱动程序申请一块

sk_buff(skb),从硬件读出数据放置到申请好的缓冲区里。接下来填充sk_buff中的一些信息。skb-dev=dev,判断收到帧的协议类型,填入skb-protocol(多协议的支持)。把指针skb-mac.raw指向硬件数据然后丢弃硬件帧头(skb_pull)。还要

设置skb-pkt_type,标明第二层(链路层)数据类型。可以是以下类型:

PACKET_BROADCAST:链路层广播PACKET_MULTICAST:链路层组播PACKET_SELF:发给自己的帧PACKET_OTHERHOST:发给别人的帧(监听模式时会有这种帧)最后调用netif_rx()把数据传送给协议层。netif_rx()里数据放入处理队列然后返回,真正的处理是在中断返回以后,这样可以减少中断时间。调用netif_rx()以后,驱动程序就不能再存取数据缓冲区skb。2.2.6硬件帧头(hard_header)硬件一般都会在上层数据发送之前加上自己的硬件帧头,比如以太网(Ethernet)就有14字节的帧头。这个帧头是加在上层ip、ipx等数据包的前面的。驱动程序提供一个

hard_header方法,协议层(ip、ipx、arp等)在发送数据之前会调用这段程序。硬件帧头的长度必须填在dev-hard_header_len,这样协议层回在数据之前保留好硬件帧头的空间。这样hard_header程序只要调用skb_push然后正确填入硬件帧头就可以了。在协议层调用hard_header时,传送的参数包括(2.0.xx):数据的

sk_buff,device指针,protocol,目的地址(daddr),源地址(saddr),数据长度(len)。数据长度不要使用sk_buff中的参数,因为调用hard_header时数据可能还没完全组织好。saddr是NULL的话是使用缺省地址(default)。daddr是NULL表明协议层不知道硬件目的地址。如果hard_header完全填好了硬件帧头,则返回添加的字节数。如果硬件帧头中的信息还不完全(比如daddr为NULL,但是帧头中需要目的硬件地址。典型的情况是以太网需要地址解析(arp)),则返回负字节数。hard_header返回负数的情况下,协议层会做进一步的build header的工作。目前Linux系统里就是做arp(如果hard_header返回正,dev-arp=1,表明不需要做arp,返回负,dev-arp=0,做arp)。对hard_header的调用在每个协议层的处理程序里。如ip_output。2.2.7地址解析(xarp)有些网络有硬件地址(比如Ethernet),并且在发送硬件帧时需要知道目的硬件地址。这样就需要上层协议地址(ip、ipx)和硬件地址的对应。这个对应是通过地址解析完成的。需要做arp的的设备在发送之前会调用驱动程序的rebuild_header方法。调用的主要参数包括指向硬件帧头的指针,协议层地址。如果驱动程序能够解析硬件地址,就返回1,如果不能,返回0。对rebuild_header的调用在net/core/dev.c的

do_dev_queue_xmit()里。2.2.8参数设置和统计数据在驱动程序里还提供一些方法供系统对设备的参数进行设置和读取信息。一般只有超级用户(root)权限才能对设备参数进行设置。设置方法有:dev-set_mac_address()当用户调用ioctl类型为SIOCSIFHWADDR时是要设置这个设备的mac地址。一般对mac地址的设置没有太大意义的。dev-set_config()当用户调用ioctl时类型为SIOCSIFMAP时,系统会调用驱动程序的set_config方法。用户会传递一个ifmap结构包含需要的I/O、中断等参数。dev-do_ioctl()如果用户调用ioctl时类型在SIOCDEVPRIVATE和SIOCDEVPRIVATE+15之间,系统会调用驱动程序的这个方法。一般是设置设备的专用数据。读取信息也是通过ioctl调用进行。除次之外驱动程序还可以提供一个dev-get_stats方法,返回一个enet_statistics结构,包含发送接收的统计信息。ioctl的处理在net/core/dev.c的dev_ioctl()和dev_ifsioc()里。2.3网络驱动程序中用到的数据结构最重要的是网络设备的数据结构。定义在

include/linux/netdevice.h里。它的注释已经足够详尽。struct

device{/**This is the first field of the"visible"part of this

structure*(i.e.as seen by users in the"Space.c"file).It is the name*the interface.*/char*name;/*I/O specific fields-FIXME:Merge these and struct ifmap into one*/unsigned long rmem_end;

/*shmem"recv"end*/unsigned long rmem_start;/*shmem"recv"start*/unsigned long mem_end;/*shared mem end*/unsigned long mem_start;/*shared mem start*/unsigned long base_addr;/*device I/O address*/unsigned char

irq;/*device IRQ number*//*Low-level status flags.*/volatile unsigned char start,/*start an operation*/interrupt;/*interrupt arrived*//*在处理中断时interrupt设为1,处理完清0。*/unsigned long tbusy;

/*transmitter busy must be long for bitops*/struct device*next;/*The device initialization function.Called only once.*//*指向驱动程序的初始化方法。*/int(*init)(struct device*dev);/*Some hardware also needs these fields,but they are not part of the usual set specified in Space.c.*//*一些硬件可以在一块板上支持多个接口,可能用到if_port。*/unsigned char

if_port;/*Selectable AUI,TP,.*/unsigned char dma;/*DMA channel*/struct enet_statistics*(*get_stats)(struct device*dev);/**This marks the end of the"visible"part of the structure.All*fields hereafter are internal to the system,and may change at*will(read:may be cleaned up at

will).*//*These may be needed for future network-power-down

code.*//*trans_start记录最后一次成功发送的时间。可以用来确定硬件是否工

作正常。*/unsigned long trans_start;/*Time(in jiffies)of last

Tx*/unsigned long last_rx;/*Time of last Rx*//*flags里面有很多内容,定义在include/linux/if.h里。*/unsigned short flags;/*interface flags(a

la BSD)*/unsigned short family;/*address family ID(AF_INET)*/unsigned short metric;/*routing metric(not used)*/unsigned short mtu;

/*interface MTU value*//*type标明物理硬件的类型。主要说明硬件是否需要arp。定义在include/linux/if_arp.h里。*/unsigned short type;/*interface hardware type*//*上层协议层根据hard_header_len在发送数据缓冲区前面预留硬件帧头空间。*/unsigned short hard_header_len;/*hardware hdr

length*//*priv指向驱动程序自己定义的一些参数。*/void*priv;/*pointer to private data*//*Interface address info.*/unsigned char

broadcast[MAX_ADDR_LEN];/*hw bcast add*/unsigned char pad;/*make

dev_addr aligned to 8bytes*/unsigned char dev_addr[MAX_ADDR_LEN];/*hw address*/unsigned char addr_len;/*hardware address length*/unsigned long pa_addr;/*protocol address*/unsigned long pa_brdaddr;/*protocol broadcast addr*/unsigned long pa_dstaddr;/*protocol P-P other side

addr*/unsigned long pa_mask;/*protocol netmask*/unsigned short

pa_alen;/*protocol address length*/struct dev_mc_list*mc_list;

/*Multicast mac addresses*/int mc_count;/*Number of installed

mcasts*/struct ip_mc_list*ip_mc_list;/*IP multicast filter chain*/__u32 tx_queue_len;/*Max frames per queue allowed*//*For load balancing

driver pair support*/unsigned long pkt_queue;/*Packets queued*/struct device*slave;/*Slave device*/struct net_alias_info*alias_info;/*main dev alias info*/struct net_alias*my_alias;/*alias devs*//*Pointer to the interface buffers.*/struct sk_buff_head buffs[DEV_NUMBUFFS];

/*Pointers to interface service routines.*/int(*open)(struct

device*dev);int(*stop)(struct device*dev);int(*hard_start_xmit)(struct sk_buff*skb,struct device*dev);int(*hard_header)(struct

sk_buff*skb,struct device*dev,unsigned short

type,void*daddr,void*saddr,unsigned len);

int(*rebuild_header)(void*eth,struct device*dev,unsigned long

raddr,struct sk_buff*skb);#define HAVE_MULTICAST

void(*set_multicast_list)(struct device*dev);#define HAVE_SET_MAC_ADDR int(*set_mac_address)(struct device*dev,void*addr);#define

HAVE_PRIVATE_IOCTL int(*do_ioctl)(struct device*dev,struct ifreq*ifr,int cmd);#define HAVE_SET_CONFIG int(*set_config)(struct device*dev,struct ifmap*map);#define HAVE_HEADER_CACHE void(*header_cache_bind)(struct

hh_cache*hhp,struct device*dev,unsigned short htype,__u32 daddr);

void(*header_cache_update)(struct hh_cache*hh,struct device*dev,unsigned char*haddr);#define HAVE_CHANGE_MTU int(*change_mtu)(struct

device*dev,int new_mtu);struct

iw_statistics*(*get_wireless_stats)(struct device*dev);};2.4常用的系

统支持2.4.1内存申请和释放include/linux/kernel.h里声明了kmalloc()和kfree()。用于在内核模式下申请和释放内存。void*kmalloc(unsigned int

len,int priority);void kfree(void*__ptr);与用户模式下的malloc()不同,kmalloc()申请空间有大小限制。长度是2的整次方。可以申请的最大长度也有限制。另外kmalloc()有priority参数,通常使用时可以为GFP_KERNEL,如果在中断里调用用GFP_ATOMIC参数,因为使用GFP_KERNEL则调用者可能进入sleep状态,在处理中断时是不允许的。kfree()释放的内存必须是kmalloc()申请的。如

果知道内存的大小,也可以用kfree_s()释放。2.4.2 request_irq()、free_irq()这是驱动程序申请中断和释放中断的调用。在include/linux/sched.h里声明。request_irq()调用的定义:int request_irq(unsigned int

irq,void(*handler)(int irq,void*dev_id,struct pt_regs*regs),unsigned long irqflags,const char*devname,void*dev_id);irq是要申请的硬件中断

号。在Intel平台,范围0--15。handler是向系统登记的中断处理函数。这是一个回调函数,中断发生时,系统调用这个函数,传入的参数包括硬件中断号,device id,寄存器值。dev_id就是下面的request_irq时传递给系统的参数

dev_id。irqflags是中断处理的一些属性。比较重要的有SA_INTERRUPT,标明中断处理程序是快速处理程序(设置SA_INTERRUPT)还是慢速处理程序(不设置

SA_INTERRUPT)。快速处理程序被调用时屏蔽所有中断。慢速处理程序不屏蔽。还有一个SA_SHIRQ属性,设置了以后运行多个设备共享中断。dev_id在中断共享时会用到。一般设置为这个设备的device结构本身或者NULL。中断处理程序可以用

dev_id找到相应的控制这个中断的设备,或者用irq2dev_map找到中断对应的设备。void free_irq(unsigned int irq,void*dev_id);2.4.3时钟时钟的处理类

似中断,也是登记一个时间处理函数,在预定的时间过后,系统会调用这个函数。在include/linux/timer.h里声明。struct timer_list{struct

timer_list*next;struct timer_list*prev;unsigned long expires;unsigned long data;void(*function)(unsigned long);};void add_timer(struct timer_list*timer);int del_timer(struct timer_list*timer);void

init_timer(struct timer_list*timer);使用时钟,先声明一个timer_list结构,调用init_timer对它进行初始化。time_list结构里expires是标明这个时

钟的周期,单位采用jiffies的单位。jiffies是Linux一个全局变量,代表时间。它的单位随硬件平台的不同而不同。系统里定义了一个常数HZ,代表每秒种

最小时间间隔的数目。这样jiffies的单位就是1/HZ。Intel平台jiffies的单位是1/100秒,这就是系统所能分辨的最小时间间隔了。所以expires/HZ就是以秒为单位的这个时钟的周期。function就是时间到了以后的回调函数,它的参数就

是timer_list中的data。data这个参数在初始化时钟的时候赋值,一般赋给它设备的device结构指针。在预置时间到系统调用function,同时系统把这个

time_list从定时队列里清除。所以如果需要一直使用定时函数,要在function

里再次调用add_timer()把这个timer_list加进定时队列。2.4.4 I/O I/O端口的存取使用:inline unsigned int inb(unsigned short port);inline unsigned int inb_p(unsigned short port);inline void outb(char value,unsigned short port);inline void outb_p(char value,unsigned short port);在include/adm/io.h里定义。inb_p()、outb_p()与inb()、outb_p()的不同在于前者在存取I/O时有等待(pause)一适应慢速的I/O设备。为了防止存取I/O时发生冲突,Linux提供对端口使用情况的控制。在使用端口之前,可以检查需要的I/O 是否正在被使用,如果没有,则把端口标记为正在使用,使用完后再释放。系统提供以下几个函数做这些工作。int check_region(unsigned int from,unsigned

int extent);void request_region(unsigned int from,unsigned int

extent,const char*name);void release_region(unsigned int from,unsigned int extent);其中的参数from表示用到的I/O端口的起始地址,extent标明从from开始的端口数目。name为设备名称。2.4.5中断打开关闭系统提供给驱动程

序开放和关闭响应中断的能力。是在include/asm/system.h中的两个定义。

#define cli()__asm__ __volatile__("cli":)#define sti()__asm__

__volatile__("sti":)2.4.6打印信息类似普通程序里的printf(),驱动程序要输出信息使用printk()。在include/linux/kernel.h里声明。int printk(const char*fmt,.);其中fmt是格式化字符串。.是参数。都是和printf()格式一样

的。2.4.7注册驱动程序如果使用模块(module)方式加载驱动程序,需要在模块初始化时把设备注册到系统设备表里去。不再使用时,把设备从系统中卸除。定义在drivers/net/net_init.h里的两个函数完成这个工作。int

register_netdev(struct device*dev);void unregister_netdev(struct

device*dev);dev就是要注册进系统的设备结构指针。在register_netdev()时,dev结构一般填写前面11项,即到init,后面的暂时可以不用初始化。最重要的

是name指针和init方法。name指针空(NULL)或者内容为\或者name[0]为空格(space),则系统把你的设备做为以太网设备处理。以太网设备有统一的命名格式,ethX。对以太网这么特别对待大概和Linux的历史有关。init方法一定要提供,register_netdev()会调用这个方法让你对硬件检测和设置。

register_netdev()返回0表示成功,非0不成功。2.4.8 sk_buff Linux网络各层之间的数据传送都是通过sk_buff。sk_buff提供一套管理缓冲区的方法,是Linux系统网络高效运行的关键。每个sk_buff包括一些控制方法和一块数据缓冲区。控制方法按功能分为两种类型。一种是控制整个buffer链的方法,另一种是控制数据缓冲区的方法。sk_buff组织成双向链表的形式,根据网络应用的特点,对链表的操作主要是删除链表头的元素和添加到链表尾。sk_buff的控制方法都很短小以尽量减少系统负荷。(translated from article written by Alan Cox)常用的方法包括:.alloc_skb()申请一个sk_buff并对它初始化。返回就是申请到的sk_buff。.dev_alloc_skb()类似alloc_skb,在申请好缓冲区后,保留16字节的帧头空间。主要用在Ethernet驱动程序。.kfree_skb()释放一个

sk_buff。.skb_clone()复制一个sk_buff,但不复制数据部分。.skb_copy()完全复制一个sk_buff。.skb_dequeue()从一个sk_buff链表里取出第一个元素。返回取出的sk_buff,如果链表空则返回NULL。这是常用的一个操

作。.skb_queue_head()在一个sk_buff链表头放入一个元素。.skb_queue_tail()在一个sk_buff链表尾放入一个元素。这也是常用的一个操作。网络数据的处理主要是对一个先进先出队列的管理,skb_queue_tail()和skb_dequeue()完成这个工作。.skb_insert()在链表的某个元素前插入一个元素。.skb_append()在链表的某个元素后插入一个元素。一些协议(如TCP)对没按顺序到达的数据进行重组时用到skb_insert()和skb_append()。.skb_reserve()在一个申请好的sk_buff的缓冲区里保留一块空间。这个空间一般是用做下一层协议的头空间的。.skb_put()在一个申请好的sk_buff的缓冲区里为数据保留一块空间。在alloc_skb以后,申请到的sk_buff的缓冲区都是处于空(free)状态,有一个tail指针指向free空间,实际上开始时tail就指向缓冲区头。skb_reserve()在free空间里申请协议头空间,skb_put()申请数据空间。见下面的图。.skb_push()把sk_buff缓冲区里数据空间往前移。即把Head room中的空间移一部分到Data area。.skb_pull()把

sk_buff缓冲区里Data area中的空间移一部分到Head room中。--|Tail

room(free)|--After alloc_skb()--|Head room|Tail room(free)|--After

skb_reserve()--|Head room|Data area|Tail room(free)|--After skb_put()--|Head|skb_|Data|Tail room(free)||room|push|||||Data area||--After

skb_push()--|Head|skb_|Data area|Tail room(free)|||pull||||Head room|||--After skb_pull()三.编写Linux网络驱动程序中需要注意的问题3.1中断共享Linux系统运行几个设备共享同一个中断。需要共享的话,在申请的时候指明共享方式。系统提供的request_irq()调用的定义:int request_irq(unsigned int irq,void(*handler)(int irq,void*dev_id,struct pt_regs*regs),unsigned long irqflags,const char*devname,void*dev_id);如果共享中断,irqflags设置SA_SHIRQ属性,这样就允许别的设备申请同一个中断。需要注意所有用到这个中断的设备在调用request_irq()都必须设置这个属性。系统在回调每个中断处理

程序时,可以用dev_id这个参数找到相应的设备。一般dev_id就设为device结构本身。系统处理共享中断是用各自的dev_id参数依次调用每一个中断处理程序。3.2硬件发送忙时的处理主CPU的处理能力一般比网络发送要快,所以经常会遇到系统有数据要发,但上一包数据网络设备还没发送完。因为在Linux里网络设备驱动程序一般不做数据缓存,不能发送的数据都是通知系统发送不成功,所以必须要有一个机制在硬件不忙时及时通知系统接着发送下面的数据。一般对发送忙的处理在前面设备的发送方法(hard_start_xmit)里已经描述过,即如果发送忙,置tbusy为1。处理完发送数据后,在发送结束中断里清tbusy,同时用mark_bh()调用通知系统继续发送。但在具体实现我的驱动程序时发现,这样的处理系统好象并不能及时地知道硬件已经空闲了,即在mark_bh()以后,系统要等一段时间才会接着发送。造成发送效率很低。2M线路只有10%不到的使用率。内核版本为

2.0.35。我最后的实现是不把tbusy置1,让系统始终认为硬件空闲,但是报告发送不成功。系统会一直尝试重发。这样处理就运行正常了。但是遍循内核源码中的网络驱动程序,似乎没有这样处理的。不知道症结在哪里。

3.3流量控制(flow control)网络数据的发送和接收都需要流量控制。这些控制是在系统里实现的,不需要驱动程序做工作。每个设备数据结构里都有一个参数dev-tx_queue_len,这个参数标明发送时最多缓存的数据包。在Linux系统里以太网设备

(10/100Mbps)tx_queue_len一般设置为100,串行线路(异步串口)为10。实际上如果看源码可以知道,设置了dev-tx_queue_len并不是为缓存这些数据申请了空间。这个参数只是在收到协议层的数据包时判断发送队列里的数据是不是到了

tx_queue_len的限度,以决定这一包数据加不加进发送队列。发送时另一个方面的流控是更高层协议的发送窗口(TCP协议里就有发送窗口)。达到了窗口大小,高层协议就不会再发送数据。接收流控也分两个层次。netif_rx()缓存的数据包有限制。另外高层协议也会有一个最大的等待处理的数据量。发送和接收流控处理在net/core/dev.c的do_dev_queue_xmit()和netif_rx()中。3.4调试很多Linux的驱动程序都是编译进内核的,形成一个大的内核文件。但对调试来说,这是相当麻烦的。调试驱动程序可以用module方式加载。支持模块方式的驱动程序必须提供两个函数:int init_module(void)和void cleanup_module(void)。

init_module()在加载此模块时调用,在这个函数里可以register_netdev()注册设备。init_module()返回0表示成功,返回负表示失败。cleanup_module()在驱动程序被卸载时调用,清除占用的资源,调用unregister_netdev()。模块可以动态地加载、卸载。在2.0.xx版本里,还有kerneld自动加载模块,但是2.2.xx中已经取消了kerneld。手工加载使用insmod命令,卸载用rmmod命令,看内核中的模块用lsmod命令。编译驱动程序用gcc,主要命令行参数-DKERNEL-DMODULE。并且作为模块加载的驱动程序,只编译成obj形式(加-c参数)。编译好的目标文件放在/lib/modules/2.x.xx/misc下,在启动文件里用insmod加载。四.进一步的阅读Linux程序设计资料可以从网上获得。这就是开放源代码的好处。并且没有什么"未公开的秘密"。我编写驱动程序时参阅的主要资料包括:Linux内核源代码by Michael K.Johnson by Ori Pomerantz by olly in BBS水木清华站可以选择一个模板作为开始,内核源代码里有一个网络驱动程序的模板,

drivers/net/skeleton.c。里面包含了驱动程序的基本内容。但这个模板是以以太

网设备为对象的,以太网的处理在Linux系统里有特殊"待遇",所以如果不是以太网设备,有些细节上要注意,主要在初始化程序里。最后,多参照别人写的程序,听听其他开发者的经验之谈大概是最有效的帮助了。来自:QQ分组https://www.360docs.net/doc/b211733730.html, 淘宝群发(转载保留谢谢)

特别声明:

1:资料来源于互联网,版权归属原作者

2:资料内容属于网络意见,与本账号立场无关

3:如有侵权,请告知,立即删除。

企业质量管理体系概述

一.质量方针和目标 1、公司质量方针:精益求精,追求更好。 2、公司质量目标:所有单位工程竣工一次核验合格率100%。 二、质量体系机构与职责 (1)质量体系机构:质量体系机构是质量体系的要紧组成部分之一,是实施质量治理的重要保证,旨在使质量体系有效地运行。公司质量体系机构确定了各质量职能部门间的相互关系、协调原则和方法,要求各质量职能部门及人员均按分管的要素和承担的责任完成各自的工作,并对主管领导负责。 (2)职责 公司总经理 1.组织贯彻国家及上级有关质量的方针、政策、法规,建立健全公司各级质量责任制,加强对各级质量教育,在生产、经营中确立“质量第一”的指导思想。 2.主持制定、签署、颁发公司质量方针、质量目标、《质量手册》。对公司质量体系的建立、完善、实施并长期有效运行负有决策和领导责任。

3.审批质量体系的结构设计,主持治理评审。 4.公司产品质量和服务质量全面负责。 5.主持重大质量事故调查、分析、处理,参加公司质量工作会 议。 6.任命治理者代表。 治理者代表 1.负责组织建立、完善和实施质量体系,主持编制《质量手册》,审批质量体系程序文件,组织贯彻实施公司质量方针和质量目标,推动质量体系的有效运行。 2.定期组织内部质量审核,代表公司同意顾客或认证机构审核。 3.负责向公司总经理报告质量体系的运行情况。定期组织治理评审。 4.负责策划内审工作所需资源,任命审核组长,选择审核员;向公司治理评审会议报告质量治理体系运行情况。 5.对公司所属各部门、各单位实施质量体系情况有监督和奖罚权。 6.负责就企业质量体系有关事宜与外部各方的联络工作。 副总经理 1.主管工程技术、材料、设备、安全等方面工作。 2.协助总经理贯彻落实公司质量方针、质量目标和质量体系文件,对分工组织领导的治理和工程质量负责。 3.组织、监督下属部门及项目经理部严格执行国家、行业和企业标准、地点法规。

未能成功安装设备驱动程序MTPUSB设备安装失败的解决办法

未能成功安装设备驱动程序M T P U S B设备安装失败的解决办法 文件编码(GHTU-UITID-GGBKT-POIU-WUUI-8968)

M T P U S B设备安装失败未能成功安装设备驱动程序 终极解决方法 环境介绍:电脑系统win7(32位)已安装摩托罗拉手机驱动版本(其他版本应该也行,不行的话去摩托罗拉官网下载最新驱动) 手机型号:摩托罗拉defy mb525(系统) 备注:其他电脑操作系统和不同型号手机可参考此方法,找到相应设置项即可。 问题简介: 1.当我们把手机连接至电脑,把模式调制成“摩托罗拉手机门户”时,出现下列情况 2.过一会之后便会弹出提示说:未能成功安装设备驱动程序

3.单击查看详情便弹出窗口如下图所示: 4.此时桌面右下角图标出现黄色三角号,如图所示: 5.于是我们就开始不淡定了,怎么看怎么别扭、抓狂、按耐不住。下面介绍问题解决方案 解决方法: 1.我的电脑——右键单击——管理——设别管理器,之后会看到如图所示:在便携设备下有黄色三角号提示,即是我们纠结的MTP USB设备安装不成功的展示。

MIUI手机操作系统为例,其他手机操作系统需将USB绑定服务开启即可)。选择设置——系统——共享手机网络——USB绑定,将该选项设置为“开”,这是你会发现如图所示变化,在设备管理器面板中没有了便携设备选项及黄色三角号提醒,如图所示:(但桌面右下角的黄色三角警示还在)

3.在完成以上步骤后,用手机打开WIFI并登录无线WLAN,手机打开网页检验连接是否正常,若正常则如下图所示,黄色三角号警示消失,问题解决;若以上步骤没有解决问题,请先连接WIFI并登录WLAN之后,再按步骤操作。 4.完成以上步骤并解决问题后,选择电脑桌面网络——右键单击——属性,如下图所示:此时不仅手机能上网,而且电脑也能正常连接网络,正常上网。(我的体验是连接数据不稳定,时不时的要手机重新登陆WIFI,才有数据传输,可能是高校WLAN的问题,在家网速快的可以尝试一下) 5.通过这个问题的解决,我才知道原来MTP USB设备安装失败,未能成 功安装设备驱动程序的原因是我们手机里面没有启用该设备服务。今天 才知道MTP USB设备是与手机里的共享手机网络中“USB绑定”服务相关 联的,是电脑用来使用手机WIFI网络连接进行上网的工具。

转炉设备概述(

课程名称:转炉设备 编制: 校对: 审定:

目录: 前言2页 第一章:培训目的 第一节基本知识目标2页 第二节能力目标2页 第二章:转炉设备 第一节转炉炼钢设备组成方框图- 4页 第二节顶底复吹转炉炼钢设备特点 5页 第三节转炉生产工艺流程图 6页 第四节转炉设备的组成5页 第四章转炉设备安装、试车 第一节制作单位预装15-16页 第二节现场设备安装16-17页 第三节空载荷试运转17-18页 第四节转炉试运转应满足的条件和技术要求18页 第五章转炉开新炉和冶炼 第一节转炉开新炉需要具备的条件 18页 第二节冶炼过程中的操作要求 18-19页 第三节设备动行中故障的排除方法 19页 第四节操作过程中紧急状态下的处理方法 20页 第五节设备交接班规定 21页 第六章转炉设备常见问题和解决办法 21--23页

前言 根据分厂培训计划编写了这本教材,以便我们一起共同掌握转炉炼钢主要工艺设备和机械设备的相关知识和主要工艺操作技能、解决常见的故障处理方法,通过培训能够更进一步的提高使用和维护转炉炼钢设备的能力,并使我们的操作工人和点检员分析和排除故障的能力有所提高。 同时,通过学习,进一步让点检人员了解如何更好的与一线员工的沟通。 第一章培训目标

第一节基本知识目标 1.1.1了解氧气顶吹转炉设备组成和配套设备的构造。 1.1.2熟悉和掌握转炉设备结构、工艺参数、设备操作和维护。 第二节能力目标 1.2.1了解转炉设备选型依据、设备结构特点等方面的能力。 1.2.2对转炉设备发生故障的问题点有准确判断能力。 1.2.3提高杜绝转炉设备故障、减少故障、处理故障的能力。 第二章转炉设备 第一节转炉炼钢设备组成方框图

研发项目管理系统概述

项目管理是一个管理学分支的学科,指在项目活动中运用专门的知识、技能、工具和方法,使项目能够在有限资源限定条件下,实现或超过设定的需求和期望。 基于软件的项目管理工具或者说项目管理软件,则从软件的角度为项目管理者提供参考和帮助,一般意义上,项目管理软件包括了项目管理的方方面面的功能,比如:计划管理、成本控制、资源管理、知识经验的管理等等。这样的软件我们也称之为项目管理系统。 现代的项目管理系统已经不再局限于为项目管理者提供帮助,而是成为整个项目团队的工作平台,项目成员可以直接在项目管理系统中展开项目工作,汇报工作进展。 项目管理系统 项目管理系统应该具备的基本功能有: 计划、任务日程管理 用户对每项任务排定起始日期、预计工期,并明确各任务的先后顺序以及可使用的资源。项目管理系统根据任务信息和资源信息排定项目日程,并随任务和资源的修改而调整日程。 项目监督和跟踪 项目管理系统可以跟踪多种活动,如任务的完成情况、费用、消耗的资源、工作分配等。通常的做法是用户定义一个计划,在实际执行过程中,根据当前资源的使用状况或项目的进展情况,进行一定程度的调整。 查询报表与统计 与人工相比,项目管理系统的一个突出功能是能在用户数据资料的基础上,快速、简便地生成多种报表和图表,如“资源使用状况”表、“任务分配状况”表、进度图表等,更便于项目管理者掌握直观的把握项目进展。 多项目和子项目管理 有些项目大而且复杂,将其作为一个单一的项目进行管理难度较大。而将其分解成子项目后,可以分别查看每个子项目,更便于管理。 另外,在较大型公司中,一个成员同时参与多个项目的工作的情况也很常见,这就需要在多个项目中分配工作时间。 导入和导出

设备管理体系概述

设备管理体系(概要) 设备管理对是设备的购、管、用、养、修等全过程进行有效控制,以保持设备的生产能力,满足生产需要和环境、职业安全健康管理的要求。设备管理可分为两大部分:前期管理和后期管理。 前期管理 一、评估 技术评估(对文献、型号、技术参数、配套性、供应商资质、售服、货期进行研究);(或自主开发的技术能力、货期进行预估) 经济评估(评估投资效益、价格、投资回报期) 配套分析(场地、配套设施——水、电、气等) 二、选型(确定品名、规格型号、技术要求、选样) 三、购置(确定供应商、签的购买合同、价格、货期、付款方式等) 四、安装(安装日程计划、跟进、实施) 五、调试(试运行记录、验收) 后期管理 一、组织建设 1、组织职能:以确定的安全要求(国家法规、公司规则、设备设施特点)和合理的成本 保障生产工具处于良好状态——对设备设施进行系统的研究和管理,并采取相应的措施,使其达到效率最高,性能最好,成本最低,故障最少,安全可靠。 2、组织目标:最大限度发挥现有设备设施的生产能力。 3、工作内容: 1.运用已有资源进行纠错性和预防性维修工作(局部或全局保养、预防性检查、修 理、设备改进等)

2.确定工作方法、技术手段和人力资源 3.参与新设备选购和安装投产工作 4.制定合理的操作指南,指导操作人员正确使用设备设施 5.将设备保持高度安全状态,杜绝人身及公司财产的损伤 4、工作守则:略 5、组织架构:略 6、岗位职责:略 7、设备管理程序:略 二、文档管理 1、公司一、二、三、四级及部门三、四级文件管理 2、设备台帐——清晰反映设备设施的名称、品名、生产编号、资产号、设备管理号、型 号规格、生产日期、生产厂商、购入日期、采购金额、使用部门、体积、功率等 3、技术资料——使用说明、维修手册、总图、原理图、功能图、安装手册、配件手册等 4、记录资料——使用记录、润滑记录、能耗记录、保养记录、检修记录、整改记录、培 训记录、会议记录等 三、使用管理 操作指南编制与执行督导 1、操作指南编制——重点规范操作资格认定程序、基本操作程序(使用前点检及确认、 开机程序、安全事项等)。 2、执行督导——实行点检确认制,由设备管理员于作业前用数分钟时间,按照点检规定 项目对设备进行随机抽查,检查操作员的点检实施情况并记录,以确保点检制度的落实,并为设备的预知维修提供依据。 四、维修维护管理

设备驱动程序

驱动程序 驱动程序一般指的是设备驱动程序(Device Driver),是一种可以使计算机和设备通信的特殊程序。相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。 因此,驱动程序被比作“硬件的灵魂”、“硬件的主宰”、和“硬件和系统之间的桥梁”等。 中文名 驱动程序 外文名 Device Driver 全称 设备驱动程序 性质 可使计算机和设备通信的特殊程序 目录 1定义 2作用 3界定 ?正式版 ?认证版 ?第三方 ?修改版 ?测试版 4驱动程序的开发 ?微软平台 ?Unix平台 5安装顺序 6inf文件 1定义 驱动程序(Device Driver)全称为“设备驱动程序”,是一种可以使计算机和设备通信的特殊程序,可以说相当于硬件的接口,操作系统只能通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。 惠普显卡驱动安装 正因为这个原因,驱动程序在系统中的所占的地位十分重要,一般当操作系统安装完毕后,首要的便是安装硬件设备的驱动程序。不过,大多数情况下,我们并不需要安装所有硬件设备的驱动程序,例如硬盘、显示器、光驱等就不需要安装驱动程序,而显卡、声卡、扫描仪、摄像头、Modem等就需要安装驱动程序。另外,不同版本的操作系统对硬件设

备的支持也是不同的,一般情况下版本越高所支持的硬件设备也越多,例如笔者使用了Windows XP,装好系统后一个驱动程序也不用安装。 设备驱动程序用来将硬件本身的功能告诉操作系统,完成硬件设备电子信号与操作系统及软件的高级编程语言之间的互相翻译。当操作系统需要使用某个硬件时,比如:让声卡播放音乐,它会先发送相应指令到声卡驱动程序,声卡驱动程序接收到后,马上将其翻译成声卡才能听懂的电子信号命令,从而让声卡播放音乐。 所以简单的说,驱动程序提供了硬件到操作系统的一个接口以及协调二者之间的关系,而因为驱动程序有如此重要的作用,所以人们都称“驱动程序是硬件的灵魂”、“硬件的主宰”,同时驱动程序也被形象的称为“硬件和系统之间的桥梁”。 戴尔电脑驱动盘 驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有驱动程序,计算机中的硬件就无法工作。操作系统不同,硬件的驱动程序也不同,各个硬件厂商为了保证硬件的兼容性及增强硬件的功能会不断地升级驱动程序。如:Nvidia显卡芯片公司平均每个月会升级显卡驱动程序2-3次。驱动程序是硬件的一部分,当你安装新硬件时,驱动程序是一项不可或缺的重要元件。凡是安装一个原本不属于你电脑中的硬件设备时,系统就会要求你安装驱动程序,将新的硬件与电脑系统连接起来。驱动程序扮演沟通的角色,把硬件的功能告诉电脑系统,并且也将系统的指令传达给硬件,让它开始工作。 当你在安装新硬件时总会被要求放入“这种硬件的驱动程序”,很多人这时就开始头痛。不是找不到驱动程序的盘片,就是找不到文件的位置,或是根本不知道什么是驱动程序。比如安装打印机这类的硬件外设,并不是把连接线接上就算完成,如果你这时候开始使用,系统会告诉你,找不到驱动程序。怎么办呢参照说明书也未必就能顺利安装。其实在安装方面还是有一定的惯例与通则可寻的,这些都可以帮你做到无障碍安装。 在Windows系统中,需要安装主板、光驱、显卡、声卡等一套完整的驱动程序。如果你需要外接别的硬件设备,则还要安装相应的驱动程序,如:外接游戏硬件要安装手柄、方向盘、摇杆、跳舞毯等的驱动程序,外接打印机要安装打印机驱动程序,上网或接入局域网要安装网卡、Modem甚至ISDN、ADSL的驱动程序。说了这么多的驱动程序,你是否有一点头痛了。下面就介绍Windows系统中各种的不同硬件设备的驱动程序,希望能让你拨云见日。 在Windows 9x下,驱动程序按照其提供的硬件支持可以分为:声卡驱动程序、显卡驱动程序、鼠标驱动程序、主板驱动程序、网络设备驱动程序、打印机驱动程序、扫描仪驱动程序等等。为什么没有CPU、内存驱动程序呢因为CPU和内存无需驱动程序便可使用,不仅如此,绝大多数键盘、鼠标、硬盘、软驱、显示器和主板上的标准设备都可以用Windows 自带的标准驱动程序来驱动,当然其它特定功能除外。如果你需要在Windows系统中的DOS 模式下使用光驱,那么还需要在DOS模式下安装光驱驱动程序。多数显卡、声卡、网卡等内置扩展卡和打印机、扫描仪、外置Modem等外设都需要安装与设备型号相符的驱动程序,否则无法发挥其部分或全部功能。驱动程序一般可通过三种途径得到,一是购买的硬件附

公司项目管理信息系统简介

公司项目管理信息系统简介 (作者:王建华、胡蓉) 《中国水利水电第三工程局有限公司项目管理信息系统》全面覆盖并整合公司办公自动化(包括档案系统)、项目综合管控、市场经营管理、综合项目管理、决策驾驶舱等方面的信息,解决项目部、分局、公司间各为一体的信息孤岛,建成公司集中的信息数据库,最终形成数据仓库,实现公司在项目综合管理方面的全面信息化、高度集中和系统化,对项目管理向精细化、精益化迈进将起到极大的促进作用。 一、项目管理系统的基本情况 1、项目建设背景、建设目标及意义 建设背景:根据建市[2007]72号及建市[2007]241号文件要求,为加快信息化建设步伐,大幅提升企业信息化水平和市场竞争能力,在新修订的建筑业企业资质管理规定中,特级资质标准增加了企业信息化建设考核内容,而综合项目管理系统的应用是信息化建设系统的核心内容,其所占考核权重达50%。为此,为顺利完成企业资质的重新核定工作,根据资质核定信息化建设的考评要求,公司于2009年5月引进了易建科技有限公司研发的《项目管理软件》,并结合公司自身管理需求进行了系统改进和完善,最终形成了《中国水利水电第三工程局有限公司项目管理信息系统》,并于2009年8月正式投入使用。 建设目标:项目管理系统是以项目为管理对象,覆盖项目从招投标-开工-竣工生命周期各个阶段和各个业务环节的管控。通过系统的实施,可建立公司、区域分局(专业分局)、项目部三级项目综合管理信息平台,满足各管理

层级管理需要,实现项目管理的标准化、规范化,以提高项目管理工作的效率和效益。 建设意义和实施必要性:从企业层面讲,综合项目管理系统实施是企业信息化建设的重要组成部分,既是建设部特级资质考评的硬性要求(在建项目使用综合项目管理系统需达项目总数的50%以上,近两年项目竣工管理、档案管理使用率为50%以上),更是提升公司管理水平和竞争力,实现管理现代化与信息化的根本需要,它的实施是现代企业发展的必然趋势。从项目层面讲,系统通过不同的业务模块划分和流程设计,促进项目管理行为规范化、标准化,实现了以数据为依据的科学决策方法,规范了施工管理中的经济活动,由被动管理向主动管理转型,是项目管理模式的重大变革,系统的实施对项目管理向精细化、精益化管理迈进起到极大的促进作用。 2、系统架构 从管理架构划分,系统分为业务执行层、管理控制层和决策规划层,即各项目-区域分局(专业分局)-公司三层结构。通过信息管理平台可实现不同管理层的审批流程、数据汇总、信息传递。其管理层级体系如下:

安装WIN7时提示缺少所需的CDDVD驱动器设备驱动程序的解决办法

安装WIN7时提示 “缺少所需的CD/DVD驱动器设备驱动程序” 的解决办法 问题描述:安装win7时提示:“缺少所需的CD/DVD驱动器设备驱动程序。…………”然后找遍整个硬盘/光盘也找不到合适的驱动,安装无法继续。 ————————————————————————————————————————————————————————————— 现在安装系统肯定用光驱的人不多,一般最简单的方法就是通过U盘来安装WINDOWS7这个操作系统,实际操作过程中我们用到最多的工具要数UltraISO这个软件了,现在的最新版本应该是9.5。通过插入U盘,之后在UltraISO的启动标签中,我们选择写入硬盘就可以制作我们想要的U盘WINDOWS7安装盘。 但实际操作过程中,我们会碰到一个比较麻烦的问题就是出现:缺少所需的CD/DVD驱动器设备驱动程序,这时我们的安装是没有办法继续的如下图:

其实从表面看,好像真像他提示的一样,可能是缺少驱动了,其实不然,这是微软的提示误导了我们,我们可以看一下下图 我们点击浏览按扭之后会出现如上的图片,在上图中我们可以清楚地看到硬盘的分区情况,那证明不是驱动的问题,但就是在这个窗口其实细心的朋友应该可以看出情况来,先买一个关子。这时我们没有办法继续安装,那怎么办呢?这时我们关掉上图中要我们找驱动的界面,我们回到开始安装界面,然后同时按下Shift+F10键,这时会弹出命令窗口,如下图: 在这个界面同时按下Shift+F10,出现如下窗口

我们用WINDODWS 7提供的硬盘分区命令:diskpart 来查看我们的驱动器情况,先在默认窗口中输入:diskpart 回车,提到下图 再输入:list disk 回车,图如下

转炉炼钢设备

1 概述 1.1氧气顶吹转炉炼钢特点 氧气顶吹转炉炼钢又称 LD 炼钢法,通过近几十年的发展,目前已完全取代了平炉炼钢,其之所以能够迅速发展的原因,主要在于与其它炼钢方法相比,它具有一系列的优越性,较为更突出的几点如下: 1.生产效率高 一座容量为80 吨的氧气顶吹转炉连续生产24 小时,钢产量可达到日产3000 — 4000 吨,而一座 100 吨的平炉一昼夜只能炼钢 300 — 400 吨钢,平均小时产量相差甚远,而且从冶炼周期上看,转炉比平炉、电炉的冶炼周期要短得多。 2.投资少,成本低 建氧气顶吹转炉所需的基本建设的单位投资,比同规模的平炉节约30% 左右,另外投产后的经营管理费用,转炉比平炉要节省,而且随着转炉煤气回收技术的广泛推广和应用,利用转炉余热锅炉产生蒸气及转炉煤气发电,使转炉逐步走向“负能”炼钢。 3.原料适应性强 氧气顶吹转炉对原料情况的要求,与空气转炉相比并不那么严格,可以和平炉、电弧炉一样熔炼各种成分的铁水。 4.冶炼的钢质量好,品种多 氧气顶吹转炉所冶炼的钢种不但包括全部平炉钢,而且还包括相当大的一部分电弧炉钢,其质量与平炉钢基本相同甚至更优,氧气顶吹转炉钢的深冲性能和延展性好,适宜轧制板、管、丝、带等钢材。 1 / 35

5.适于高度机械化和自动化生产 由于冶炼时间短,生产效率高,再加转炉容量不断扩大,为准确控制冶炼过程,保证获得合格钢水成分和出钢温度,必须进行自动控制和检测,实现生产过程自动化。另外,在这种要求下,也只有实现高度机械化和自动化,才能减轻工人的劳动强度,改善劳动条件。 1.2 转炉炼钢机械设备系统 氧气顶吹转炉炼钢法,是将高压纯氧[压力为0.5~1.5MPa ,纯度99.5% 以上,(我厂为99.99% )],借助氧枪从转炉顶部插入炉内向熔池吹氧,将铁水吹炼成钢。氧气顶吹转炉的主要设备有: 1.转炉本体系统: 包括转炉炉体及其支承系统——托圈、耳轴、耳轴轴承和支承座,以及倾动装置,其中倾动装置由电动机、一次减速机,二次减速机、扭矩缓冲平衡装置等组成。 2.氧枪及其升降、氧气装置及配套装置。 氧枪包括枪体、氧气软管及冷却水进出软管。 根据操作工艺要求氧枪必须随时升降,因此需要升降装置,为保证转炉连续生产,必须设有备用枪,即通过换枪装置,随时将备用枪移至工作位置,同时要求备用枪的氧气,进出水管路连接好。 3.散装料系统: 氧气顶吹转炉炼钢使用的原料有: (1)金属料——铁水、废铁、生铁块; (2)脱氧剂——锰铁、硅铁、硅锰、铝等; (3)造渣剂——石灰、萤石、白云石等;

组织机构管理信息系统项目概述

组织机构管理信息系统项目概述 机构管理信息系统项目概要 1. 项目背景

随着机构管理规章制度的逐步完善, 机构管理信息系统的支持作用日益突出。由于没有有效的管理信息系统, 无法及时、全面准确的掌握机构的现状, 从而为我办机构管理工作的进一步发展带来了一定的困难。 特别是在根据〈〈中国建设银行基层营业机构评价方法〉〉对现有机构评价时, 没有管理信息系 统的支持,大量的数据统计和分析只能靠人工操作, 工作量非常大。 鉴于管理信息系统的重要作用, 个别分行已经开始立项准备开发机构管理信息系统。为了实现全行在机构管理信息系统的开发和使用上统一连动, 避免各行各自为政, 致使系统的开发和设计缺乏整合性, 因此,全行机构管理信息系统的开发、设计和规范工作越发显得重要。如果总行不统一开发, 各行各自根据需求自行开发, 不但会造成重复开发和浪费, 而且可能又会出现开发的系统五花八门, 因此, 从当前的情况来看, 总行如果不尽早采取行动, 全行造成的相关支出可能会更大。 2. 项目目标 结合信息技术的最新进展(如数据仓库、数据挖掘、商业智能、空间分析技术等), 开发出一个切合实际、性能稳定、功能齐全的机构管理信息系统, 经过该系统直观地反映建行各机构的经营现状, 为机构的管理提供了更为科学的工作支持。 3. 需求概述 3.1 机构各种数据的录入、更新、恢复及导出

数据的录入: 提供方便的数据录入功能, 还提供通用数据接口能够和其它系统进行方便的数据交换及整和, 实现系统内部的数据一致性。 数据的更新: 当有关数据变化时, 同步更新所有关联数据。当报表格式发生变化时,只需改变摸板定义, 系统会自动按照新格式输出各种报表。 数据的恢复: 系统应提供数据恢复功能, 以便在出现错误操作时能够回退, 保证数据的准确性。 数据的导出: 以常见格式导出, 及能够根据需要对地图、表格、文字等进行‘所见即所得'的打印。 3.2 机构的主要数据 机构基本信息: 机构所在的位置、名称、类别、成立的时间、金融许可证、营业用房、设备、主要负责人、员工等情况。如能使用GIS 地理信息系统, 将GIS 和管理信息系统结合起来, 把业务数据以直观形象的方式显示的地图上最佳。 机构业务信息: 储蓄存款、企业存款、同业存款、贷款的五级分类、存款付息率、贷款收息率和成本信息等。 相关经济环境信息:同业、主要客户、当地GDR人均居民 收入等情况。 内部文件: 机构日常公文

120转炉设备介绍

一、120吨转炉装置的组成------太重提供 1、转炉炉体1套 2、转炉托圈装置1套 3、转炉倾动装置1套 二、120吨转炉装置基本技术参数

托圈耳轴轴向总长:13905 mm 托圈断面宽度:850 mm 托圈断面高度:2100 mm 托圈内径:φ7250±8 mm 转炉倾动角度:±360° 水冷却系统:通过水气套八路进水,通过驱动侧旋转接头回水 底吹配管:通过水气套八路进气 三、120吨转炉成套设备技术说明 1、转炉炉壳 转炉炉壳为全焊接式固定炉底结构,采用16MnR、厚度75mm钢板焊接而成,炉体直径为?6800mm,炉壳高度为9196mm。主要由炉口法兰、上下部圆锥段、圆柱炉身段以及锥柱间、锥球间均匀过渡用的圆环段和球形炉底等部分组成,炉口段和炉底段材料下料不准超过三块。 炉壳上部、中部、下部焊接后应进行消除应力退火;退火后,应保证尺寸和公差,圆柱

度≤10mm,然后对这几个部件进行组装检查,最大错边量≤3mm。 炉口法兰用钢板拼焊而成。上部圆锥段顶部焊接有加筋法兰,供固定炉口用。上部圆锥段外表面有半割钢管及角钢焊接而成的冷却水循环通道。在出钢口上部、下部焊有两圈法兰,上部法兰厚度为90mm,下部法兰厚度为140mm,材质为:16MnR,中间联以立筋,形成开放式箱形结构,用于安装炉体支承结构。筋板及人孔材质为Q235。 炉壳分为四段八块运输,到安装现场后进行现场组焊,并进行超声波探伤检查,合格后采用加热方式进行退火处理以消除内应力。 水冷炉口分六块,材质为耐热球墨铸铁,采购厂家为宝钢铸造有限公司。 2、托圈、耳轴装配 2.1托圈 托圈的作用是托住炉体并在倾动装置的驱动下带动炉体旋转,是转炉设备的关键件。托圈的主要尺寸为?8950 / ? 7250×2100,托圈采用16MnR钢板焊接而成。内弧板、外弧板厚度为60mm,上盖板、下盖板厚度为120mm。 转炉托圈为焊接箱形结构,其内通循环水冷却,两侧耳轴为空心结构,以容纳托圈冷却水、水冷炉口冷却水和炉壳上部圆锥段冷却水及转炉底吹供气管的通道。 托圈的两个弧形段、驱动端耳轴块、游动端耳轴块焊接后应进行消除应力退火;退火后,应保证尺寸和公差,并经磁粉和超声波探伤检验合格;然后对四个部件进行组装检查,最大错边量≤4mm。 托圈的两个弧形段、驱动端耳轴块、游动端耳轴块分为四块运输,到安装现场后进行现场组焊,并进行超声波探伤检查,合格后采用加热方式进行退火处理以消除内应力。 2.2 耳轴 驱动端耳轴、游动端耳轴为大型锻件,材质为20MnMoNb,采用碱性电炉、真空脱氧、脱气的冶炼工艺,且进行调质处理。对长、短耳轴锻件进行超声波探伤,并严格按照要求进行性能检验。耳轴安装在耳轴支块上,保证两耳轴同轴度≤Ф1mm。 托圈耳轴焊接完成后必须进行耐压试验和泄漏试验检查,用压力0.9Mpa的水试验,不得有任何泄漏现象。托圈制作完后内部残留的铁屑焊渣等杂物必须清理干净。 3、转炉倾动装置

安装Windows7时电脑提示缺少所需的CDDVD驱动器设备驱动程序的原因

安装Windows7时电脑提示缺少所需的CD/DVD驱动器设备驱动程序的原因 以及解决方案 来源:互联网作者:佚名时间:09-03 15:16:35【大中小】问题描述:安装win7时提示:“缺少所需的CD/DVD驱动器设备驱动程序。…………”然后找遍整个硬盘/光盘也找不到合适的驱动,安装无法继续。 现在安装系统肯定用光驱的人不多,一般最简单的方法就是通过U盘来安装WINDOWS7这个操作系统,实际操作过程中我们用到最多的工具要数UltraISO这个软件了,现在的最新版本应该是9.5。通过插入U盘,之后在UltraISO的启动标签中,我们选择写入硬盘就可以制作我们想要的U盘WINDOWS7安装盘。 但实际操作过程中,我们会碰到一个比较麻烦的问题就是出现:缺少所需的CD/DVD驱动器设备驱动程序,这时我们的安装是没有办法继续的如下图:

其实从表面看,好像真像他提示的一样,可能是缺少驱动了,其实不然,这是微软的提示误导了我们,我们可以看一下下图 我们点击浏览按扭之后会出现如上的图片,在上图中我们可以清楚地看到硬盘的分区情况,那证明不是驱动的问题,但就是在这个窗口其实细心的朋友应该可以看出情况来,先买一个关子。这时我们没有办法继续安装,那怎么办呢?这时我们关掉上图中要我们找驱动的界面,我们回到开始安装界面,然后同时按下Shift+F10键,这时会弹出命令窗口,如下图:

在这个界面同时按下Shift+F10,出现如下窗口 我们用WINDODWS 7提供的硬盘分区命令:diskpart 来查看我们的驱动器情况,先在默认窗口中输入:diskpart 回车,提到下图

机械设备控制技术期末题库

机械设备控制技术期末题库 命题人:王文松使用班级:105101~03 填空题 第一章 1、组合开关是一种多__ _ _ __、多___ ___、可控制多个的电器。 2、接触器互锁触点应__ __联在对应的电路中。 3、电动机点动和连续控制的区别是控制线路是否具有__ _____功能 4、可编程控制器采用____ ___的方式___ ____地进行工作。 5、液压传动是以___ ____系统中的____ ___液体作为工作介质来传递运动和动力的一种传动方式。 6、常用的液压泵有_______、_______和_______三种。 7、叶片泵按流量是否可调分为_______和_______两类。 8、液压缸按结构特点不同,可分为_______、_______和_______三大类。 9、顺序阀能控制执行元件的_______动作,其图形符号为_______。 10、根据调速方法不同,调速回路主要有_______回路、_______回路和_______回路。 11、液压控制系统由_______、_______、_______、_______和_______基本部分组成。 12、电器是接通、断开电路或_______、_______、保护设备的电工器具和装置。 13、刀开关、按钮、组合开关属于_______控制电器,接触器、继电器、电磁铁属于_______控制电器。 14、熔断器熔体的额定电流对于没有电流冲击的电路,应使熔体的额定电流_______线路的工作电流。 15、液压系统的压力取决于。 16、液体的粘度随温度的升高而,因压力的增高而。 17、液压控制阀按用途不同,可分为_______ 、 _______ 和_______ 三大类。 18、调速阀是由_______ 阀和_______ 阀串联而成的 19、溢流阀在进油节流调速回路中作_______ 阀用;在容积调速回路中作_______ 阀用。

安装驱动程序时,出现unknown device(未知设备)

故障现象 安装驱动程序时,将 USB 连接线连接至电脑后出现“unknown device(未知设备)”的提示信息。 故障原因 ?电脑主板无法正确识别 USB 2.0 模式。 ?USB 连接线出现问题。 解决方法 步骤一:停用 USB 2.0 控制器 1.根据不同的操作系统做以下操作: o在 Windows 2000 Pro 操作系统中,依次点击“开 始”→“控制面板”→“系统”。 o在 Windows XP/Server 2003 操作系统中,依次点击“开 始”→“控制面板”→“性能和维护”→“系统”。 o在 Windows Vista 操作系统中,依次点击“开始 ()”→“控制面板”→“性能和维护”→“系 统”→“设备管理器”。如图 1 设备管理器所示: 图 1: 设备管理器 o在 Windows 7 操作系统中,依次点击“开始 ()”→“控制面板”→“系统和安全”→“设备 管理器”。如图 2 设备管理器所示:

图 2: 设备管理器 注 :本文以 Windows XP 操作系统的操作方法为例,其他操作系统的操作方法可作参考。 2.在“系统属性”窗口中,从“硬件”选项卡中点击“设备管理 器”按钮。如图 3 系统属性所示: 图 3: 系统属性

3.在“设备管理器”窗口中,展开“通用串行总线控制器”主项, 点击“USB2 Enhanced”子项。如图 4 USB 2.0 子项所示: 图 4: USB 2.0 子项

注 :本文以 Intel (R) 82801 主板芯片组为例,其他厂商芯片组的操作方法可以作参考。 4.在“设备管理器”窗口中,依次点击“操作”→“停用”。如图 5 注 :如果您使用的是 USB 接口的键盘和鼠标,需要先改用 PS/2 接口的键盘和鼠标,以免停用 USB 2.0 控制器后无法正常使用这些设备。 6.

项目管理系统-概要设计

项目管理系统概要设计说明书

目录 1引言 (5) 1.1编写目的 (5) 1.2背景 (5) 1.3定义 (5) 1.4参考资料 (6) 2总体设计 (6) 2.1需求规定 (6) 2.2运行环境 (6) 2.3系统结构 (7) 2.4基本设计概念和处理流程 (7) 2.4.1用例图 (7) 2.4.2流程图 (8) 2.5功能需求与程序的关系 (8) 2.6人工处理过程 (8) 2.7尚未解决的问题 (9) 3接口设计 (9) 3.1用户接口 (9) 3.2外部接口 (12)

3.3内部接口 (12) 4运行设计 (13) 4.1运行模块组合 (13) 4.2运行控制 (13) 4.3运行时间 (13) 5系统论据结构设计 (14) 5.1逻辑结构设计要点 (14) 5.2物理结构设计要点 (14) 5.3数据结构与程序的关系 (14) 6系统出错处理设计 (15) 6.1出错信息 (15) 6.2补救措施 (15) 6.3系统维护设计 (15)

文件信息 变更记录

变更审阅 1引言 1.1编写目的 本说明书目的在于明确说明项目管理系统中立项管理里各功能模块的划分,以及相关流程,数据结构与相关接口设计等,以便编程人员使用 本说明书的主要读者为系统分析员、用户和使用部门的有关人员,为后面的系统开发提供依据。

1.2背景 开发软件名称:项目管理系统. 项目任务提出者:亿江(北京)科技发展有限公司实现软件单位:亿江(北京)科技发展有限公司 项目与其他软件,系统的关系:父子系统关系1.3定义 【PRJ】PROJECT的简写 【Milestone】里程碑 【Deliverable】交付物 【Attachment】附件 【Mapping】表与表之间关联 【Task】任务 【Complete】完工 【Approval】审批 【Model】实体层 【BLL】业务层缩写 【View】页面展示层 【DAL】数据处理层缩写 【IDAL】数据处理层接口缩写 【Common】公共调用类库 【LogCommon】系统日志类库

驱动程序安装方法

驱动程序安装方法 初识电脑的人,可能为安装驱动程序而头疼。因为对驱动程序了解得不多就会在安装过程中走不少弯路,下面就给大家介绍一下安装驱动程序的两种常用方法和一些实用技巧。 一、安装即插即用设备的驱动程序 安装前的准备工作很重要,一般我们拿到要安装的新硬件时,首先要查看外包装盒,了解产品的型号、盒内部件及产品对系统的最低要求等信息。紧接着就要打开包装盒,取出硬件产品、说明书和驱动盘(光盘或软盘),认真阅读说明书或驱动盘上的ReadMe 文件,一般说明书上写有安装方法和步骤,以及安装注意事项。除了阅读说明书外,还应记得硬件产品上印刷的各种信息以及板卡产品使用的主要芯片的型号。这些信息就是确定产品型号及厂家的重要依据,只有知道这些,才能在网上查找最新的驱动程序。最后按照说明书上介绍的方法来安装硬件。通常安装内置板卡、内置驱动器,使用串口或PS /2接口的设备都应关机断电后再操作,而安装USB设备、笔记本电脑的PC卡时可以带电热插拔。当然,如果是Win2000系统则均可热插拔。完成前面的准备工作之后,就可以启动Windows 来安装驱动程序了。通常情况下,Windows 能够自动检测到PCI 卡、AGP卡、ISA卡、USB设备以及多数打印机和扫描仪等外设,并提示用户插入安装盘。以YAMAHA724声卡为例,其在Win98下安装驱动程序的详细步骤如下。 1.Win98在启动过程中会自动检测即插即用设备,一旦发现了新设备,并且在INF目录下有该设备的.inf 文件,系统将自动安装驱动程序;如果这是一个新设备,INF目录下没有相应的.inf 文件,那么系统就会启动硬件向导。我们单击“下一步”让安装向导自动搜索设备驱动程序,然后再单击“下一步”。 2.在图3中只选中“指定位置”,插入驱动光盘,并单击“浏览”,根据说明书的介绍,选择简体中文版驱动程序所在的目录“E:\Lx_so u n d /Yamaha /Win9X”,点“确定”后单击“下一步”。需要注意的是:Win95的安装向导没有自动搜索功能,我们必须选择“从磁盘安装”,并指定驱动程序所在的位置。驱动程序所在的目录通常是驱动盘上的“Win95”、“Win9X”或“Windows98”目录。 3.硬件安装向导会在指定目录下查找与设备相符的.inf 文件,此例中,硬件向导将在指定目录下找到并向作户报告发现YAMAHA724声卡驱动程序,继续按“下一步”。 4.硬件安装向导显示Windows 准备安装的驱动程序的信息,单击“下一步”后,硬件向导便会根据.inf 文件的内容把指定的文件拷贝到相应的目录下,并在注册表中写入相应的信息,安装成功后显示出对话框。 5.对多数设备而言,到这里驱动程序就算安装完毕了。但如果你安装的是声卡那就还未结束,因为刚才的步骤只能装完声卡的主体部分。单击“完成”后,Windows 又会报告发现了两个新硬件,分别是声卡的DOS 仿真部件和声卡上的游戏控制端口。由于此时SBPCI9X.inf 文件已经被拷到“Windows /INF /Other”子目录下,所以Windows 能够自动安装好这两种设备的驱动程序。 6.驱动程序安装完毕后,我们需要检查设备能否正常工作。检查前还要进行额外的设置,例如使用网卡之前必须先安装和设置网络协议,用调制解调器上网之前要先“新建连接”等。此例中,在“控制面板”里打开“系统”→“设备管理器”→“声音、视频和游戏控制器”,可以看见下面多了三个设备,只要设备的小图标上没有黄色惊叹号,就表示驱动程序运行正常。 二、安装非即插即用设备的驱动程序

转炉设备维护

目录 一、前言 (1) 1、设备维护制度 (1) 1.1设备维护 (1) 1.2设备维度 (1) 2、氧气转炉车间概况 (2) 2.1氧气转炉车间的组成 (2) 2.2主厂房个跨间的布置 (2) 2.3氧气转炉炼钢车间主要设备 (2) 2.3.1转炉炉体 (2) 2.3.2炉体支撑装置 (3) 2.3.3炉体倾动机械 (5) 2.3.4吹氧设备 (6) 3.供料设备 (7) 3.1加料装置常见故障 (7) 3.2铁合金称量车维护检查 (7) 4、烟气净化和回收设备 (7) 4.1烟气净化系统 (7) 4.2烟罩 (8) 4.3烟道 (8) 4.4风机 (8) 4.5 水封逆止阀 (9) 二、转炉设备维护新技术 (9) 1、溅渣护炉工艺 (9) 2、转炉炉体与托圈的连接装置新技术 (13) 三、结论 (13) 参考文献 (15) 致谢 (15)

转炉设备维护检修要点 摘要:炼钢在钢铁联合企业内是一个中间环节,它联系着前面的炼铁等原料供应和后面的轧钢等成品生产,炼钢车间的生产对整个钢铁联合企业有重大的影响,而炼钢车间的正常生产需要以设备的正常运转为依托,因此,设备的维护与检修尤为重要。本文就介绍另一些氧气转炉设备维护与检修的内容以及维护转炉的新技术。 关键词:设备维护制度转炉炉体托圈与耳轴倾动装置吹氧设备供料设备烟气净化装置溅渣护炉

一、前言 1、设备维护制度 1.1设备维护 设备维护(Eq ui pme nt se rv ice m ain te nan ce):设备维修与保养的结合。为防止设备性能劣化或降低设备失效的概率,按事先规 定的计划或相应技术条件 的规定进行的技术管理措施。 1.2设备维护制度 设备维修制度,是指对设备进行维护、检查和修理所规定的制度,其内容是随着生产和技术的发展而不断发展的。 一、计划预修制 计划预修制,又称计划修理制,是指我国工业企业50年代从苏联引进后开始普遍推行的一种设备维修方式。这种维修是进行有计 划的维护、检查和修理,以保证设备经常处于完好状态。其特点在 于预防性与计划性,即在设备未曾发生故障时就有计划地进行预防 性的维修。这种按事先规定计划进行的设备维修是一种比较科学的 设备维修制度,有利于事先安排维修力量,有利于同生产进度安排 相衔接,减少了生产的意外中断和停工损失。运用这种维修制度, 要求了解和掌握设备的故障理论和规律,充分掌握企业设备及其组 成部分的磨损与破坏的各种具体资料与数据。在设备众多、资料有 限的情况下,可以在重点设备以及设备的关键部件上应用。计划预 修制的内容主要有:日常维护、定期检查、清洗换油和计划修理。二、计划保修制 计划保修制是60年代在总结计划预修制的基础上,建立的一种设备维修制度。它的主要内容是:日常保养,一级保养和计划大修。这是一种有计划地进行三级保养和大修理的制度和方法。 三、全员生产维修制(T MP) 全员生产维修制,又称预防维修制,是日本在学习美国预防维修的基础上,吸收设备综合工程学的理论和以往设备维修制度中的 成就逐步发展起来的一种制度。我国是80年代开始,引进研究和推行这种维修制度的。全员生产维修制的核心是全系统、全效率、全员。

工程项目管理系统概述资料

工程项目管理系统 概述资料 1

工程项目管理 系统概述 本系统为建筑项目开发商、承包商、和监理机构等用户,提供基于因特网的项目管理系统平台,对工程项目的进度、质量、成本、材料和文档进行在线监控和实时管理,其中包括:施工计划编排和动态调控、成本核算与预警、材料供应计划与库存管理、质量系统的监测与管理、文档的储存与信息管理等内容,为用户提供既能分项使用,又能够进行综合管理的方便灵活的工程项目管理体系,为用户提供适应未来的电子商务需要的基础。

此系统同财务系统、产品数据管理系统和合同管理系统,都存在相互之间的数据传输的接口,以达到她们之间的信息共享。 系统特点 进度、资源、成本三位一体; 项目进度一目了然; 作业视图一目了然,操作简便; 3

可对作业进行分级和分组管理, 每个作业还可和多个合同相对应,是合同分类清晰明了; 可灵活检索作业; 灵活而强大的协同工作机制。 系统流程图 进度管理 进度计划网络生成与计算。(1)根据输入工序的属性(紧前工序、紧后工序、工序占用时间等),绘制pert网络计划图;(2)或者经过直接在图形上添加、修改工序计划,自动在数据文件中修改该工序的信息;(3)根据实际工程的进度状况的数据输入,绘制计划进展的前锋线,动态调整网络计划。 4

计划任务分解。实现将网络计划从总体工程----单位工程----单项工程----作业工序的层层分解,输出任务计划。 计算出相应资源和物料需求量,制定物料需求计划,输出计划报表。优化模块对网络计划的时间进度、资源均衡配置、赶工安排等进行优化计算。 质量管理 根据进度计划,制定年度计划和具体的月、周计划,强化对质量控制点以及质量重点管理要素的审核与管理 现场施工质量检验纪录,监督检查,材料质量检验,隐蔽工程、单位工程、单项工程质量验收,报表和报告等 质量计划完成情况的综合分析与评价,分析质量对成本和进度的影 5

相关文档
最新文档