搜档网
当前位置:搜档网 › 基于Linux的USB设备重定向研究

基于Linux的USB设备重定向研究

基于Linux的USB设备重定向研究
基于Linux的USB设备重定向研究

第27卷第4期2008年12月武 汉 工 业 学 院 学 报

Journal of W uhan Polytechnic University Vol 127No 14Dec 12008

收稿日期:2008209211 

作者简介:王璇(1978-),男,福建省福清县人,工程师。

文章编号:100924881(2008)0420040203

基于L i n ux 的USB 设备重定向研究

王 璇1

,蔡雄飞2

,吴志军

3

(1.福建工程学院计算机与信息科学系,福建福州350014;2.武汉市建筑设计院,湖北武汉430014;

3.武汉工业学院机械工程系,湖北武汉430023)

摘 要:L inux 具有良好的移植性和较好的稳定性,在终端和服务器的领域都得到极广的应

用。而US B 总线也具有很强的通用性,是目前最为流行的外围接口总线之一。鉴于L inux 的操作系统作为服务器不支持设备重定向这一缺陷,提出基于L inux 的US B 设备重定向的方案,介绍了URB 请求重定向的处理流程以及服务器和终端所需要做的工作。关键词:US B;重定向;L inux

中图分类号:TG 306 文献标识码:A

0 引言

由于L inux 开放源代码便于移植,运行稳定,无论是在终端还是服务器领域,L inux 的应用都越来越广。L inux 终端可以通过xd mcp 等协议登陆到L inux 服务器,在这种c /s 体系中,数据的访问、查询、处理、存储在服务器上,终端只负责数据的输入输出以及前期工作,因此对终端的软件和硬件的要求不高。

US B 设备即插即用,数据传输速率快,US B 接

口已经取代串口、并口、I EEE1394,成为使用最广泛的计算机外围接口。但是xdmcp 等协议并没有象W indo ws 服务器提供的rdeskt op 、I CA 协议那样,具

有设备重定向的功能,也就是说终端登陆到L inux 服务器后,服务器上的应用程序并没有办法操作终端上的US B 设备,而终端本地多采用嵌入式操作系统,对设备操作能力有限。这对于本地资源来说,是一种严重的浪费,也使L inux 服务器的应用受到了一定限制。

本文提出了基于L inux 的US B 设备重定向的方案,详细介绍了URB 请求重定向的处理流程以及服务器和终端所需要做的工作,使得L inux 服务器上的应用程序可以访问L inux 终端上的US B 设备。

1 设备重定向

1.1 重定向的原理

设备重定向,就是把L inux 服务器上,对设备的操作,重定向到L inux 终端上。US B 设备重定向的原理是:在服务器通过创建虚拟设备,对该设备的操

作(主要是URB 请求)被虚拟驱动通过网络发送到终端,终端接收到请求后,发送给US B 设备,再把结果通过网络返回给服务器。对于服务器来说,网络是透明,上层的应用程序并不知道它所操作的对象是远端的US B 设备,就像操作本地的US B 设备。也就是把对服务器本地的虚拟设备的URB 请求重定向到终端的实际US B 设备。URB 请求的具体执行是L inux 终端来完成。

要成功的完成URB 请求操作,就必须搞清楚URB 请求的含义以及所代表的操作。1.2 URB

URB (US B request bl ock )是US B 设备驱动中用

来描述与US B 设备通信所用的基本载体和核心数据结构。用户要和US B 设备通讯,必须按照URB 请求包的格式提交给L inux 内核,内核根据这个URB 请求包的p i pe 信息,把URB 请求包添加到不

4期王璇,蔡雄飞,吴志军:基于L inux的US B设备重定向研究

同链表中,并通过总线发送出去。US B设备收到与自身地址相匹配的URB请求包后,对发送方作出合理的握手响应包,并将数据交付指定的endpoint,从而完成一次数据传送[4]。因此,可以说操作US B设备的过程,就是处理URB请求包的过程。

一个典型的URB生命周期包括①创建一个URB。②为该URB指定一个endpoint③由US B设备驱动程序递交到US B核心。④由US B核心递交到US B设备的对应的主控制器驱动程序。⑤由US B主控制器驱动程序处理。⑥当URB结束之后,US B主控制器驱动程序通知US B设备驱动程序[1]。

1.3 L inux内核处理URB

US B协议规定有控制传输、同步传输、中断传输,块传输四种URB请求类型,不同的传输类型也对应着不同的p i pe。

L inux内核用struct urb来描述URB请求。内核通过usb_all oc_urb()为URB分配一块struct urb 结构,并进行初始化,然后调用usb_subm it_urb()提交给US B核心,URB的执行是异步操作,如果调用usb_sub m it_urb()成功,就会立即返回。这个时候, URB请求并没有被处理,只是把URB请求添加到链表中。可以通过调用usb_unlink_urb()或者usb_ kill_urb()来取消一个URB请求。当URB请求被处理结束后,会调用URB结构所初始化的回调函数。

对于处理控制传输和块传输的URB请求, L inux内核提供了usb_contr ol_m sg(),usb_bulk_m sg ()接口函数,封装了上述的一系列操作。对于中断传输和同步传输,必须由使用者自定义实现。

1.4 重定向的实现方法

在L inux下,设备驱动以静态或者动态的方式加载到内核中。而设备是以/dev目录下的设备文件形式存在的。对设备的操作就是对这些设备文件进行操作。每个设备文件都有一个主设备号,是由驱动指定的。主设备号标识了对应的设备驱动。如串口和并口的主设备号各不相同。

设备的驱动就是open(),cl ose(),read(), write()以及i octl()等一组操作设备的函数。应用程序对设备文件进行open,cl ose,read,write等操作,就是调用对应设备驱动的相关函数。

在服务器端,设计一个守护进程,同时设计一个虚拟驱动,并建立相应的/dev目录下的设备文件,该驱动主要负责和守护进程通讯。当上层应用对虚拟设备发送URB请求的时候,该请求被虚拟驱动拦截到,通过wake_up()唤醒守护进程正在等候的信号量,虚拟驱动把该URB请求作为参数传递给守护进程。守护进程接收到该参数后,就通过网络把URB请求发送给终端。

终端则需要修改L inux内核的加载策略,并设计一个US B通用驱动。L inux内核的US B总线上,有一个设备链表和驱动链表,当插入US B设备的时候,linux内核遍历驱动链表,根据加载策略对驱动的静态或者动态id和usb设备的id信息进行匹配,如果匹配成功,就把该驱动加载给插入的US B设备。但是对于终端来说,驱动只是实现服务器发送过来的URB请求,因此,需要设计一个通用的US B 设备驱动,支持任何一个usb设备。并且修改既定的US B驱动加载策略,US B设备插入US B接口时, linux内核不再根据既定的加载策略给该设备加载驱动,而是直接加载通用驱动。URB请求的处理,最终是通过通用驱动来完成的。

终端还需要设计一个守护进程,监视着服务器发送过来的URB请求。当守护进程接收到服务器端发送过来的URB请求时,把该URB请求作为参数传递给通用驱动,并把结果返回给服务器。

US B设备通用驱动加载流程如图1所示,US B 设备重定向数据流程如图2所示

.

14

武 汉 工 业 学 院 学 报2008年

1.5 实验测试

服务器配置:P41.8G A,I ntel845G V主板, Mandrake9.0,linux22.6.18内核。客户端配置: Sc2410,linux22.6.18内核。

Sc2410的US B接口上接一个e U stick64M U 盘,服务器端向U盘发送GET_DESCR I PT OR_FROM _DE V I CE,SELECT_CONF I G URATI O N,SE LECT_I NTERF ACE,CLASS_INTEREF ACE等URB请求,经测试,都能够得到正确的结果。实验测试结果如表1所示。

表1 实验测试结果

RequestType Request Value I ndex结果0x8062000正确

0x806302409正确

0x8061000正确

0x8062000正确2 总结

本文给出了一个US B设备的映射模型,通过该模型,可以实现US B设备URB请求的重定向。要实现完整的应用,各种URB请求包必须严格按照顺序发送,上层应用程序还需要对返回的URB请求包根据实际设备进行数据的组合,以实现打印、扫描等功能。一些支持多种协议的US B设备如U盘、US B key等,需要对该方案做进一步的完善。也可以把该模型和xd mcp等协议绑定在一起,使得xd mcp支持US B设备重定向。该模型通过修改也可以用于串口和并口等设备的重定向。

随着计算机周边设备使用的不断增加,对串口,并口设备的重定向的需求也越来越多,相信在新的c/s体系的协议和L inux操作系统中,对设备重定向的支持也将越来越强大。

参考文献:

[1] 倪继利.L inux内核分析及编程[M].北京:电

子工业出版社,2006.

[2] (美)科波特.L inux设备驱动程序(第三版)

[M].魏永明,耿岳,钟书毅.北京:中国电力

出版社,2006.

[3] 肖刚,李纪扣,畅卫功,等.嵌入式L inux下

usb驱动的实现[J].微计算机信息(嵌入式与

S OC),2007,23:86288.

[4] 巢洪斌.L inux操作系统的内核与设备驱动程

序[E B/OL].(2008203201)[2008208230].

htt p://https://www.sodocs.net/doc/177564302.html,/i m g/第九章.pdf.

[5] (美)DAN I E L P BOVET,MARCO CES ATI.深

入理解L inux(第三版)[M].陈莉君,张琼声,

张宏伟.北京:中国电力出版社,2007.

Re sea rch on USB Devi ce Redirected unde r Li nux

WAN G X uan1,CA I X iong2fei2,WU Zhi2jun3

(https://www.sodocs.net/doc/177564302.html,puter and I nfor mati on Science Depart m ent,Fujian University of Technol ogy,Fuzhou350014,China;

2.Wuhan Architectural Design I nstitute,Wuhan430014,China;

3.Depart m ent ofMechanical Engineering,Wuhan Polytechnic University,Wuhan430023,China)

Ab s trac t:L inux syste m has a good graft and good stability in the area of ter m inals and servers,and has very br oad app licati on.The US B bus als o has str ong commonality,and is currently the most popular one of the external bus interface.L inux2based operating syste m as a server does not support equi pment redirected.This paper intr oduces how t o make US B devices redirected based on linux,es pecially the p r ocess of URB and the work servers and ter m inal need t o do.

Key wo rd s:US B;redirect;L inux

24

如何运用权力推动工作

工作、事情,表面上是流程,其实背后都是一个个的活人~所以归根结底,推动工作本质上,还是和人打交道的学问。 如果你是boss不是人,那就简单了~没吃过猪肉还没见过猪跑么~没当过领导总被领导管过吧…… 如果你是同级甚至还是下级…… 一是做好自己的本职工作——虽然严格来说,如果你跟对方的工作没有那么高的耦合性(即工作成果并不互相依赖),那么你是否完成了自己的工作和对方是否能完成他的工作,基本上是不相关的。但事实上如果你要推动别人,先得把自己洗洗干净,要不没有说服力…… 二是提升自己的影响力,积极影响他人——一是前提啦,自己的本职工作完成的好,自然就会在团队中有一定的影响力。一方面可能是因为你的专业技能,另一方面也因为你的工作成绩(这两者其实是相互依赖的)。利用这种影响力可以做很多事情,其中推动他人完成其本职工作就是其中一件事情 三是适当的强势——推动别人完成工作的,除了领导这一角色以外,往往就是项目经理了。但项目经理由于需要管理来自不同部门的不同角色,而且又是平级管理(即并非对方上级),人格力量就显得很重要。打成一片和居高临下都不是好的状态,孔子说“唯女子与小人为难养也,近之则不逊,远之则怨”。这话有点不合理,其实并不光女子与小人这样,所有人都是这个B样~跟他不熟吧,没法推;跟他太熟吧,不怕你推。领导者跟被领导者保持必要的距离感还是很重要的。而保持距离感的一个主要手段,就是表现得强势。当然,要是适度的,而且要有前期的相互了解和沟通为前提,不然很容易变成别人眼中的2B~ 总的来说,推动一件事(不论是工作还是生活中),都需要运用一个人的权力 但权力本质上是一种幻觉~如果没人听你的,权力又从何而来呢?怎么样营造出一种权力的幻觉呢? 一是自身努力赢得肯定,二是适当技巧因人而异。 1)制定时间表:从项目的deadline反推,把每项工作的完成时间、交付物、负责人详细拆分。然后以书面形式知会所有stakeholder,这样就白纸黑字有章可循了,公平高效,抵赖无处。当然,重要的一点是做时间表的时候要留有余地,拖延这种事情么,会发生在90%的自然人身上,你懂的。加之项目本身可能会有各种风险,时间的预留是非常必要的,总之宜早不宜晚,你可以给项目组成员设立一个比实际deadline 稍早的时间点。 2)做出表率:一般来说PM也会承担项目里的某些具体分工,所以首先要把自己的工作保质保量按时完成,当然最好是提前完成,才有精力push别人、审核交付物、管理整个项目。如果你自己拖延的话,一来无说服力,二来很容易使整个项目陷入鸡飞狗跳状。 3)好脑瓜不如烂笔头:刚用完一大本工作笔记的人表示,一直延续着随手记的习惯。毕竟事情太多,很容易忘掉一些,如果是小事可能不打紧,但是保不准忘掉的就是影响全局的事呢。遇到boss抛过来challenge 你,一句我忘了可是很囧的。个人经验来说,每天下班前列个“已完成”+“明天要做”很好用。 4)一切以解决问题,推动进程为目标:项目中遇到困难、意外、风险、分歧是很正常的,这个时候争吵抓狂愤怒推卸都没有用,总之谁对谁错不是最重要的,重要的是抓紧找到解决办法,继续推进。 5)多沟通:效率顺序依次为面谈、电话、短信、邮件、即时通讯……如果是同一办公室部门之间最好跑过去当面说,对外沟通电话先问下别人是否方便说话,方便的话直接说清楚,不方便约定答复时间回头短信或邮件(如果需要对方答复,明确时间点很重要)。推动事儿的本质在于推动人,而推动人的基本方法就是有效的运用权力。

Linux设备驱动程序举例

Linux设备驱动程序设计实例2007-03-03 23:09 Linux系统中,设备驱动程序是操作系统内核的重要组成部分,在与硬件设备之间 建立了标准的抽象接口。通过这个接口,用户可以像处理普通文件一样,对硬件设 备进行打开(open)、关闭(close)、读写(read/write)等操作。通过分析和设计设 备驱动程序,可以深入理解Linux系统和进行系统开发。本文通过一个简单的例子 来说明设备驱动程序的设计。 1、程序清单 //MyDev.c 2000年2月7日编写 #ifndef __KERNEL__ #define __KERNEL__//按内核模块编译 #endif #ifndef MODULE #define MODULE//设备驱动程序模块编译 #endif #define DEVICE_NAME "MyDev" #define OPENSPK 1 #define CLOSESPK 2 //必要的头文件 #include //同kernel.h,最基本的内核模块头文件 #include //同module.h,最基本的内核模块头文件 #include //这里包含了进行正确性检查的宏 #include //文件系统所必需的头文件 #include //这里包含了内核空间与用户空间进行数据交换时的函数宏 #include //I/O访问 int my_major=0; //主设备号 static int Device_Open=0; static char Message[]="This is from device driver"; char *Message_Ptr; int my_open(struct inode *inode, struct file *file) {//每当应用程序用open打开设备时,此函数被调用 printk ("\ndevice_open(%p,%p)\n", inode, file); if (Device_Open) return -EBUSY;//同时只能由一个应用程序打开 Device_Open++; MOD_INC_USE_COUNT;//设备打开期间禁止卸载 return 0; } static void my_release(struct inode *inode, struct file *file)

权利的来源及正确使用权力

权利的来源及正确使用 ——李超平 1、法定性权力 在企业管理中,你处于什么位置,高层、中层、还是低层,由此获得的这种权力就是法定性的权力,一旦有了正式的任命,你就具有了法定性的权力。法定性的权力比后两种权力覆盖面更广,它会影响到人们对于职位权力的接收和认可,没有这法定作为基础,前面的强制性权力和奖赏性权力往往都不能够证实。例如没有给你任命,虽然告诉你要负责这个部门,但是你的这种奖赏性的权力和强制性的权力就会大打折扣,为什么呢?所谓名不正、言不顺,没有正式任命,那么你就是临时的。 2、奖赏性权力 与强制性权力正好相反,领导可以奖赏员工,让员工来重视自己。奖赏性的权力是让人们愿意服从领导者的指挥,通过奖励的方式来吸引下属,这种奖励包括金钱、晋升、学习的机会等。安排员工去做自己更感兴趣的工作,或者给员工更好的工作环境等等,这些都属于奖赏性权力的范围。 强制性权力和奖赏性权力是一对相对的概念,如果你能够剥夺和侵害他人的实际利益,那么你就具有强制性的权力;如果你能够给别人带来积极的利益和免受消极因素的影响,那么你就具有奖赏性权力。跟强制性权力不一样,奖赏性权力不一定要成为领导者才具有,有时作为一个普通的员工,也可以表扬另外一个员工,也可以在会上强调别人所做出的贡献,这本身也是一种权力和影响力。所以权力并不一定在领导和下属之间才会出现,有时候平级之间,甚至下属对于上司都可能存在。 3、强制性权力 这种权力是建立在惧怕的基础之上,也就是说,作为下属如果不服从领导,领导就可以惩罚、处分、批评下属。因为你是领导,你是长官,你要有好的执行力,你有这个权力,那么这种权力就叫强制性权力。在企业中领导可以解雇一个员会非常在乎你,尤其是这份工作是他所希望的工作时。所以在这个时候,上司对于下属就有这种强制性的权力。

如何用好手中的权力

如何用好手中的权力 李真理 各级领导干部手中都有或大或小的权力,在物欲横流处处充满诱惑的现实中,怎样用好手中的权力,是对每一位党员干部党性的考验。下面就此谈点粗浅看法: 首先,要“干净”用权。“干净”是每位领导干部行使权力的前提。“干净”不是指外表穿着,而是指其“官德”。思想上不追求物质满足,常思贪欲之害,常弃非分之想,常修为官之德,任何情况下心装群众,心系工作。行动上,做到自重,自省,自警,自励,耐得住寂寞,经得起诱惑,守得住清贫,不贪不占,不把手中的权力作为谋私工具,捞取好处的方便之门。用形象又含蓄的话来说,就是嘴、舌要“干净”,眼、耳要“干净”,肠胃要“干净”,手、脚要“干净”。总而言之,要清清廉廉,一心为民。只有做到“干净”,权力的行驶才不越轨,不走样。 其次,要正确用权。权力具有两面性,能否正确对待会有不同的结果。正确对待权力,能使人成功,歪曲对待权力,会使人腐败。客观地讲,权力的力量是无穷无尽的。一个人一旦拥有权力,用权得当,用到正处,就如虎添翼,在人生的道路上走向成功。如领导干部孔繁森、张鸣岐等,把党和人民赋予的权力当作使命,当作责任和义务,当作压力和动力,当作施展自己才干的“翅膀”,把用权看成是为人民干事,把追求放在权力的责任上,扑下身子,一门心思干事创业,扎扎实实为民做好事,办实事,以自己的作为赢得了群众的拥护。可见,用好权,能给人力量,助人成功。然而,有的人一旦拥有权力,便把权力个人化、私有化、商品化、玩弄权术,为所欲为,崇尚“有权不用过期作废”,一朝权在手,就把钱来捞,利用手中的权力,大搞权钱交易、权

色交易、权权交易,最终落个身败名裂,引来杀身之祸。成克杰、胡长清等就如此类。实践证明,权力是对每一位领导干部的一个严峻考验,只有摆正权力与党纪的关系,做到权重不忘责任大,位高不移公仆心,切实把党和人民赋予的权力当作为民干事,为民服务的有利条件,在人民群众中树立良好的形象,才能实现个人成功进步与权威的完美统一。 第三、要“科学”用权。权力能“增值”也能“贬值”,会用、善用者权力能越用越大;不善用,用不好,权力就会越用越小。许多领导干部珍惜党和人民赋予的权力,善于用好手中权力,问计于民,集思广益,充分发扬民主,科学决策,创造性地贯彻党的路线、方针、政策,扎扎实实干事,出了实绩,造福于民众,赢得了群众信任和支持。这种有为有绩的用权,群众拥护,组织认可,权力自然“增值”。相反,个别领导干部不善于用权,权力的作用发挥不好,虽居位多年,山河依旧,政绩平平,不但不成事,还败事,让百姓贫困,威从哪儿来?党和人民肯定不再给权,即使权还暂握,群众不听,有令不从,权自然会贬值。因此,权力大小不是一成不变的,关键看怎么用。要做到善于用权,树立正确的权力观,时刻不忘当官就是责任,为官一任,造福一方,把心思用在想事上,工作上,要干事,还要干成事,最终目的要落实在多为人民谋利益、办实事上。每位干部都要把手中的权力造福于群众、回报于民,凝聚群众力量,把权威树起来,让权力升值。 第四、要慎重用权。权能福泽百姓,也可殃及一方。权力的内在要求就是用权为民,福泽百姓,这是领导责任所在。许多领导干部能正确认识权力的力量,善于把权力用在为民办实事、做好事、兴利于民上,带领群众艰苦创业,脱贫致富奔小康,但也不容否认,权力一经扭曲,就会祸害无穷。这并非危言耸听,在

《Linux设备驱动开发详解:基于最新的Linux 4.0内核》19. Linux电源管理系统架构和驱动

以下电子书来源于宋宝华《Linux设备驱动开发详解:基于最新的Linux 4.0内核》第19章《Linux电源管理系统架构和驱动》 本章导读 Linux在消费电子领域的应用已经铺天盖地,而对于消费电子产品而言,省电是一个重要的议题。 本章将介绍Linux设备树(Device Tree)的起源、结构和因为设备树而引起的驱动和BSP 变更。 19.1节阐述了Linux电源管理的总体架构。 19.2~19.8节分别论述了CPUFreq、CPUIdle、CPU热插拔以及底层的基础设施Regulator、OPP以及电源管理的调试工具PowerTop。 19.9节讲解了系统Suspend to RAM的过程以及设备驱动如何提供对Suspend to RAM的支持。 19.10节讲解了设备驱动的Runtime suspend。 本章是相对《Linux设备驱动开发详解(第2版)》全新的一章内容,也是Linux设备驱动工程师必备的知识体系。

第十九章Linux电源管理系统架构和驱动 1.Linux电源管理全局架构 Linux电源管理非常复杂,牵扯到系统级的待机、频率电压变换、系统空闲时的处理以及每个设备驱动对于系统待机的支持和每个设备的运行时电源管理,可以说和系统中的每个设备驱动都息息相关。 对于消费电子产品来说,电源管理相当重要。因此,这部分工作往往在开发周期中占据相当大的比重,图19.1呈现了Linux内核电源管理的整体架构。大体可以归纳为如下几类: 1.CPU在运行时根据系统负载进行动态电压和频率变换的CPUFreq 2.CPU在系统空闲时根据空闲的情况进行低功耗模式的CPUIdle 3.多核系统下CPU的热插拔支持 4.系统和设备对于延迟的特别需求而提出申请的PM QoS,它会作用于CPUIdle的具体 策略 5.设备驱动针对系统Suspend to RAM/Disk的一系列入口函数 6.SoC进入suspend状态、SDRAM自刷新的入口 7.设备的runtime(运行时)动态电源管理,根据使用情况动态开关设备 8.底层的时钟、稳压器、频率/电压表(OPP模块完成)支撑,各驱动子系统都可能用 到 图19.1 Linux电源管理系统架构 2.CPUFreq驱动 CPUFreq子系统位于drivers/cpufreq目录,负责进行运行过程中CPU频率和电压的动态

结合上述案例谈谈如何正确理解和对待领导者的权力

结合上述案例谈谈如何正确理解和对待领导者的权力 领导权力是指领导者的职位权力,是领导者在特定的组织里因占有领导职位而形成的权力,是领导者为实现组织目标在实施领导的过程中对被领导者施行的强制性支配和控制力量。 领导权威与领导人及其意图是否得到被领导者的认同直接相关。一般地说来,被领导者的认同是权威合法化的最终基础,接受和服从是领导权威的先决条件,所以领导权威是被领导者对领导者权力运用情况的反映。领导者要提升领导权威,充分得到被领导者的拥护和支持,必须努力提高自己的自然影响力,合理地使用强制性影响力,使强制性影响力和非强制性影响力有机结合和统一,并努力扩大与增强非强制性影响力。领导权力是领导权威较高的一种境界,是被领导者对领导者心悦诚服地自觉拥护、配合与服从,对领导者所组织、指挥的活动的积极愉快地参与。结合周恩来的人格力量这一案例中,体现周恩来领导的成功之处,如何运用其领导权力,让人民更坚定地追随他,拥护他。 周恩来总理的完美道德在几十年革命生涯中如清泉流水自然流淌,让人不能不受其影响。他对他所献身的共产主义事业的忠诚与坚定,他对祖国的热爱与深情,他对人民“甘为孺子牛”的态度与胸襟,他对同志的关爱与宽容,他对自己近乎苛刻的无私与严格,他毕身不忘带头加强世界观改造的自重与自省,他忍辱负重、相忍为党大海般的心胸与气度,…… 作为一个领导者,怎样对待权力,正确对待权力,真正为人民掌好权、用好权,对于全面加强党的建设具有重要的指导意义。 1.民主原则。领导权力属于人民,来自人民。人民群众可以直接或间接地授予领导者以一定的权力,也可以因其不称职而收回这种权力。领导者在行使权力的过程中要善于自觉地倾听、了解人民群众的意愿、建议和意见。 2.为民原则。领导者是代表人民掌握和行使权力的,只能运用权力全心全意为人民谋利益,而不能用来谋取私利或达到任何个人目的。 3.合法原则。特权力的各个方面、各个环节、各种内容都用法律和制度加以明确规定,使权力的设置、运行和操作有法可依,有章可循。领导者只在法律和制度允许的范围和程度之内运用权力。 4.适时原则。就是把握住行使权力的时机。时机是社会活动过程中普遍存在的现象,能否善于抓住时机,直接影响权力实施的效果。 所以,衡量一个领导者是否能正确使用权力,首先要看他的发展思路,发展观念是否能与发展趋势相符合,这要接受历史的考验。第二,他的思想能否被群众理解,只有被群众理解,才能得到认可和支持。第三,不能做愧对于后人的罪人,有些领导者只顾当前利益,而给社会,给后人留下千古遗憾。第四,还体现在用人方面,是选用德才兼备的人,还是选用能说不能干的人,是对事业负责还是对关系负责。一定要时刻牢记,权力是人民给予的,要牢固树立为人民服务的长远意识。 周恩来的领导魅力,不仅因为他卓越的领导才干,而且是因为他的人格力量。

正确使用组织赋予权力管理正副职关系论文

正确使用组织赋予权力管理正副职关系论文 编者按:本文主要从当好正职应注意的事项;副职不比正职更轻松;当好副职应注意的事项进行论述。其中,主要包括:正职是帅才,执掌全面,统揽全局,具有明显的自主性特征、目前在各单位里,正职与副职存在矛盾是一个常见现象、谋势不谋事、现行行政领导体制实行的是行政首长负责制、一个组织的架构是以岗位为基础的,岗位分析是最基础的工作、工作分析的最重要结果是职务说明书、善于授权的领导不是事必躬亲,而是强调控制结果、一个组织工作的质量、效率的高低,不仅取决于领导者的素质,而且取决于管理者的素质、副职有两个模糊、副职作用的发挥受到一定的制约、尽职不越权、做事不弄权、独有所长,不长正职所长等,具体请详见。 摘要正职和副职的职位、权力范围、承担的责任和领导人才层次等方面是不同的,处理好正职与副职关系的关键,在于正确使用组织赋予的权力,角色到位,各负其责。 关键词领导管理权力 一个领导班子的成员,因有正职和副职之分,决定了二者的职位、权力范围、承担的责任和领导人才层次等方面是不同的。正职是帅才,执掌全面,统揽全局,具有明显的自主性特征;副职是将才,负责某个方面的具体执行工作,处于被正职领导和领导下属的地位,具有明显的中介性特征。班长只有一个,占多数的总是副职。许多实践表明,搞坏一个单位,往往一把手就够了;而搞好一个单位,靠一个一把手是远远不够的,必须把副职及其下属的积极性充分调动起来。目前在各单位里,正职与副职存在矛盾是一个常见现象,除了是由于全局与局部利益的矛盾、会上决定与临时处置的矛盾、处理功过荣誉不当、认识分歧、权力较量等主观因素外,导致二者矛盾的产生还取决于一个无法回避的客观因素,那就是正职与副职工作内容的不同。正职是做领导工作的,副职是做管理工作的,领导与管理之间天然存在着微妙冲突:领导是做正确的事情,管理是把事情做正确了;领导是让人们去想他想做的事情,管理是让人们去做他想做的事情;领导强调思维变革,管理强调机制延续。当组织运行到一定程度后,原有的成功规范管理往往会成为领导事业发展的最大障碍。因此,正职与副职在工作中容易产生矛盾摩

从零开始搭建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

牢固树立正确的权力观,用权为民,严格按规矩办事

牢固树立正确的权力观,用权为民,严格按规矩办事 所谓权力观,是指人们对权力的总的看法,包括对权力的来源、掌握权力的目的、行使权力的方式、为谁掌权、为谁服务等问题的 认识和态度。在不同的社会、不同的政党,对权力观有着不同的认识。 对我们共产党人来说,正确权力观的思想基础是马克思主义基本理论。共产党人以马克思主义理论为指导,党的领导干部的权力观,必然要求建立在马克思主义的世界观和方法论基础之上。“三 个代表”重要思想坚持马克思主义的世界观和方法论,是发展着的 马克思主义,是马克思主义中国化的最新成果,也是正确权力观的 灵魂。只有以“三个代表”重要思想为指导,把权力与先进生产力 的发展要求、与先进文化的前进方向、与最广大人民的根本利益紧 密联系在一起,才能真正树立正确的权力观。 正确权力观的本质是权为民所用。毛泽东同志早就说过,我们 的权力是谁给的?是人民给的。谁授权,就要为谁服务,就要对谁 负责,这是政治学的一条普遍原理,也是权力运行的一条基本法则。背离这一法则,权力就有丧失的危险。每一个党员干部都要清醒地 意识到,自己手中的权力是人民赋予的,人民是权力的所有者。对 领导干部而言,权力只意味着责任和义务,权力越大,责任也就越大。决不能把权力当作以权谋私、巧取豪夺、中饱私囊的工具。 正确权力观的核心,是始终保持党同人民群众的血肉联系。所 有党员干部必须真正代表人民掌好权、用好权,把权力置于群众的 监督之下,从而确保与人民群众的血肉联系。 树立正确的权力观,必须加强理论学习,提高思想境界。所有党员 干部特别是党员领导干部都要注重理论学习。加强理论学习,主要

是深入认真学习马列主义、毛泽东思想、邓小平理论和“三个代表”重要思想,加强思想政治修养,提高精神境界,保持高尚的道德情操。树立正确的权力观,真正懂得人民群众是历史的创造者和社会 的主人,真正懂得手中的权力是人民赋予的,必须用来为人民服务。员干部无论职务高低,都是人民的“公仆”,要摆正“主人”与 “公仆”的关系,切不可将其颠倒。针对权力观中存在的突出问题,当前要特别重视教育干部坚持艰苦奋斗、反对享乐主义,磨炼意志,提高境界,保持情操,坚持权为民所用、情为民所系、利为民所谋。 树立正确的权力观,必须加强党性修养,坚持立党为公、执政 为民的本质。领导干部都要牢固树立全心全意为人民服务的思想和 真心实意对人民负责的精神,做到心里装着群众,凡事想着群众, 工作依靠群众,一切为了群众。坚持立党为公、执政为民,不能停 留在口号和一般要求上,必须围绕人民群众最现实、最关心、最直 接的利益来落实,切实把权力用来为人民群众谋利益。 树立正确的权力观,必须注重社会实践,要抓住勤政这个根本,勤奋工作,立足本职建功立业,为党和人民多做工作。要廉政勤政,一身正气,执政为民,全心全意地为人民谋利益、办实事。同时要 不断加强政治理论学习,提高政治思想水平和自身修养,在工作中 要克服急噪情绪,改进工作方法,密切联系群众,谦虚谨慎,戒骄 戒躁,努力调动和发挥广大群众积极性,团结一心,共同奋斗。 在牢固树立正确权力观的同时还要严明政治纪律和政治规矩、 加强纪律建设,把守纪律讲规矩摆在更加重要的位置。”“讲规矩 是对党员、干部党性的重要考验,是对党员、干部对党忠诚度的重 要检验。人不以规矩则废,党不以规矩则乱。党的纪律是刚性约束,政治纪律更是全党在政治方向、政治立场、政治言论、政治行动方 面必须遵守的刚性约束,国家法律是党员、干部必须遵守的规矩。

浅谈领导干部如何正确看待权力和利益

浅谈领导干部如何正确看待权力和利益 滑县公安局政委郝昌斌 中共中央总书记胡锦涛在西柏坡考察学习时,郑重提出全党同志要坚持做到“权为民所用、情为民所系、利为民所谋”。这“三个为民”既体现了我们党立党为公、执政为民的本质特征,又体现了党员干部牢固树立正确的权力观和利益观的现实要求,发人深省,催人奋进。 一、执政党建设必须解决的首要课题 我们党成立已90年了,历经革命、建设与改革,已经从领导人民为夺取政权而奋斗的党,成为领导人民掌握政权并长期执政的党。江泽民同志曾经指出:“党的执政地位的变化,党员和干部地位的变化,对各级党组织和每个党员干部都是一个极大的考验,也给我们党的自身建设提出了新的课题。”在战争年代,面临的是生与死的考验,而在和平建设时代则主要是权力、地位与利益的考验。应该说大多数党员干部经受了这些考验,但也有少部分人在考验面前吃了败仗。历史和现实表明,一个党执政久了,就容易产生脱离群众的倾向,容易产生官僚主义,容易滋长既得利益,失去生机与活力。因此,每个党员干部都要认真思考一下,是不是真的懂得我们的权力是人民赋予的,能不能正确运用手中的权力,是不是始终保持与人民群众的血肉联系,永远不脱离

群众?说到底就是能不能牢固树立正确的权力观、地位观、利益观。不仅如此,近年来,不少新社会阶层中的优秀分子加入到党的组织,一大批年轻干部在新老交替中纷纷走上各级领导岗位。这些同志科学文化水平高,思维活跃,富于开拓进取精神,但是他们缺乏对马克思主义理论的系统学习,缺乏对党的历史和优良传统的深入了解,大多没有经历过严格的党内生活、艰苦环境和基层群众工作的锻炼。而且在当前,改革日益深化,对外开放不断扩大的新形势下,人们的思想观念日趋多样化,并且对党员干部的权力观、地位观、利益观产生了极大的冲击。党员干部只有坚持正确方向,立稳人生坐标,才能真正做到权为民所用、情为民所系、利为民所谋。 二、正确对待权力,努力为民掌好权、用好权 中国在传统上是一个“官本位”社会,“学而优则仕”、“升官发财”等观念根深蒂固。树立正确的权力观,达到权为民所用,必须要尽快打破这些旧思想、旧观念。为此,党员干部要从根本上弄清以下几个问题:首先,权力是从哪里来的。当年,有个美国记者问毛泽东,“你们办事,是谁给的权力?”毛泽东回答:“人民给的。人民要解放,就把权力委托给能够代表他们,能够忠实为他们办事的人,这就是我们共产党人”。现在,我国宪法明确规定,“一切权力属于人民。”任何一个领导干部,不管是由选举产生的,还是由上级委任的,都是受人民委托或授权的,决不单纯是上级领

如何实现Linux设备驱动模型

文库资料?2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd. 如何实现Linux 设备驱动模型 设备驱动模型,对系统的所有设备和驱动进行了抽象,形成了复杂的设备树型结构,采用面向对象的方法,抽象出了device 设备、driver 驱动、bus 总线和class 类等概念,所有已经注册的设备和驱动都挂在总线上,总线来完成设备和驱动之间的匹配。总线、设备、驱动以及类之间的关系错综复杂,在Linux 内核中通过kobject 、kset 和subsys 来进行管理,驱动编写可以忽略这些管理机制的具体实现。 设备驱动模型的内部结构还在不停的发生改变,如device 、driver 、bus 等数据结构在不同版本都有差异,但是基于设备驱动模型编程的结构基本还是统一的。 Linux 设备驱动模型是Linux 驱动编程的高级内容,这一节只对device 、driver 等这些基本概念作介绍,便于阅读和理解内核中的代码。实际上,具体驱动也不会孤立的使用这些概念,这些概念都融合在更高层的驱动子系统中。对于大多数读者可以忽略这一节内容。 1.1.1 设备 在Linux 设备驱动模型中,底层用device 结构来描述所管理的设备。device 结构在文件中定义,如程序清单错误!文档中没有指定样式的文字。.1所示。 程序清单错误!文档中没有指定样式的文字。.1 device 数据结构定义 struct device { struct device *parent; /* 父设备 */ struct device_private *p; /* 设备的私有数据 */ struct kobject kobj; /* 设备的kobject 对象 */ const char *init_name; /*设备的初始名字 */ struct device_type *type; /* 设备类型 */ struct mutex mutex; /*同步驱动的互斥信号量 */ struct bus_type *bus; /*设备所在的总线类型 */ struct device_driver *driver; /*管理该设备的驱动程序 */ void *platform_data; /*平台相关的数据 */ struct dev_pm_info power; /* 电源管理 */ #ifdef CONFIG_NUMA int numa_node; /*设备接近的非一致性存储结构 */ #endif u64 *dma_mask; /* DMA 掩码 */ u64 coherent_dma_mask; /*设备一致性的DMA 掩码 */ struct device_dma_parameters *dma_parms; /* DMA 参数 */ struct list_head dma_pools; /* DMA 缓冲池 */ struct dma_coherent_mem *dma_mem; /* DMA 一致性内存 */ /*体系结构相关的附加项*/ struct dev_archdata archdata; /* 体系结构相关的数据 */ #ifdef CONFIG_OF

党员干部要正确看待和使用手中的权力

党员干部要正确看待和使用手中的权力 2013-12-13 09:14:41 来源:市环保局点击率:1483 评论 0 条加入收藏夹 核心提示:所谓权力观,是人们对待权力的基本看法和根本观点。经历了五千年风雨的中华大地,人民当家作主了,正如我国宪法所规定:“中华人民共和国的一切权力属于人民”。 商汤执政之初,中原地区连续五年大旱,人们理解为这是商汤征战夏族、杀伐天下、作孽造恶太多,得罪上帝。于是由商汤本人出面与上帝谈判。人们堆好了燔祭的柴薪,让商汤安坐其上。商汤理好头发,剪掉指甲,隆重沐浴,虔敬祷告曰:“我一个人有罪,不要连累万民。如果万民有罪,也是由我造成的,应该由我一个人承担。”他准备举火自焚,以祭上帝。这时突然风起云涌,大雨滂沱,万民欢腾,商汤因此得救。商汤拥有至高无上的权力,而他必须践履远古时代流传下来的一种习俗。这种伟大的传统形成了一种伟大的约束力,这就是责任,他必须对天下的丰廉、安危和祸福负责。 《现代汉语词典》中,对权力的解释为“职责范围内的指挥或支配力量”。所谓权力观,是人们对待权力的基本看法和根本观点。经历了五千年风雨的中华大地,人民当家作主了,正如我国宪法所规定:“中华人民共和国的一切权力属于人民”。具体包括以下三个方面的基本含义:一是权力的来源。我国是社会主义国家,人民是国家的主人,中国共产党的执政地位,社会主义国家的一切权力,都来自人民。领导干部的权力,说到底都是人民赋予的。二是权力的使用。掌权的职责是代表人民掌握和行使好国家的各项权力,为国家的安全、发展和富强服务,为人民的安宁、团结和富足服务。三是权力的监督。用权行为必须自觉接受党和人民的监督,保证权力始终用来为国家和人民谋利益,决不能把它变成谋取个人或少数人私利的依托。 近年来,权力的滥用屡见不鲜,某些党员干部视党纪为“摆设”,视政令为“白条”,把中央的三令五申当成耳边风,你禁你的,他干他的。从而腐败现象迅速滋生和蔓延,引起了广大人民群众的强烈不满,极大影响了建设有中国特色的社会主义事业。不仅是中国国内,国外权力滥用现象也比比兼是,对权力制约的制度问题一直是人类头疼的难题。 有这么一个小故事,让我们思考如何对待权力。有7个人组成了一个小团体共同生活,其中每个人都是平凡而平等的,没有什么凶险祸害之心,但不免自私自利。他们想用非暴力的方式,通过制定制度来解决每天的吃饭问题:要分食一锅粥,但并没有称量用具和有刻度的容器。大家试验了不同的方法,发挥了聪明才智、多次博弈形成了日益完善的制度。大体说来主要有以下几种: 方法一:拟定一个人负责分粥事宜。很快大家就发现,这个人为自己分的粥最多,于是又换了一个人,总是主持分粥的人碗里的粥最多最好。由此我们可以看到:权力导致腐败,绝对的权力绝对腐败。方法二:大家轮流主持分粥,每人一天。虽然看起来平等了,但是每个人在一周中只有一天吃得饱而且有剩余,其余6天都饥饿难挨。于是我们又可得到结论:绝对权力导致了资源浪费。方法三:大家选举一个信得过的人主持分粥。开始这品德尚属上乘的人还能基本公平,但不久他就开始为自己和溜须拍马的人多分。不能放任其堕落和风气败坏,还得寻找新思路。方法四:选举一个分粥委员会和一个监督委员会,形成监督和制约。公平基本上做到了,可是由于监督委员会常提出多种议案,分粥委员会又据理力争,等分粥完毕时,粥早就凉了。方法五:每个人轮流值日分粥,但是分粥的那个人要最后一个领粥。

Linux设备驱动编程模型(基本编)

Linux设备驱动程序设计 15年来,Linux从一份大学生的作业演变成了Windows最强劲的竞争对手,在网络、企业、政府和 消费电子市场中逐步占据了重要的地位,在有些领域甚至成了最主要的角色。15年来,Linux在欧洲、在美国、在亚洲向微软发起强劲挑战,以至微软CEO鲍尔默一度相信微软会被Linux击败。 随着Linux进入嵌入式设备领域后,关注和投身Linux开发的开发人员越来越多,但目前市面上介绍Linux开发的资料却非常稀少,很多开发人员感到入行无门,我参照《Linux驱动开发详解》(华清远见,宋宝华)以及其他一些参考资料,编写了本教案,由于时间仓促,没有对应制作相关的ppt,请同学们谅解,希望能给大家一些帮助。 在讲课之前,我们预备把所有的参考资料都列举出来,详细的知识点请大家去对应查找我们所列出的 参考书籍。 1、《Linux程序设计》(人民邮电出版社,陈健等译第3版本)主要关注第18章 2、《Linux驱动开发详解》(华清远见,宋宝华) 3、《嵌入式设计及Linux驱动开发指南-基于ARM9处理器(第2版)》(电子工业出版社,孙天泽) 4、《嵌入式软件调试技术》(电子工业出版社,罗克露等) 5、《嵌入式Linux应用开发详解》(电子工业出版社,洗进等) 6、《嵌入式Linux程序设计案例与实验教程》(机械工业出版社,俞辉) 7、《嵌入式系统课程设计》(机械工业出版社,陈虎等) 还有一些互连网资料,这里就不一一列举了。请大家尽量去找这些资料进行学习。 第一讲Linux设备驱动编程之引言 目前,Linux软件工程师大致可分为两个层次: (1)Linux应用软件工程师(Application Software Engineer):主要利用C库函数和Linux API进行应用软件的编写; (2)Linux固件工程师(Firmware Engineer):主要进行Bootloader、Linux的移植及Linux设备驱动程序的设计。 一般而言,固件工程师的要求要高于应用软件工程师的层次,而其中的Linux设备驱动编程又是Linux 程序设计中比较复杂的部分,究其原因,主要包括如下几个方面: (1)设备驱动属于Linux内核的部分,编写Linux设备驱动需要有一定的Linux操作系统内核基础; (2)编写Linux设备驱动需要对硬件的原理有相当的了解,大多数情况下我们是针对一个特定的嵌 入式硬件平台编写驱动的; (3)Linux设备驱动中广泛涉及到多进程并发的同步、互斥等控制,容易出现bug; (4)由于属于内核的一部分,Linux设备驱动的调试也相当复杂。 目前,市面上的Linux设备驱动程序参考书籍非常稀缺,少有的经典是由Linux社区的三位领导者Jonathan Corbet、Alessandro Rubini、Greg Kroah-Hartman编写的《Linux Device Drivers》(目前该书

linux设备驱动程序开发流程

一. Linux device driver 的概念 系统调用是***作系统内核和应用程序之间的接口,设备驱动程序是***作系统 内核和机器硬件之间的接口.设备驱动程序为应用程序屏蔽了硬件的细节,这样 在应用程序看来,硬件设备只是一个设备文件, 应用程序可以象***作普通文件 一样对硬件设备进行***作.设备驱动程序是内核的一部分,它完成以下的功能: 1.对设备初始化和释放. 2.把数据从内核传送到硬件和从硬件读取数据. 3.读取应用程序传送给设备文件的数据和回送应用程序请求的数据. 4.检测和处理设备出现的错误. 在Linux***作系统下有两类主要的设备文件类型,一种是字符设备,另一种是 块设备.字符设备和块设备的主要区别是:在对字符设备发出读/写请求时,实际 的硬件I/O一般就紧接着发生了,块设备则不然,它利用一块系统内存作缓冲区, 当用户进程对设备请求能满足用户的要求,就返回请求的数据,如果不能,就调用请求函数来进行实际 的I/O***作.块设备是主要针对磁盘等慢速设备设计的,以免耗费过多的CPU时间 来等待. 已经提到,用户进程是通过设备文件来与实际的硬件打交道.每个设备文件都 都有其文件属性(c/b),表示是字符设备还蔤强樯璞?另外每个文件都有两个设 备号,第一个是主设备号,标识驱动程序,第二个是从设备号,标识使用同一个 设备驱动程序的不同的硬件设备,比如有两个软盘,就可以用从设备号来区分

他们.设备文件的的主设备号必须与设备驱动程序在登记时申请的主设备号 一致,否则用户进程将无法访问到驱动程序. 最后必须提到的是,在用户进程调用驱动程序时,系统进入核心态,这时不再是抢先式调度.也就是说,系统必须在你的驱动程序的子函数返回后才能进行其他的工作.如果你的驱动程序陷入死循环,不幸的是你只有重新启动机器了,然后就是漫长的fsck.//hehe (请看下节,实例剖析) 读/写时,它首先察看缓冲区的内容,如果缓冲区的数据 如何编写Linux***作系统下的设备驱动程序 Roy G 二.实例剖析 我们来写一个最简单的字符设备驱动程序.虽然它什么也不做,但是通过它 可以了解Linux的设备驱动程序的工作原理.把下面的C代码输入机器,你就会获得一个真正的设备驱动程序.不过我的kernel是2.0.34,在低版本的kernel 上可能会出现问题,我还没测试过.//xixi #define __NO_VERSION__ #include

相关主题