Vxworks中断服务程序解析

Vxworks中断服务程序解析
Vxworks中断服务程序解析

Vxworks中断服务程序解析

中断服务程序用来处理来自硬件的中断,是设备驱动程序的重要组成部分。为及时响应外部中断,防止中断丢失.中断服务程序应该尽量的小,只把最必要的任务放在中断服务程序里面执行。一般在系统启动,硬件设备成功初始化之后将ISR与中断向量挂上:也可以在系统启动后的任何时刻挂中断向量。调试中经常采用后一种方式。在VxWorks中有两个不同的函数可提供挂中断:intConnect和pciIntConnect。两者的区别是intConnect使用的中断向量是独占的,pcilntConnect则可在各个不同的ISR之间共享中断向量。实际上pcilntConnect 内部调用了 intConnect函数,在内部使用一个链表来管理多个不同的ISR。pcilntConnect 要求每次进入ISR都要检查硬件的寄存器,证实中断的确是由ISR服务的硬件产生。如果硬件的寄存器表明该硬件并未产生中断,则ISR立即退出,以让挂在同一个中断向量上的其它ISR有机会检查是否有中断产生。pcilntLib.c中的代码清楚的说明了这个问题:void pciInt (int irq ){

PCLlNT RTN *pRtn;

for (pRm = (PCI_INT_RTN*)DLL_FIRST(&pcilntList[irq]);

pRtn!=NULL;

pRtn =(PCI_INT_RTN*)DLL_NEXT(&pRtn->node))

(*pRtn->routine) (pRtn->parameter);

}

当PCI总线上有中断发生时,系统调用void pcilnt(int irq)函数,再由pciInt使用内部的链表来依次调用挂在该中断上的ISR。如果某个ISR不能正常退出,就会影响到其它ISR的运行。在调试时为了检查中断向量是否已经和ISR可靠的连接上,可以在命令行上或程序中直接调用pciInt来查看ISR是否被触发。在硬件确定的情况下,可以小心设计保证各个硬件使用不同的中断,这样对PCI上的设备也可直接使用intConnect来挂中断。

需要说明的是ISR挂上中断向量的过程不是简单的在向量表中设置中断向量值。VxWorks 除了设置中断向量值以外,还在与中断向量相连的ISR加上了一层薄薄的包装,包括IsR执行前保存寄存器值.设置堆栈以及IsR执行后恢复寄存器和堆栈。在中断频繁的场合,系统中中断堆栈有可能被耗尽而溢出。为了避免上述情况发生,必须修改系统的中断堆栈大小,即在config.h中加入以下代码:

#define INCLUDE_KERNEL

#define ISR_STACK_SIZE 0xl000 //表示系统中中断堆栈的大小为4k

由于中断处理程序的特殊性,中断处理程序中不能使用可能导致阻塞的函数,如printf,semTake等,具体不可使用的函数列表可以在<>中查到。有时候为了调试方便,希望在ISR中打印一些信息,系统提供了一个与prinf等价的函数sysLog,该函数可接受 7个参数。它是非阻塞的。比较而言,prinf函数要在打印任务完成后才返回,sysLog只把打印任务放到系统的打印队列中就返回。在ISR中虽然不可以使用semTake,但可以使用semGive(互斥类型的除外)。一般使用semTake和semGive在ISR和普通程序间通信:当一个中断产生,ISR 完成必要的任务后,调用semGive通知另外一个使用semTake等待ISR信号的任务,该任务收到semGive释放的信号后,继续完成ISR中不便处理的任务。

简单的客户服务流程规范

第一章服务体系 良好的客服形象良好的技术 良好的客户关系良好的品牌 一、“5S4E”服务 “5S4E”的宗旨是“客户永远是第一位”,从客户的实际需求出发,为客户提供真正有价值的服务,帮助客户更好地使用产品。体现了“良好的客服形象、良好的技术、良好的客户关系、良好的品牌”的核心服务理念,要求以最专业性的服务队伍,及时和全方位地关注客户的每一个服务需求,并通过提供广泛、全面和快捷的服务,使客户体验到无处不在的满意和可信赖的贴心感受。 通过建立一个完善的服务体系和服务质量监督体系,从而能为用户提供“亲切、快捷、专业”的体验。 通过建立一个良好的内部激励机制,培养一支充满活力的、能兢兢业业为客户服务的“友好、高效、专业”的客户服务队伍。 二、“5S4E”服务体系简介

“5S4E服务”提出了坚持服务质量和服务满意度的5个标准及客户服务将要达到的4个核心目的,即要以smiling(微笑)和sincere(诚挚)的服务态度,客户的服务需求在第一时间得到响应,得到充分的重视;要以speciality(专业)和speedy(快速)的服务水准,建构我们规范和专业的服务体系,第一时间解决客户应用中的问题,为客户提供量身定做的专业性服务;通过长期不懈、坚持永续的服务,持续提升客户服务价值,达到客户satisfied(满意)的服务效果。最终为客户提供快捷而不失其细心,专业而不失其亲切,持续而不失其稳定的高质量服务,提供品牌的认知度。也就是我们的核心“excellent customer service visualization(良好的客服形象)、excellent technology(良好的技术)、excellent customer relationship(良好的客户关系)及excellent brand(良好的品牌)” 客户服务部:是“5S4E”服务体系的最高管理机构,负责制定“5S4E”整体发展规划、客户服务规范与管理程序、XXXX各维修及销售类产品线服务政策、对各地维修站提供支持与监督工作。同时负责处理用户投诉及800免费技术咨询热线、互联网网上技术支持的日常运作。 各地维修站及技术工程部:是XX在全国各地的服务机构,负责为所在区域的XX 客户提供全方位的技术服务,并对相关产品维护人员提供适当培训。目前XX已在全国各地建立40个维修中心,覆盖面正逐步扩大。 三、“5S4E”特色 从客户的实际需求出发,努力探寻对客户真正有价值的新的服务内容与服务方式,形成有别于业界其他厂家的服务特色,是“5S4E”的不懈追求。

《售后服务管理流程作业指导书》

售后服务(保期外)管理流程

一、目的 规范售后服务工作流程,通过提升售后服务的响应速度和故障问题的解决质量,加强客户与企业的联系,增强客户对企业的依赖感和信任感。通过流程规范售后服务标准,使售后服务常态化,使售后服务变成企业的赢利点。 二、适用范围 质保期外的收费服务。 三、职责分工 1、客服部:客服部是企业售后服务的责任主体,售后服务包括主动服务和被动服务两种类型。客服部制定客户 售后回访标准(频次标准、内容标准、话术标准)和售后服务价格,制定电话排查问题的故障排查问题树,培训内部客服人员。定期对客户进行拜访(电话、短信、面访),做好客户拜访的记录工作,对客户使用过程中存在的问题积极响应,通过专业的服务提升公司品牌在客户心目中的价值,达到二次营销、老客户带新客户的目的。接受客户方的投诉电话、故障电话等,做好故障定位,故障解决方案及售后服务报价,委派合适的售后服

务人员。 2、营销部:协助客服部做好客户售后服务工作。当售后服务需要与客户进行价格深度洽谈,客服人员无法通过 电话方式进行处理时可转销售人员协助处理,销售人员在与客户进行售后服务价格洽谈时应尽可能遵循售后服务报价体系,如出现报价负偏差超过10%的情况应由总经理审批。 3、工艺设备部/电气部:在售后服务环节扮演售后服务技术人员角色,接受客服部售后服务委派,前往客户处 进行故障与问题的排除,对整个售后服务全过程进行记录,服务结束后应由客户方签字,将所有文字性资料、图片资料、数据资料等带回公司交客服部存档。 4、财务部:负责与售后服务相关的成本、费用的核算、审批等工作。 四、流程节点、节点性质说明

单片机_C语言函数_中断函数(中断服务程序)

单片机_C语言函数_中断函数(中断服务程序) 在开始写中断函数之前,我们来一起回顾一下,单片机的中断系统。 中断的意思(学习过微机原理与接口技术的同学,没学过单片机,也应该知道),我们在这里就不讲了,首先来回忆下中断系统涉及到哪些问题。 (1)中断源:中断请求信号的来源。(8051有3个内部中断源T0,T1,串行口,2个外部中断源INT0,INT1(这两个低电平有效,上面的那个横杠不知道怎么加上去))(2)中断响应与返回:CPU采集到中断请求信号,怎样转向特定的中断服务子程序,并在执行完之后返回被中断程序继续执行。期间涉及到CPU响应中断的条件,现场保护,现场恢复。 (3)优先级控制:中断优先级的控制就形成了中断嵌套(8051允许有两级的中断嵌套,优先权顺序为INT0,T0,INT1,T1,串行口),同一个优先级的中断,还存在优先权的高低。优先级是可以编程的,而优先权是固定的。 80C51的原则是①同优先级,先响应高优先权②低优先级能被高优先级中断③正在进行的中断不能被同一级的中断请求或低优先级的中断请求中断。 80C51的中断系统涉及到的中断控制有中断请求,中断允许,中断优先级控制 (1)3个内部中断源T0,T1,串行口,2个外部中断源INT0,INT1 (2)中断控制寄存器:定时和外中断控制寄存器TCON(包括T0、T1,INT0、INT1),串行控制寄存器SCON,中断允许寄存器IE,中断优先级寄存器IP 具体的是什么,包括哪些标志位,在这里不讲了,所有书上面都会讲。 在这里我们讲下注意的事项 (1)CPU响应中断后,TF0(T0中断标志位)和TF1由硬件自动清0。 (2)CPU响应中断后,在边沿触发方式下,IE0(外部中断INT0请求标志位)和IE1由硬件自动清零;在电平触发方式下,不能自动清楚IE0和IE1。所以在中断返回前必须撤出INT0和INT1引脚的低电平,否则就会出现一次中断被CPU多次响应。 (3)串口中断中,CPU响应中断后,TI(串行口发送中断请求标志位)和RI(接收中断请求标志位)必须由软件清零。 (4)单片机复位后,TCON,SCON给位清零。 C51语言允许用户自己写中断服务子程序(中断函数) 首先来了解程序的格式: void 函数名() interrupt m [using n] {} 关键字 interrupt m [using n] 表示这是一个中断函数 m为中断源的编号,有五个中断源,取值为0,1,2,3,4,中断编号会告诉编译器中断程序的入口地址,执行该程序时,这个地址会传个程序计数器PC,于是CPU开始从这里一条一条的执行程序指令。 n为单片机工作寄存器组(又称通用寄存器组)编号,共四组,取值为0,1,2,3 中断号中断源 0 外部中断0 1 定时器0 2 外部中断1 3 定时器1中断 4 串行口中断 (在上一篇文章中讲到的ROM前43个存储单元就是他们,这5个中断源的中断入口地址为: 这40个地址用来存放中断处理程序的地址单元,每一个类中断的存储单元只有8B,显然不

售后服务方案模板

XXXX公司 XXX用户 SSS项目名 一、售后服务方案 售后服务承诺函 我公司承诺本项目所提供的设备及软件服务均为原厂商正品,并对所提供软件和相关硬件设备的售后服务做以下承诺: 1、提供的软件产品均拥有合法来源证明和产权。 2、本项目提供的设备及设备售后期内的零配件均为全新、完整、未使用过的原厂商正品。 3、我公司针对本项目提供自项目验收之日起3年质保服务。本项目中各设备售后年限以及服务标准,均以设备原厂商提供的售后服务承诺函为准,满足招标文件要求。 4、本项目质保期内所有产品和系统在正常的应用中出现故障,由本公司提供一年免费驻场服务(至少一人),售后响应时间为30分钟,2小时内到达故障现场,4小时内完成维修;不能修复的免费更换新品。并提供终身维护服务。在质量售后期之外,维护内容与质量售后期内的服务内容一致,维护服务费用由甲方与本公司协商确定,签订的维护合同进行适当收费。 5、为用户提供7*24*365小时技术支持和售后服务支持。 6、产品试运行期间,如出现技术故障,30分钟内响应,工程师在2个小时内到达现场使系统得以正常运行。如在4小时内(含节假日)未解决故障和问题,我公司将采取紧急预案,使系统得以正常运行。我公司在进行系统维护及保障系统的正常运行的同时,并对各部门进行培训,解答使用等问题。在质量保证期间,

我公司在2小时内对客户所提出的维护要求做出实质性反应,及时解决系统运行中的问题。系统运行过程中如果出现各种技术故障和问题,我公司的专业工程师在2个小时内使系统得以正常运行。如果在4小时内(节、假日也不例外)未解决故障和问题,我公司将采取紧急预案,使系统得以正常运行。质保期满后须继续提供服务,提供7*24小时的技术支持和服务。 投标人名称:XXXX(单位公章) 法定代表人或授权代表(签字或加盖个人名章): 投标日期:

中断服务程序流程图

第一讲: 第六章I/O接口原理-接口、端口、编址 回顾:微机系统的层次结构,CPU、主机、接口电路及外部设备之间的结构关联,输入/输出的一般概念。 重点和纲要:微机系统主机与外部设备之间的数据传送,包括I/O端口的寻址方式,输入/输出的传送控制方式。 讲授内容: 6. 1 输入/输出数据的传输控制方式 一、输入/输出的一般概念 1.引言 输入/输出是微机系统与外部设备进行信息交换的过程。输入/输出设备称为外部设备,与存储器相比,外部设备有其本身的特点,存储器较为标准,而外部设备则比较复杂,性能的离散性比较大,不同的外部设备,其结构方式不同,有机械式、电动式、电子式等;输入/输出的信号类型也不相同,有数字信号,也有模拟信号;有电信号,也有非电信号;输入/输出信息的速率也相差很大。因此,CPU与外部设备之间的信息交换技术比较复杂。 CPU与外设之间的信息交换,是通过它们之间接口电路中的I/O端口来进行的,由于同一个外部设备与CPU之间所要传送的信息类型不同,方向不同,作用也不一样(例如数据信息、状态信息、控制信息、输入/输出等),所以接口电路中可以设置多个端口来分别处理这些不同的信息。 2.输入/输出端口的寻址方式 微机系统采用总线结构形式,即通过一组总线来连接组成系统的各个功能部件(包括CPU、内存、I/O端口),CPU、内存、I/O端口之间的信息交换都是通过总线来进行的,如何区分不同的内存单元和I/O端口,是输入/输出寻址方式所要讨论解决的问题。

根据微机系统的不同,输入/输出的寻址方式通常有两种形式:(1).存储器对应的输入、输出寻址方式 这种方式又称为存储器统一编址寻址方式或存储器映象寻址方式。 方法:把外设的一个端口与存储器的一个单元作同等对待,每一个I/O端口都有一个确定的端口地址,CPU与I/O端口之间的信息交换,与存储单元的读写过程一样,内存单元与I/O端口的不同,只在于它们具有不同的的地址。优点: ①CPU对I/O端口的读/写操作可以使用全部存储器的读/写操作指令,也可 以用对存储器的不同寻址方式来对I/O端口中的信息,直接进行算术、逻辑运算及循环、移位等操作。 ②内存与外设地址的分配,可以用统一的分布图。 ③不需要专门的输入、输出操作指令。 缺点: ①内存与I/O端口统一编址时,在地址总线根数一定的情况下,使系统中 实际可以直 接寻址的内存单元数减少。 ②一般情况下,系统中I/O端口数远小于内存单元数,所以在用直接寻址方 式来寻址这些端口时,要表示一个端口地址,必须用与表示内存单元地址相同的字节数,使得指令代码较长,相应地读/写执行时间也较长,这对提高系统的运行速度是不利的。 Mortorola公司的M6800CPU等均采用这种寻址I/O端口的方式。 3. CPU与外设之间所传送的信息类型 CPU与I/O端口之间所交换的信息,可以有下列几种类型: ①数据信息:包括数字量、模拟量、开关量等,可以输入、也可以输出 ②状态信息:这是I/O端口送给CPU的有关本端口所对应的外设当前状态 的信息。供CPU进行分析、判断、决策。 ③控制信息:这是CPU送给I/O端口的控制命令,使相应的外部设备完成 特定的操作。 数据信息、状态信息和控制信息是不同类型的信息,它们所起的作用也不一样。但在8086/8088微机系统中,这三种不同类型的信息的输入、输出过程是相同的。为了加以区分,可以使它们具有不同的端口地址,在端口地址相同的情况下,可以规定操作的顺序,或者在输入/输出的数据中设置特征位。

VxWorks下几种定时延时方法的小结

编程过程中,出于需要,大家或多或少要用到定时/延时。VxWorks下提供了几种定时/延时机制,根据收集的一些资料和VxWorks相关文档,在学习和上机实验的基础上,对它们的使用以及我所遇到的问题做一个总结,希望对大家能有所帮助。不正确之处,恳请斧正。 1 taskDelay taskdelay()提供了一个简单的任务睡眠机制,也常用于需要定时/延时机制的应用中。它的格式是STATUS taskDelay(int ticks /* number of ticks to delay task */),可以看出使用该函数实现延时的单位为tick(一般系统中一个tick都是ms级的)。在VxWorks下可以这样使用taskDelay()函数:taskDelay(sysClkRateGet()*1)。函数sysClkRateGet()返回系统的时钟速率,单位是tick数/每秒(利用函数sysClkRateSet()可以改变系统的时钟速率)。在POSIX中有一个与taskdelay()相对应的函数――nanosleep()(下文中有介绍)。这两个函数仅仅是延时单位不同,效果是相同的。 利用taskdelay(),可以将调用的任务移动到具有相同优先级的就绪队列尾部。特别的,可以通过调用taskdelay(0),将cpu交给系统中其他相同优先级的任务。延时为0的调用只能用于taskdelay()中,nanosleep()认为这种调用是错误的。 taskdelay()会导致调用的任务在指定的延时期间(以ticks计数)放弃cpu,使任务处于DELAY状态(因此,其不能用于中断服务程序中)。通常其受到任务调度的影响,但在等待一些与中断无关联的外部条件时,其是有用的。如果调用的任务受到一个信号,指出其没有被阻塞或被忽略,taskDelay()将返回ERROR,并在信号处理程序运行后设置errno为EINTR。 2 WatchDog VxWorks提供了一个看门狗定时器(watchdog timer)机制,利用提供的函数,任何任务都可以创建一个看门狗定时器,经过指定的延时后,实现在系统时钟ISR的上下文中运行指定的程序。在VxWorks中,看门狗定时器作为系统时钟中断服务程序的一部分来维护。因此,与看门狗定时器相联系的函数运行在系统

交付及售后服务控制程序(含表格)

交付及售后服务控制程序 (IATF16949-2016) 1.目的 为规范售后服务工作,满足用户的的需求,保证用户在使用我公司产品时,能发挥最大的效益,提高用户对产品的满意度和信任度,提高产品的市场占有率,制定本规范。 2.职责 2.1营销部:作为公司外部顾客的代表,是公司产品售后服务管理的唯一联络窗口。 2.2品保部:回复产品的顾客抱怨。 2.3生产部:作为内部客户调查之主导单位。 2.4在公司内部,下一道工序为上道工序的顾客,各道工序的主管负责日常的工作处理,并要求及时准确地向上一级主管汇报。 2.5 在确定所要求的交付后活动的覆盖范围和程度时,组织应考虑: a)法律法规要求; b)与产品和服务相关的潜在不良的后果; c)产品和服务的性质、使用和预期寿命; d)顾客要求; e)顾客反馈。 3.交付及售后服务主要内容 3.1交付前的准备

3.1.1产品终检合格后,由物流员与顾客联系,落实交付事宜。 3.1.2物流员根据联系情况作出交付安排,并通知仓库办理出库手续。如为他方代运,应和代运方签订合同协议,明确质量职责。 3.1.3发运前,凭销售内勤出具的《发货单》经分管领导签发后方可办理成品出库。 3.1.4仓库保管员必须按《发货单》逐一核实,如发现错、漏装等问题时,应重新按清单要求调整,直至确认无误。 3.2 交付 3.2.1顾客自提 如合同规定或经商定由顾客自己提货,则由销售内勤和成品仓库保管员与对方来人共同按《成品发货单》核对,如发现清单与实物不符,销售内勤应查明原因,经公司销售部经理同意,顾客再次确认无误后,重新装箱,并在公司提供的《发货单》上签明收货人的姓名后方可交付。 3.2.2供方送货 合同规定,由供方负责送货,应视运输可能和经济性,采用公司车队送货或委托外部运输两种方式; 当需要委托外部运输时,由物流员负责联系运输单位,并对其运输质量保证能力进行验证。在出运时,由司机点收数量,并在《出库单》或《送货单》上签名,交付车队。 产品运抵目的地后,由顾客按照《发货清单》内容开箱核对,如发现清单与实物不符或其它质量问题时,由顾客直接与业务人员联系,经供货方确认,同意后卸货或退货。最后顾客在《送货单》上签收实收数量,由委托运输方司机带回交

软件售后服务流程

xx 产品软件售后服务流程 为进一步规范和提高公司的售后技术服务水平和效率,提升客户满意度,并进一步加强和提高xx 软件的品牌形象,实现xx 软件及客户双盈的目标。公司制定了客户服务制度,为客户提供专业、及时的技术支持与服务。 一、 问题受理流程 服务热线或使用使用者使用系统管理 员 商务服务顾问对接客户服务 投诉通道解决问题

二、问题分类 对于任何使用我公司软件过程中出现的问题,可以通过以上"问题受理途径"通知公司服务热线,公司将对问题进行分类处理 1、软件BUG(功能错误):如:使用打开某菜单出现错误提 示、使用某功能出现错误提示或不能正常使用; 2、软件数据问题:数据不一致或不对,如:两个以上的报表 数据对不上或和实际的有出入等。 3、需求(功能修改和增加):如 ?需要增加目前产品中没有的功能或报表; ?现有的功能调整或完善,包括对使用方便性的调整等; ?产品现有功能的客户个性化修改。 4、环境问题: ?操作软件异常,如:服务器无法启动、个人电脑无法启 动、操作系统报错等; ?数据库异常:系统数据库(如SQL Server)报错、无法启 动、数据库丢失等等; 5、操作问题:如人员换岗后软件不会使用等; 6、VIP通道的客户,软件使用者可以直接联系服务顾问。 三、处理原则 软件使用各部门出现的问题,需要反馈给使用方公司的系统管理员,系统管理员根据问题分类通过不同通道解决问题,若需要软件服务方(我公司)解决,可以通过一般反馈通道或者vip反馈通道反

馈给我公司,我公司将按以下的处理原则处理: ?一般的使用咨询,工作人员将直接给客户在电话或微信中给予 答复; ?新需求会转交给商务经理,商务经理在接到通知任务后及时联 系问题提出方; ?若为投诉问题,在我公司内部投诉通道系统中反馈,服务监管 专员会及时处理投诉意见; ?热线不能解决的技术问题直接服务派单给服务顾问,服务顾问 在接到服务通知单后: ?及时联系问题提出人,使用远程工具或者使用现场解决问题,并填写服务单; ?软件bug或者优化,通过xx系统反馈xx总部,xx回复更新软件后再及时解决问题; ?若判断为新需求,再转交给商务经理跟进; ?专项服务:参照xx集团规定的专项服务事项清单,清单内事项需洽谈客户进行软件专项服务; 四、需求的定义与处理 客户所提出的要求经确认后属于需求,将由技术负责人评估后决定是否修改、是否收费、具体的修改时间、具体的修改方式和建议等。一般我们会综合考虑以下情况,作为评估标准: ?xx产品是否支持 ?软件流程变通处理客户方是否同意

计算机组成原理中断实验报告

北京建筑大学 2015/2016 学年第二学期 课程设计 课程名称计算机组成原理综合实验 设计题目微程序控制器设计与实现 系别电信学院计算机系 班级计141 学生姓名艾尼瓦尔·阿布力米提 学号 完成日期二〇一六年七月八日星期五 成绩 指导教师 (签名) 计算机组成综合实验任务书

指令执行流程图; ?5、利用上端软件,把所编写的微程序控制器内容写入实验台中控制器中。 ?6、利用单拍测试控制器与编程的要求是否一致。如果有错误重新修改后再写入控制器中。 7、编写一段测试程序,测试控制器运行是否正确。 实验目的 1.融合贯通计算机组成原理课程,加深对计算机系统各模块的工作原理及相互联系(寄存器堆、运算器、存储器、控制台、微程序控制器)。 2.理解并掌握微程序控制器的设计方法和实现原理,具备初步的独立设计能力;3.掌握较复杂微程序控制器的设计、调试等基本技能;提高综合运用所学理论知识独立分析和解决问题的能力。 实验电路 1. 微指令格式与微程序控制器电路 2.微程序控制器组成 仍然使用前面的CPU组成与机器指令执行实验的电路图,但本次实验加入中断系统。这是一个简单的中断系统模型,只支持单级中断、单个中断请求,有中断屏蔽功能,旨在说明最基本的原理。

中断屏蔽控制逻辑分别集成在2片GAL22V10(TIMER1 和TIMER2)中。其ABEL语言表达式如下: INTR1 := INTR; INTR1.CLK = CLK1; IE := CLR & INTS # CLR & IE & !INTC; IE.CLK= MF; INTQ = IE & INTR1; 其中,CLK1是TIMER1产生的时钟信号,它主要是作为W1—W4的时钟脉冲,这里作为INTR1的时钟信号,INTE的时钟信号是晶振产生的MF。INTS微指令位是INTS机器指令执行过程中从控制存储器读出的,INTC微指令位是INTC机器指令执行过程中从控制存储器读出的。INTE是中断允许标志,控制台有一个指示灯IE显示其状态,它为1时,允许中断,为0 时,禁止中断。当INTS = 1时,在下一个MF的上升沿IE变1,当INTC = 1时,在下一个MF的上升沿IE变0。CLR信号实际是控制台产生的复位信号CLR#。当CLR = 0时,在下一个CLK1的上升沿IE变0。当 CLR=1 且INTS = 0 且 INTC = 0时,IE保持不变。 INTR是外部中断源,接控制台按钮INTR。按一次INTR按钮,产生一个中断请求正脉冲INTR。INTR1是INTR经时钟CLK1同步后产生的,目的是保持INTR1与实验台的时序信号同步。INTR脉冲信号的上升沿代表有外部中断请求到达中断控制器。INTQ是中断屏蔽控制逻辑传递给CPU的中断信号,接到微程序控制器上。当收到INTR脉冲信号时,若中断允许位INTE=0,则中断被屏蔽,INTQ仍然为0;若INTE =1,则INTQ =1。

Vxworks中断服务程序解析

Vxworks中断服务程序解析 中断服务程序用来处理来自硬件的中断,是设备驱动程序的重要组成部分。为及时响应外部中断,防止中断丢失.中断服务程序应该尽量的小,只把最必要的任务放在中断服务程序里面执行。一般在系统启动,硬件设备成功初始化之后将ISR与中断向量挂上:也可以在系统启动后的任何时刻挂中断向量。调试中经常采用后一种方式。在VxWorks中有两个不同的函数可提供挂中断:intConnect和pciIntConnect。两者的区别是intConnect使用的中断向量是独占的,pcilntConnect则可在各个不同的ISR之间共享中断向量。实际上pcilntConnect 内部调用了 intConnect函数,在内部使用一个链表来管理多个不同的ISR。pcilntConnect 要求每次进入ISR都要检查硬件的寄存器,证实中断的确是由ISR服务的硬件产生。如果硬件的寄存器表明该硬件并未产生中断,则ISR立即退出,以让挂在同一个中断向量上的其它ISR有机会检查是否有中断产生。pcilntLib.c中的代码清楚的说明了这个问题:void pciInt (int irq ){ PCLlNT RTN *pRtn; for (pRm = (PCI_INT_RTN*)DLL_FIRST(&pcilntList[irq]); pRtn!=NULL; pRtn =(PCI_INT_RTN*)DLL_NEXT(&pRtn->node)) (*pRtn->routine) (pRtn->parameter); } 当PCI总线上有中断发生时,系统调用void pcilnt(int irq)函数,再由pciInt使用内部的链表来依次调用挂在该中断上的ISR。如果某个ISR不能正常退出,就会影响到其它ISR的运行。在调试时为了检查中断向量是否已经和ISR可靠的连接上,可以在命令行上或程序中直接调用pciInt来查看ISR是否被触发。在硬件确定的情况下,可以小心设计保证各个硬件使用不同的中断,这样对PCI上的设备也可直接使用intConnect来挂中断。 需要说明的是ISR挂上中断向量的过程不是简单的在向量表中设置中断向量值。VxWorks 除了设置中断向量值以外,还在与中断向量相连的ISR加上了一层薄薄的包装,包括IsR执行前保存寄存器值.设置堆栈以及IsR执行后恢复寄存器和堆栈。在中断频繁的场合,系统中中断堆栈有可能被耗尽而溢出。为了避免上述情况发生,必须修改系统的中断堆栈大小,即在config.h中加入以下代码: #define INCLUDE_KERNEL #define ISR_STACK_SIZE 0xl000 //表示系统中中断堆栈的大小为4k 由于中断处理程序的特殊性,中断处理程序中不能使用可能导致阻塞的函数,如printf,semTake等,具体不可使用的函数列表可以在<>中查到。有时候为了调试方便,希望在ISR中打印一些信息,系统提供了一个与prinf等价的函数sysLog,该函数可接受 7个参数。它是非阻塞的。比较而言,prinf函数要在打印任务完成后才返回,sysLog只把打印任务放到系统的打印队列中就返回。在ISR中虽然不可以使用semTake,但可以使用semGive(互斥类型的除外)。一般使用semTake和semGive在ISR和普通程序间通信:当一个中断产生,ISR 完成必要的任务后,调用semGive通知另外一个使用semTake等待ISR信号的任务,该任务收到semGive释放的信号后,继续完成ISR中不便处理的任务。

vxWorks中断处理

Vxworks作为一个实时嵌入式操作系统,通常采用中断的方式来满足系统实时性的要求,因此,熟悉其中断的处理过程对于VxWorks操作系统的开发是至关重要的.本文通过编写和调试基于AT91RM9200处理器的VxWorks嵌入式操作系统的BSP,来讨论VxWorks操作系统的中断机制。 1 VxWorks中断处理机制及AIC AT91RM9200使用一个8优先级,可单独屏蔽中断的中断向量控制器AIC。在ARM体系结构中,有7种异常中断,对应有一个异常中断向量表。ARM体系结构要求这个异常中断向量表从0地址处开始,对于外部中断请求IRQ,系统又增加了一块由中断控制器控制的中断向量表。 2 AT91RM9200 BSP的中断驱动的实现 2.1 中断驱动中定义的函数 STATUS at91rm9200LvlVecChk (int*,int*); STATUS at91rm9200LvlVecAck(int,int); STATUS at91rm9200LvlEnable(int); STATUS at91rm9200LvlDisable(int); 2.2 高级中断控制器AIC的初始化 在usrInit()中excVecInit()函数对异常中断向量进行初始化.整个中断库,以及中断控制器的初始化都是在syslib.c中的sysHwInit2()函数中完成的.该函数在sysClkConnect()中被调用,因为系统时钟中断要在内核开放中断后就要使能,因此内核在初始化为一个多任务环境后,就产生一个usrRoot()的任务,在该任务中要建立系统时钟中断,因此调用了sysClkConnect()函数,中断库以及中断控制器的初始化也就完成了。 高级中断控制器必须进行初始化,其初始化是在板级支持包BSP的中断驱动程序中。具体的实现函数是void at91rm9200IntDevInit(void)。该函数在文件syslib.c的sysHwInit2()函数中调用。 at91rm9200IntDevInit(void)函数中主要是配置系统的钩子函数,然后对中断源向量寄存器和中断模式寄存器进行配置,同时要清除并禁止AIC中所有的中断。 2.3 中断驱动中的回调函数 在intEnt中,程序很快就进入了特权模式(SVC32),如果是中断可嵌套模式,要设置该模式下的堆栈,并且将中断深度intCnt值加1.然后跳转到intIntRtnPreempt中,在intIntRtnPreempt中为后来调用中断驱动中的函数开辟了32个字节的堆栈空间,并且将程序指针拉到at91rm9200LvlVecChk函数处执行,at91rm9200LvlVecChk函数是在中断驱动中定义的函数,是用来检测当前挂起的中断中,优先级最高的中断源。检测出最高优先级的中断后,首先要禁止该中断,因此要调用at91rm9200LvlDisable函数,该函数也在中断驱动中定义。在禁止中断的过程中,需要通过intLock和intUnLock函数来保护临界代码不被新的中断打断。

51单片机串行口中断服务程序

51单片机串行口中断服务程序 ---------------------------------------------------------------------------- //串口中断服务程序,仅需做简单调用即可完成串口输入输出的处理 //编程:聂小猛。该资料来自“51单片机世界”https://www.360docs.net/doc/3c3376748.html,/~dz2000,欢迎访问。 //出入均设有缓冲区,大小可任意设置。 //可供使用的函数名: //char getbyte(void);从接收缓冲区取一个byte,如不想等待则在调用前检测inbufsign是否为1。 //getline(char idata *line, unsigned char n); 获取一行数据回车结束,已处理backspce和delete,必须定义最大输入字符数 //putinbuf(uchar c);模拟接收到一个数据 //putbyte(char c);放入一个字节到发送缓冲区 //putbytes(unsigned char *outplace,j);放一串数据到发送缓冲区,自定义长度 //putstring(unsigned char code *puts);发送一个字符串到串口 //puthex(unsigned char c);发送一个字节的hex码,分成两个字节发。 //putchar(uchar c,uchar j);发送一个字节数据的asc码表达方式,需要定义小数点的位置 //putint(uint ui,uchar j);发送一个整型数据的asc码表达方式,需要定义小数点的位置 //CR;发送一个回车换行 //************************************************************************* #include //该头文件包括了51,52,80320的特殊寄存器,用在51,52上也可 #define uchar unsigned char #define uint unsigned int #define OLEN 64 /* size of serial transmission buffer */ idata unsigned char outbuf[OLEN]; /* storage for transmission buffer */ unsigned char idata *outlast=outbuf; //最后由中断传输出去的字节位置 unsigned char idata *putlast=outbuf; //最后放入发送缓冲区的字节位置 #define ILEN 2 /* size of serial receiving buffer */ idata unsigned char inbuf[ILEN]; unsigned char idata *inlast=inbuf; //最后由中断进入接收缓冲区的字节位置 unsigned char idata *getlast=inbuf; //最后取走的字节位置 bit outbufsign; //输出缓冲区非空标志有=1 bit inbufsign; //接收缓冲区非空标志有=1 bit inbufful; //输入缓冲区满标志满=1 #define CR putstring("\r\n") //CR=回车换行 //***************************** //放入一个字节到发送缓冲区 putbyte(char c) {uchar i,j; ES=0; /*暂停串行中断,以免数据比较时出错? */ if (outlast==putlast ) { i=(0-TH1); do{i--;j=36; do {j--;}while(j!=0);

售后服务程序及流程

售后服务程序及流程 一对于不合格产品的处理 (1)客户在使用中由于自身原因造成产品或配件损坏,由客户承担费用(按最近市场价收费),有维修工人负责安装、维修,并在客户同意的情况下处理已经损 坏的产品; (2)客户在使用中发现产品出现问题,经工作技术人员鉴定后,确定不是客户原因导致产品损坏,拍照后报予集团解决. a对于更换或赔偿数额较小者,由本部门直接处理,更换或赔偿后,及时上报财务及主管经理; b对于更换或赔偿数额较大者,由主管与技术人员前往客户家中,经鉴定后, 与客户双方达成协议,总经理审核后,对客户予以赔偿;对客户使用产品在 双方协调下处理后,搜集客户相关资料,填写《产品质量处理核销申报表》。二跟踪 客户使用中出现任何问题,都应及时安排好维修人员为客户解决问题。 1售后服务宗旨 客户第一——“完全满意的客户服务” 2售后工作职能 (1)负责所在区域的日常售后服务工作,认真接听服务热线,回答客户疑难问题; (2)在接待客户来电时,应用礼貌用语,对待客户投诉时,认真听取客户意见,不能与客户在电话内吵架,对客户投诉案例进行分析,并在72小时内提出处理 方案,在《维修受理表》上建立客户售后服务档案;将处理方案通知客户,并 根据客户要求合理安排时间维修; ↓ 是↓↓否 ↓ ↓↓↓↓ ↓ 三回访 1 将安装好的客户售后服务卡进行登记汇总; 2 按周、一个月、三个月、半年和一年及时进行回访; 3电话访问要热情、真切,如果客户有相关产品问题,要及时回答并予以解决。 4流程 ↓↓

↓↓ ↓ 5程序细则 (1)“你好,我是梦天集团黄石公司的售后服务,现在您是否方便,我可以打扰您一下吗?”,如果对方不方便,“很抱歉占用您宝贵的时间,有机会我们会再打 给您的。”如果对方有时间,接着说 (2)“非常感谢您对我们产品的信任,X月X日我们为您安装的木门满意吗?对我们的销售、施工、产品等有什么意见和要求,欢迎您为我提出来,看看我们能 为您 做点什么”。一般会有以下情况; a客户对我们的产品和我们的工作表示满意,并且没有其他要求时,我们接受 得到的赞扬,并说:“谢谢,这是我们应该做的,我们会努力做得更好,如 果您需要我们帮助时,请拨打我们的服务热线,我们会按照您的要求竭诚为 您服务。”最后道别,并表示:“打扰您了。” b我们的工人如果真的做的非常出色,感动了客户,客户会借此机会表示他的 谢意,这时,我们更应该谦虚地说:“这是我们应该做的,我们会努力做到 更优秀。”之后,应该将客户提供的好人好事向公司领导汇报。 c客户会将他的不满说出来,我们耐心听完后,帮他分析原因,将他的疑虑消除, 需要我们进一步完善的工作,要告诉对方:“很抱歉给您带来了不必要的麻烦, 我们将会对您的问题马上备案,等您方便时我们会派专门的技术人员为您解 决问题,好吗?”然后要将客户的情况及时反映给相关部门,并根据情况赠 送公司的小礼品给他,以表诚意。同样,对待恶劣的事件也要向总经理汇报, 达到提高员工素质的目的。 (3)如果客户说现在不方便谈,我们一定要快速表示歉意,并简洁地问明什么时候方便打电话,千万不要浪费对方的时间。 (4)如果我们打通的是客户的手机电话,我们一定要说:“打扰您了,我是梦天集团黄石公司售后服务,打您手机方便吗?如果您愿意,请告诉我有线电话,我 马上重新打给您。”让对方选择通话方式,再接着下面的交谈。 6回访结束后,要认真作好记录,对需要进一步做的工作,按客户投诉处理流程进行。 7对所有回访资料要输入电脑保存,便于查找。每月将回访中得到的信息归类总结,使长处继续发扬光大,不足之处加以弥补,使我们的产品质量和服务质量不断提高。

定时中断T0服务程序参考框图

软件程序: ORG 0000H LJMP MAIN ORG 000BH LJMP PIT0 ORG 001BH LJMP PIT1 ORG 0100H MAIN: MOV SP,#FH ;设堆栈指针 MOV SCON,#00H ;设置串行口为方式0 MOV TMOD,#11H ;T0和T1初始化为方式1 MOV TH0, #3CH ;置时间常数,T0和T1定时100ms MOV TL0, #OB0H MOV TH1, #3CH MOV TL1, #0B0H MOV 50H, #96H ;T0中断次数计数单元 MOV 51H,#14H ;T1中断次数计数单元 MOV R1, #00H MOV R2, #00H MOV R0, #40H ;显示缓冲单元起始地址 DISP0:MOV @R0, #00H ;显示缓冲单元清零 INC R0 CJNE R0, #4CH,DISP0 MOV 44H,#01H ;设置通道号的显示缓冲单元 MOV 48H,#02H MOV R7,#40H ;置当前通道显示缓冲单元首址 MOV 53H,#40H SETB ETO ;开中断 SETB ET1 SETB EA SETB TR0 ;启动定时器 SETB TR1 LP: MOV R7, 53H ;调显示子程序 ACALL DISP AJMP JP 定时器TO中断服务程序 PIT0: MOV TH0, #3CH ;重置时间常数 MOV TL0, #OBOH DJNZ 50H,#96H PUSH ACC PUSH 03H ACALL WDXJ ;调温度巡检子程序 POP 03H POP ACC

DH0: RET1 定时器T1中断服务程序 PIT1: MOV TH1,#3CH ;重置时间常数 MOV TL0, #OBOH DJNZ 51H,DH1 ;计数20次即定时2S MOV 51H,#14H INC R2 CJNE R2,#03H,CNL0 ;根据R2中的内容确定显示缓冲区首址 MOV R2,#00H CNL0: CJNE R2,#00H,CNL1 MOV 53H,#40H SJMP DH1 CNL1: CJNE R2,#01H,CNL2 MOV 53H,#40H SJMP DH1 CNL2: MOV 53H,#48H DH1: RETI 显示子程序 DISP: CLR P3.7 ;输出锁存 MOV R3,#01H ;置显示字位码 MOV DPTR,#TAB DISP1:MOV A,R3 MOV SBUF,A ;字位码送串行口 JNB T1,$ ;等待串行转送结束 CLR T1 ;清串行中断标志 MOV A,R7 MOV R0,A MOV A,@RO ;取代显示的数据 MOVC A,@R0 ;查表求字段码 MOV SBUF, A ;字段码送串行口, JNB T1,$ ;等待串行中断标志 SETB P3.7 ;允许输出显示 ACALL DEL ;调延时子程序 MOV A,R3 JB ACC.3,DISP2 ;4位显示完否 RL A MOV R3,A INC R7 CLR P3.7 ;输出锁存 AJNP DISP1 DISP2:RET TAB : DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH DEL: PUSH 07H ;延时子程序

Vx Works中的中断应用设计要点

收稿日期:2004-08-02 作者简介:耿 锐(1975— ),男,安徽淮南人,硕士研究生,研究方向为嵌入式系统应用。 VxWorks 中的中断应用设计要点 耿 锐,王 闵 (西安电子科技大学计算机学院,陕西西安710071) 摘 要:硬件中断处理是实时系统设计中的关键性问题,设计人员有必要对其作深入研究,以更好地满足开发工作需要。文中以VxWorks 操作系统为软件平台,讨论了在实时系统中进行中断应用设计时要注意的一些问题。由于软硬件的相关性,选用广泛应用的X86架构的嵌入式计算机为硬件平台,对Pentium CPU 和计算机主板对硬件中断的管理机制也做了详细介绍。所得出的研究结论在具体的开发项目中均得以验证,可供相关技术人员参考。关键词:实时操作系统;VxWorks ;中断 中图分类号:TP311 文献标识码:A 文章编号:1005-3751(2005)05-0122-03 Main Points on Interrupt Application Design in VxWorks GEN G Rui ,WAN G Min (School of Computer ,Xidian University ,Xi ’an 710071,China ) Abstract :Hardware interrupt management is a key problem in real time system and it should be deeply researched by developers to satisfy their job.This paper discusses some important points about interrupt application design in VxWorks.Due to connections between hardware and software ,adopting an embedded computer of X86architecture as hardware platform ,the management mechanism for Pentium CPU and computer main board to hardware interrupt is also introduced detailedly.Conclusion of this paper is checked in practice and can be referenced by developers in related fields.K ey w ords :RTOS ;VxWorks ;interrupt 0 前 言 硬件中断处理是实时系统设计中最重要、最关键的问题。文中综合软硬件,从工程应用的角度对此问题加以讨论。文中所述内容针对的软件平台是VxWorks 实时操作系统,硬件平台选用广泛使用的X86架构的嵌入式计算机,全文按照CPU 、主板、操作系统自下而上的顺序展开。 1 Pentium CPU 的中断类型 有两类事件可引起Pentium 挂起当前的指令流,即中断和异常。中断是由外部事件引发的,在程序执行的任何时刻都可能出现;异常也称异常中断,是由内部事件引发的。中断和异常各有两类触发源: (1)中断。 可屏蔽中断:CPU 的IN TR 引脚收到有效信号,如果 Pentium 标志寄存器IF 位为1,则允许中断,否则信号在CPU 内被屏蔽。 非屏蔽中断:CPU 的NMI 引脚收到有效信号而引发的中断,这类中断不能被阻止。 (2)异常。 执行异常:CPU 试图执行一条指令的过程中出现错误、故障等不正常条件而引发的异常中断。 执行软件中断指令:Pentium 指令系统中包括一些如 IN TO ,IN T n 这类软件中断指令,执行时产生异常中断。 详细分类的话,Pentium 可以识别256种中断和异常。每种中断给予一个编号,即0~255,称为中断向量号 (interrupt vector number )。其中NMI 、异常以及系统保留 占用中断向量号0~31,而32~255为用户中断向量号,可供IN TR 和自定义软件中断(如汇编中的IN T 指令)使用。 2 Pentium CPU 的中断响应过程 中断处理子程序的入口地址信息存于内存中的一个表内,实模式为中断向量表IV T ,保护模式为中断描述符表IDT 。中断发生时,CPU 首先通过某种方式获得中断向量号,再以中断向量号检索此表,即可获取中断服务子程序入口地址,详述如下: (1)实模式使用中断向量表。 中断向量表IV T 的基地址由IDTR (中断描述符寄存器)指定,大小为1kB 。中断响应时的查表过程与8086/ 8088一致,在此不再赘述。 第15卷 第5期2005年5月 微 机 发 展Microcomputer Development Vol.15 No.5May 2005

相关文档
最新文档