前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇程序管理范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
[关键词] 牙钻;灭菌;工作程序管理
[中图分类号]R78 [文献标识码] B[文章编号] 1673-7210(2009)06(b)-141-02
口腔科牙钻的机头结构复杂,腔隙多,更增加了消毒灭菌的难度。涡轮手机在停止转动的瞬间,机头内部呈负压状态,可导致口腔中的唾液、血液、微生物等回吸入手机内部,微生物可在手机内部死角处繁殖,再次使用时回吸物质就可随转动喷出的水雾进入另一患者的口腔,造成交叉感染[1]。所以从2004年开始,新的《消毒隔离技术规范》要求牙钻处理从原来的消毒改为新的灭菌,这是一个重大的变革。为适应新的规范,我院口腔门诊从2004年11月开始对牙钻进行灭菌处理,严格执行一人一用一灭菌制度,确保了患者的就医安全。然而这对于护士来讲是一个从无到有的过程,这是一项新的工作,并且是在不增加人员的情况下,既要完成原有工作,还要承担新的内容,并要确保门诊的需要 。口腔门诊平均每日60~70人次门诊量,平均需要牙钻30把左右。这就要求医务人员适应新形势,制订相应的规章制度,安排科学的工作程序来完成此项工作。
1 牙钻的灭菌程序与实施
1.1 清洗
清洗是牙钻灭菌的第一步,也是非常重要的步骤。清洗的目的就是降低物品上的生物负荷,而微生物的数量和类型正是影响消毒灭菌效果的重要因素[2]。正是由于清洗不彻底,就有可能在一些较难洗到的器械的关节、管腔的缝隙或表面不平处黏附细菌,进而形成生物膜,阻止消毒因子接触微生物细胞,造成消毒灭菌的失败[2]。因此,清洗的意义就在于实现安全操作,以达到灭菌质量。为提高清洗效果,我科采用超声波清洗机加多酶清洗液对牙钻进行清洗,它能彻底对牙钻进行清洗,并且达到手工清洗不能达到的效果。超声波清洗的工作原理是通过高频声波在液体中产生气穴现象而形成大量的微小气泡,这些微小气泡破裂后产生极小的真空区,使污染物与器械分离,从而产生擦洗效果,微小气泡可达到细小沟纹处,因而有较强的清洗作用[3-4]。在进行这一程序前,要求医生在将牙钻从治疗机取下之前,将牙钻带水运行1 min,以达到将牙钻内部回吸唾液冲洗作用。然后立即送入消毒室,由护士用流水进行冲洗、进行初洗后放入超声波清洗机内进行清洗5~10 min,清洗后的牙钻用流水彻底冲洗后擦干,这样就完成了清洗的程序。
1.2 高压清洗、注油
同样是清洗,但是这一程序同前一程序有着不同的用途。超声波清洗是对牙钻表面进行清洁,而高压清洗却起着对牙钻内部进行清洁的作用。强大的压力彻底对牙钻内部进行清洗,而压力注油又保证了对内部构件的保养作用,大大提高了牙钻的使用寿命。
1.3 封装
牙钻彻底清洁后,要装入封袋内待灭菌。我科采用纸塑袋一机一封装的方法进行灭菌。纸塑带的选择一定要符合国家卫生部的标准,而且要有卫生部颁发的生产许可证。在这一过程中,首先护士要保证将牙钻擦干,控净水分及油,保证纸塑袋不被水及油浸湿,然后将钻针从牙钻上取下,同牙钻一同封入袋内备用灭菌。将牙钻编号、医生姓名、灭菌日期、灭菌者姓名、登记在册,并于封袋处写明医生姓名、灭菌时间、灭菌者姓名。
1.4 灭菌
在口腔科的消毒灭菌工作中,牙钻的灭菌首选压力蒸汽灭菌器。这是由于牙钻内部有复杂的结构,小而深的缝隙及细管[5],所以湿热高压灭菌法是目前提倡的灭菌方法[6]。有条件的应当选用预真空压力蒸汽灭菌器。通常温度为121℃时维持15~20 min,对于牙钻可耐热大于132℃者,则采用132℃维持3.5~4 min,可杀死所有的微生物达到灭菌目的。将封袋完毕的牙钻按照要求摆放在灭菌机里,放入灭菌指示卡进行灭菌处理。
以上四个程序就是一个牙钻的灭菌过程,这一过程的操作需要1小时30分钟才能完成。在这项工作的运行过程中,不是机械地执行以上四个步骤就可以较好地完成灭菌过程,其中还需要科学的管理。
2 灭菌程序的管理
2.1 设备的管理
在科技水平发达的今天,高技术含量的设备是高质量工作的前提。要完成牙钻的一个灭菌程序,需要增加多种新的设备,如超声波清洗机、高压清洗机、封口机、高压灭菌器,这些设备对于医务人员来讲是陌生的,所以必须要认真学习操作方法,注意事项及日常保养维护等。对此,要建立设备日常维护登记制度,将重要内容纳入业务学习,确保了设备的正常使用。
2.2 制订严格的交接制度及登记制度,以防止牙钻的丢失
牙钻属于贵重设备,我科实行牙钻定人保管,即每位医生的牙钻是固定的数量,根据牙钻的编号进行区分。这样既有利于保管又有利于保养,防止了设备的丢失。在进行灭菌时,要求医生要当面交到消毒护士手中,灭菌后由消毒护士发放到医生手中,并进行核对登记。
2.3 根据工作情况制订程序及修改程序
在此项工作开展之初,护士长亲自参与此项工作,并根据实际工作情况制订了工作流程。如在初始运行过程中发现牙钻在使用过程中噪音过大,考虑是油注过少的原因,所以在高压清洗后增加人工注油这一项工作,运行一段时间后,牙钻噪音消失,运转正常。在程序实施的过程中会出现很多的问题,护士长要及时听取护士的意见对存在的问题进行及时的整改,并修改工作程序使之更加合理化、科学化。
2.4 消毒室护士的培训
消毒室护士岗位采取轮换制,每2个月进行1次换岗。当新的护士上岗前,除了进行物品交接外还要进行工作内容交接。护士长要求新任护士对所有设备的说明书进行阅读,对工作程序进行熟悉后进行考核,合格后方可上岗。在上任1周内护士长跟班进行协助与监督。对于护士的培训除了技术方面还要求护士有高度的责任心和慎独的工作精神,这样才能确保工作质量达标。
2.5 质量考核
通过设备保养记录检查设备保养情况,以确保灭菌设备处于正常使用状态;通过3M指示卡登记本检查每次灭菌效果是否达标;通过牙钻灭菌登记本检查每日牙钻灭菌数量、时间及牙钻灭菌后是否按编号发放到医生手中。每月对高压灭菌器进行1次生物检测,并抽查灭菌后的牙钻进行细菌培养。定期接受区、市疾病控制中心的检查。通过多种终末质量考核手段来保证牙钻灭菌达标。
3 讨论
在进行牙钻灭菌工作之初,由于工作量加大又是新生的事物,所以工作杂乱无章,存在许多问题,如灭菌不合格、不能保证门诊的工作、牙钻丢失等。在不断的探索与总结中,根据实际工作情况制订和规范各项工作制度与流程,目前在未增加护理人员的情况下,完成了此项工作,每次灭菌均达标,并没有丢失情况,确保了门诊的需要,完全达到了牙钻一人一用一灭菌的新标准。
[参考文献]
[1]顾萍.口腔科门诊医院感染因素分析与管理对策[J].现代预防医学,2007,34(1):92-93.
[2]林志润,廖祥芳.清洗质量是保证消毒灭菌效果的关键[J].中华医院感染学杂志,2008,18(11):1647.
[3]徐岩英,LP.圣曼雅克,郭传槟.口腔医院感染控制的原则与措施[M].北京:北京医科大学、中国协和医科大学联合出版社,1998:78-81.
[4]Cafruny WA, Brunick A, NelsonDM, et al. Effectiveness of ultrasonic cleaning of dental instruments[J].Am J Dent,1995,8:152-156.
[5]雷松惠,杨小红,朱秀娥.口腔科消毒隔离技术与医院感染管理[J].中华医院感染学杂志,2006,16(2):186.
凡属党委成员职权范围内可以处理的一般问题,不提交党委会讨论。凡涉及多个单位和部门的重大问题,未经分管领导协调的,不提交党委会讨论。
二、凡属重大问题,在提交党委会讨论和决策之前,应组织有关单位或部门承办好调查研究、方案起草与分析论证等前期工作。
承办单位或部门可以委托专家、专业服务机构或者其他有相应能力的组织完成专业性工作。
三、承办单位或部门应当深入开展决策调研工作,全面、准确掌握决策所需的有关情况,广泛听取各有关方面的意见和建议,形成决策调研报告。
四、承办单位或部门应当根据决策事项的性质和特点,提供科学、全面、务实的决策备选方案。对需要进行多方案比较研究的问题或者存在争议经协商仍达不成一致意见的事项,应当根据不同的主张拟订两个以上决策备选方案。拟订决策备选方案时不得有下列情形:
㈠所采集的信息失真或者过时;
㈡遗漏必要的信息;
㈢隐瞒、歪曲真实情况;
㈣泄露需要保密的信息。
五、承办单位或部门应当对决策备选方案的科学性、必要性、可行性、合法性进行充分论证。必要时,应当进行风险预测和成本效益分析。
六、涉及下列事项的决策备选方案,必须事先通过专家咨询论证并提出具体意见,才能提交党委会讨论:
㈠全镇经济和社会发展的中长期规划;
㈡事关经济和社会发展的全局性问题;
㈢涉及群众切身利益的重大政策问题;
㈣专业性较强的决策事项。
专家咨询论证活动,一般由分管领导牵头负责,承办单位或部门具体组织实施,并严格保证专家咨询论证活动的独立性。
七、第六条所列㈠至㈢事项的决策备选方案,在提交党委会讨论之前,除涉及党和国家秘密、商业秘密和个人隐私的事项外,承办单位或部门应当采取座谈会等方式,充分听取相关部门和群体的意见,并将意见及采纳情况形成报告。
对特别重大的问题,必要时可由书记、副书记及有关党委成员组织专题会议听取意见。
八、提交党委会讨论的重大问题,应当报送以下资料:
㈠决策备选方案及相关说明;
㈡专家论证意见;
㈢相关部门和群体意见的综合报告;
㈣有关相同或相似项目的有关资料;
㈤有关的法律、法规和政策规定,特别是禁止性规定;
㈥风险预测和成本效益分析报告。
九、党委会会议的召开时间、议题,一般应提前通知出席和列席人员,同时送达会议有关资料(干部任用材料除外)。
会议通知及有关资料送达后,各位党委成员应认真阅读,列出讨论发言提纲。
十、提交党委会讨论的议题,由相关党委成员在会上作主题汇报,回答提问,并首先表明个人倾向意见。相关分管领导可作补充说明。
会议应安排足够的时间对议题进行充分讨论。
会议出席人员应当对议题发表个人倾向意见,并说明理由,列席人员一视同仁。
会议主持人应当对讨论情况作总结归纳发言。
十一、讨论后,由会议主持人集中讨论意见,提出决定方案或意见,或决定对议题进行表决或暂缓表决。
进行表决的,表决结果由会议主持人当场宣布。
如遇重大分歧,双方人数接近,除在紧急情况下必须表决并按多数人的意见执行外,一般应暂缓表决,待进一步调查研究、交换意见后,再提交讨论和表决。
十二、党委办公室要做好党委会会议记录,并编发会议纪要。会议纪要应当包括以下主要内容:
㈠会议时间、地点、主持人、出席人员、缺席人员、列席人员和记录人员等基本情况;
㈡决策事项以及主要问题;
㈢审议过程及出席人员、列席人员的意见和表态;
㈣表决结果。
十三、对会议决定的事项,党委办公室应向有关单位发出书面通知。
十四、会议纪要和决定事项通知,以及其他经会议讨论通过的、以党委名义上报或者下发的文件,由书记或书记委托副书记签发。
十五、党委办公室建立党委会议事决策档案。
档案材料包括:会议记录,会议纪要,决定事项通知,其他经会议讨论通过的、以党委名义上报或者下发的文件,以及决策执行过程中涉及执行评估、督促检查、公众监督、反馈修正等有关材料。
十六、与会人员必须严格遵守会议纪律,对会议未定事项、决定不对外公开的事项以及会议讨论情况,不得向外传播和泄露。
十七、党委会决定的事项,原则上由相关党委成员负责组织实施。涉及跨分管工作范围的,由书记明确其中一位委员负责。
十八、有关执行单位应当全面、及时、正确地贯彻执行党委会的决策,不得拒不执行、不完全执行、变更执行、推诿执行、拖延执行。
因不可抗力或决策所依赖的客观条件发生变化,导致决策目标全部或部分不能实现的,应当及时向党委报告,并提出停止执行、暂缓执行或修正决策的建议。
十九、党委办公室负责对决策执行情况的检查、督办等工作,并及时向党委会报告督查情况。
二十、公民、法人或者其他组织认为党委会决策应当停止执行或修正的,可以向党委会成员、党委办公室或决策执行单位提出质疑或建议。
【关键词】数控加工;效率;提升
1数控设备的正确选型
为保证加工效率的提高,产品质量和精度的提升,需根据产品的特点来选择合适的数控设备,设备的选型是一个非常谨慎的工作,是否得当,对后续的适用价值和全面管理起着决定性的作用。以湘电集团长沙水泵厂典型零件三联泵中凝水增压泵泵体、泵盖和叶轮的镗削加工,以及循环泵的叶轮叶片、轮毂的加工为例来选择设备。1.1确定数控设备需承担的主要任务设备主要用于三联泵中凝水增压泵泵体、泵盖和叶轮的镗削加工,以及循环泵的叶轮叶片、轮毂的加工。凝水增压泵为双联立式中开泵,由凝水泵和增压泵组成。其加工精度的高低,直接影响泵的各项技术性能指标。泵体、泵盖和轴承体的各项技术要求能否达到要求,是其产品质量能否得到保证的关键。循环泵为立式轴流泵,主要由循环泵转子、上下泵体、上下泵盖、上部橡胶轴瓦、下部橡胶轴瓦、两半导向器、密封环、进水部分、波纹补偿器、防蚀护板等组成。精度等级高、异形曲面,加工难度大。1.2分析加工零件的特点及要求凝水增压泵的泵体、泵盖是多蜗室结构,泵体、泵盖和轴承体中需加工的内圆、端面和定位槽数量多,各部位的位置精度要求高,各内圆的加工范围从Φ120mm至Φ608mm尺寸不一,精度等级从6级至11级不等,各蜗室的同轴度及端面的跳动值要求0.05mm,表面粗糙度要求最高值达Ra1.6。其中,多处有配合要求的内圆表面还要切槽,且在同一位置上,泵体上槽比泵盖上槽深,因此,更增加了加工的难度。如导叶蜗室内圆为基孔制配合(Φ608H9+0.175),槽表面粗糙度值为Ra3.2,由于泵体各蜗室(蜗室形状为曲面)铸造后需要再加工,在加工过程既要轴向进刀,又需要径向进刀。同时在加工过程中,还要保证各蜗室及端面的同轴度与跳动值在允许的公差范围内。由此在数控设备中五轴联动加工中心因一次装夹定位,能保证零件各尺寸加工精度和形位公差,从而满足图纸要求。1.3设备选型通过对国内外五轴联动加工中心生产厂家进行调研,国内调研厂家为沈阳机床集团,国外调研厂家为德国的德玛吉和意大利厂家。通过与生产厂家或其商进行当面交流与电邮、电话联系,对各生产厂家的产品情况有了一定程度的了解,在结合公司产品的实际需要,设备选型情况如下表所示:1.4确定主要技术参数工作台尺寸:≥1500×1500mm;主轴最高转速:>4000r/min;Z轴最大行程:>1000mm;Y轴最大行程:>2000mm;X轴最大行程:>2000mm;X轴定位精度:<0.05mmY轴定位精度:<0.025mm;Z轴定位精度:<0.03mmA轴定位精度:<5";C轴定位精度:<5";X轴重复定位精度:<0.025mm;Y轴重复定位精度:<0.015mm;Z轴重复定位精度:<0.015mm;A轴重复定位精度:<3";C轴重复定位精度:<31.5确定主要功能和配置五轴联动加工中心是龙门式结构,能实现自动对刀功能,高精度原装进口导轨和丝杆保证了设备的加工精度,机床除具有铣、镗、钻孔、扩孔等基本加工功能外,配套高精度数控回转工作台、数控铣头、数控平旋盘等功能部件,可减少加工过程中的干涉现象,实现泵体内台阶面及内外圆的加工,同时可以实现曲面加工。机床可配带定时定量自动冷却系统,滑枕端面可以安装各种功能附件,并能自动更换功能附件。通过一连串的分析和确认,层层管控到位,最终选定的数控设备将会满足生产的需求,达到高质、高效生产。
2设备的维护、维修及保养
2.1数控设备的维护数控设备的维护包括:预防性维护,以保证机床的正常运行;故障性维修,消除故障,恢复设备的正常运行;对老的数控机床进行改造,充分提高设备的使用效率。在条件允许下,改善数控加工车间或数控设备周边的环境条件,防高温,防灰尘,减少数控机床的故障率,提高其生产效率。2.2数控机床维修注意事项(1)从整机上取出模块时,应注意记录其相对应的位置,连接的电缆号,对于固定安装的线路板,还应按前后取下相应的压接部件及螺钉作记录。(2)维修时电烙铁应放在顺手的前方,远离维修线路板。烙铁头应作适当的修整,以适应集成电路的焊接,并避免焊接时碰伤别的元器件。(3)线路板测量时应找到相应的焊点作为测试点,不要铲除焊膜,有的板子全部刷有绝缘层,则只有在焊点处用刀片刮开绝缘层。(4)测量线路间的阻值时,应断电源,测阻值时应红黑表笔互换测量两次,以阻值大的为参考值。
(5)不应随意切断印刷线路。数控设备上的线路板大多是双面金属孔板或多层孔化板,印刷线路细而密,一旦切断不易焊接,且切线时易切断相邻的线。(6)查清线路板的电源配置及种类,根据检查的需要,可分别供电或全部供电。应注意高压,有的线路板直接接入高压,或板内有高压发生器,需适当绝缘,操作时应特别注意。
3数控加工工艺优化
3.1分析零件的工艺性根据设计图纸应分析尺寸标注方法、零件图的完整性与正确性、零件精度要求、零件材质及零件的结构等技术要求。3.2拟定零件的工艺过程注意表面加工方法的选择,要保证加表面的加工精度和表面粗糙度的要求,同时应考虑生产率和经济性的要求,根据产品的结构和产品的数量,尽量采用高效率的先进加工方法,正确选用加工设备。3.3划分加工阶段加工阶段分粗加工阶段、半精加工阶段、精加工阶段,中间根据需要还要进行热处理及着色、探伤等要求。粗加工阶段,高效地切除加工表面上大部分的余量,使毛坯在形状和尺寸上接近零件成品;半精加工阶段,减小粗加工后留下的误差,使被加工工件达到一定精度,为精加工作准备,并完成一些次要表面的加工(如钻孔、攻螺纹、铣键槽);精加工阶段,保证各主要表面达到图样规定的质量要求。3.4切削用量的确定切削用量是切削时各运动参数的总称,包括切削速度、进给量和背吃刀量(切削深度)。切削速度vc是指刀具切削刃上选定点相对于工件待加工表面在主运动方的瞬时速度单位为M/min。进给量f是指在主运动每转一转或每一行程时(或单位时间内),刀具与工件之间沿进给运动方向的相对位移,单位mm/s。背吃刀量(切削深度)ap,是指待加工表面与已加工表面之间的垂直距离,单位mm。
4刀具、夹具的正确选择
IT之家7月7日消息今天晚上微信公众平台推出了“公众号数据助手”官方小程序,“公众号数据助手”官方小程序面向公众号管理员、长期运营者和短期运营者,支持公众号管理员及运营者在手机端更方便、及时地查看运营数据。
已注册或绑定公众号的用户打开小程序首页可直接在列表中选择公众号登录。登录后点击帐号头像可以返回首页列表切换公众号。
功能方面,支持查看公众号的实时粉丝数据,当天粉丝数据变化即时可查,支持查看历史粉丝增长趋势。包括每日粉丝总数及新增和取消关注人数,可区分新增粉丝来源。
关键词:PCI总线设备驱动程序WDM模式DriverStudio
PCI总线规范是为提高微机总线的数据传输速度而制定的一种局部总线标准。在设计自行开发的基于PCI总线的数据传输设备时,需要开发相应的设备驱动程序。通常开发PCI设备驱动程序有多种模式,在Windows2000环境下,主要采用WDM模式。本文针对自行开发的基于PCI总线的CCD视频信号传输控制卡,编写了符合WDM模式的驱动程序。
1WDM模式驱动程序
1.1WDM模式(WindowsDriverModel)
Windows2000对驱动程序的编写不再基于以往的Win3.x和Win9x下的VxD(虚拟设备驱动程序)结构,而是基于一种新的驱动模型——WDM(WindowsDriverModel)。
WDM为Windows98/2000/XP操作系统的设备驱动程序的设计提供了统一的框架。WDM来源于WindowsNT的分层32位设备驱动程序模型(layered32-bitdevicedrivermodel)。它支持更多的特性,如即插即用(PnP)、电源管理、WMI和NT事件。
1.2设备驱动程序
设备驱动程序是操作系统的一个组成部分,它由I/O管理器(I/OManager)管理和调动。Windows2000操作系统下的I/O管理器功能描述如图1所示。
I/O管理器每收到一个来自用户应用程序的请求就创建一个I/O请求包(IRP)的数据结构,并将其作为参数传递给驱动程序。驱动程序通过识别IRP中的物理设备对象(PDO)来区别是发送给哪一个设备。IRP结构中存放请求的类型、用户缓冲区的首地址、用户请求数据的长度等信息。驱动程序处理完这个请求后,在该结构中填入处理结果的有关信息,调用IoCompleteRequest将其返回给I/O管理器,用户应用程序的请求随即返回。访问硬件时,驱动程序通过调用硬件抽象层的函数实现。
1.3DriverStudio工具简介
NuMegaLab公司开发的DriverStudio是一整套开发、调试和检测Windows平台下设备驱动程序的工具软件包。它把DDK(DeviceDevelopmentKit)封装成完整的C++函数库,根据具体硬件通过向导生成框架代码,并且提供了一套完整的调试和性能测试工具SoftICE、DriverMonitor等。
2应用实例
本文利用PCI专用接口芯片PCI9052设计了一个数据传输控制卡。卡上主要的芯片有PCI9052、FIFO(CY7C4221)、CPLD(MAX7064S)和A/D转换器(MAX1197)。传输卡硬件框图如图2所示。面阵CCD得到的视频信号经过调理电路,生成的视频调理信号通过A/D转换器进行数字化处理,送入FIFO中。在CPLD的控制下,数据经过PCI9052送入PCI总线,再传送到计算机内存中,并显示在监视器上。驱动程序必须实现如下几个基本功能:(1)硬件中断;(2)能支持应用程序获取数据;(3)能根据外部FIFO(CY7C4221)的状态启动或停止突发传输。
在数据输入过程中,最重要的是对数据进行实时控制,因此需要硬件中断。在中断程序中,根据外部FIFO状态完成数据的读入。
2.1用DriverWizard生成驱动程序框架
DriverStudio中的DriverWorks软件为开发WDM程序提供了一个完整的框架。它包含一个可快速生成WDM驱动程序框架的代码生成向导工具DriverWizard,而且还带有许多类库。在用DriverWizard生成的程序框架中写入相对于设备的特定代码,编译后即可得到所需的驱动程序。
在利用DriverWorksV2.7的向导DriverWizard完成驱动程序的框架时共有11个步骤,其中关键步骤有:
(1)在第四步中选中PCI,并在VendorID和DeviceID中分别输入厂商号和设备号,还需填入PCISubsystemID和PCIRevisionID。这四项可以用网上的免费软件PCITree或PCIView浏览PCI设备,用这两个软件也可以得到BAR0~BAR5的资源分配情况和中断号。
(2)第七步IRP队列排队方法,它决定了驱动程序检查设备的方式。本设计选SystemManaged,则所有的IRP排队都由系统(即I/O管理器)完成。
(3)第九步是最关键的一步。首先在Resources中添加资源,在name中输入变量名,在PCIBaseAddress中输入0~5的序列号。0~5和BAR0~BAR5一一对应。在设置中断对话框中,在name栏写入中断服务程序的名称,选中创建中断服务程序ISR?穴CreateISR?雪,不选创建延迟程序调用DPC(CreateDPC),选中MakeISR/DPCclassfunctions,使ISR/DPC成为设备类的成员函数。
其次选中Buffer以选取读写方式,用于描述与I/O操作相关的数据缓冲区。本设计需要快速传送大量数据,因此采用DirectI/O方式。
(4)在第十步中,需要加入与应用程序或者其他驱动程序通信的I/O控制代码参量。
2.2驱动程序模块框图和代码分布
PCI设备驱动程序模块包括配置空间的访问模块、IO端口模块、内存读写模块和终端模块等。各模块之间是对等的。驱动程序模块框图如图3所示。
驱动程序初始化模块代码段放在#pragmacode_seg(″INT″)和#pragmacode_seg()之间。在系统初始化完成后,这部分代码从内存中释放,防止占用系统宝贵的内存资源。#pragmacode_seg()之后是驱动程序和系统的许多模块的实现部分。这部分在驱动程序运行后不会从内存中释放。
2.3驱动程序主要模块的实现
(1)配置空间的访问模块
DriverWorks的KPciConfiguration类封装了访问PCI设备配置空间的所有操作。首先初始化这个类的实例:
KpciConfigurationPciConfig()m_Lower.TopOfStack());
/?觹m_Lower是KpnpLowerDevice类的对象。m_LowerTopOfStack()返回当前设备堆栈顶部的设备对象。*/
初始化完后可以直接利用成员函数ReadHeader/WriteHeader函数访问所有的配置寄存器。
为了确定映射空间的类型和大小,先向目标基地址寄存器写入0Xffffffffh,然后回读该寄存器的值。如果最低位为1,表示映射于I/O空间,反之为存储空间;如果映射于存储空间,从第四位开始计算0的个数可以确定内存空间的大小;如果是I/O方式,从第二位开始计算0的个数可确定I/O空间的大小,最大为256字节。如果设备的存储空间超过256字节,要实现设备的整个存储部分的访问,就必须采用内存映射。
(2)I/O操作模块
Driverworks的KIoRange类封装了I/O端口访问的操作。部分代码如下:
{……
KIORangeDevIoPort();//创建实例
NTSTATUSstatus=DevIoPort().Initialize(pResListTranslated,pResListRaW,PciConfig.BaseAddressIndexToOrdinal(0));
/*第一个参数为转换后的资源列表指针;第二个参数为原始资源列表指针;第三个参数中的0为I/O口对应的基地址,用来转换成特定端口资源的序数?*/
If(NT_SUCCESS(status))
{……
DevIoPort.inb(0,LineBuf1,10);
/*成功初始化后可分别用KIoRange类的成员函数inb(/outb)从端口中读/写字节*/
}
else{Invalidate();returnstatus;
/*未能初始化成功,错误信息在status中*/
{
……}
(3)内存读写模块
DriverWorks的KMemoryRange类封装了端口访问的操作。
status=m_MemoryRange().Initialize(pResListTranslated,pResListRaw,PciConfig.BaseAddressIndexToOrdinal(0));
此函数的参数、意义及具体用法与I/O端口的操作基本相同。
内存对象也用来发送控制字,以控制CPLD的开始和停止等。实际上控制字是通过PCI9052发送的。该控制字地址已被映射成PCI的内存空间。所以定义一个指向内存空间的内存对象,通过该对象即可发送控制字。
(4)中断模块
在中断模块,首先要激活PCI9052中断使能位,然后判断硬件中断响应是否产生,如果有,则进行突发传输,读入FIFO中的数据。
BOOLEANTranCard::Isr_MyIrq(void)
{if(//中断未产生)
{……
returnFALSE;}
else
{/*如果产生硬件中断,设置命令寄存器,进行突发数据传输*/
returnTRUE;}
}
为了将硬件中断与编写的中断服务程序连接在一起,采用InitializeAndConnect方法,部分代码如下:
NTSTATUSTranCardDevice?押?押OnStartDevice(KIrpI)
{……
status=m_MyIrq.InitializeAndConnect(
pResListTranlated,
LinkTo(Isr_MyIrq),
This;)
……}
2.4驱动程序的调用
编写驱动程序本身不是最终目的,最终目的是调用驱动程序管理资源,并为用户应用程序使用。驱动程序加载以后,它的许多进程处于Idle状态,实际上需要用户应用程序去调用激活。应用程序利用Win32API直接调用驱动程序,实现驱动程序和应用程序的信息交互。
首先用CreateFile()打开设备,获得一个指向设备对象的句柄。使用CreateFile函数时应注意:由于驱动程序是*.sys,所以第一个参数应该是这个设备对象的标志连接(symboliclink)。该标志连接名有一个设置数据文件搜索路径的数字号,而这个数字号通常是零。如果这个连接名是″TranCard″,则传递给CreateFile的宇符串就是:″\\\\.\\TranCard0″。例如:
HANDLEhDevice=CreateFile(″\\\\.\\TranCard0″)GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,NULL?,OPEN_EXISTING,0,NULL);
然后用DeviceIoControl()进行数据的传送。最后用CloseHandle()关闭设备句柄。
下面是应用DeviceIoControl()程序片段。
{……
m_b=DeviceIoControl(hDevice,TRANCARD_IOCTL_
RECEIVE(buffer,sizeof,buffer,NULL,0,&buffersize,NULL);
……}
2.5驱动程序的调试
采用SoftICE、DriverMonitor作为调试工具,基本调试过程如下:(1)使用symbolloader加载驱动程序,然后使用SoftICE跟踪调试,确认驱动程序正常加载;(2)对核心的中断响应程序代码,用SoftICE中的Genint命令产生虚拟中断,单步跟踪中断;(3)硬件发送大量的数据,通过查看内存的数据,确认数据传输是否正确。