-
ARM-中断状态,中断响应流程(四大步三小步)
2020-04-10 14:09:58ARM-异常及中断处理中断中断中断源中断/异常优先级异常和中断的区别ARM-7种异常类型ARM-异常中断的响应流程软中断 汇编测试代码 中断 中断 1) 硬中断 在处理器中,中断是一个过程。即CPU在正常执行程序的过程中,...中断
中断
1) 硬中断
在处理器中,中断是一个过程。即CPU在正常执行程序的过程中,遇到外部或内部的紧急事件需要处理,暂时中断(中止)当前程序的执行,而转去完成事件服务程序,待事件完毕后,再返回到暂停处(断点)继续执行原来的程序。事件服务程序又称中断处理程序或中断服务程序。严格意义上来说,上面的描述是针对硬件中断而言的。
2) 软中断
用软件方法引起的中断,即事先在程序中安排特殊的指令,CPU执行到该类指令的时候,会跳转去执行相应的一段预先安排好的程序,待程序执行完,再返回原来程序处。这种通过软件方法实现的中断叫软中断。3) 软、硬中断和信号的区别
- 硬中断的出现过程是不可预测的,是随机的;而软中断是预先安排好的指令中断方式。
- “硬中断是外部设备对CPU的中断”,“软中断通常是硬中断服务程序对内核的中断”,“信号则是由内核(或其他进程)对某个进程的中断”。
中断源
把引起中断的原因,或者能够发出中断请求信号的来源统称为中断源。
中断/异常优先级
ARM处理器五种模式对应的7种异常源优先级顺序(从高到低):
1 复位异常(reset)
2 数据异常(Data Abord)
3 快速中断异常(FIQ)
4 外部中断异常(IRQ)
5 预取异常(prefetch Abord)
6 软中断异常(SWI)
7 未定义指令异常(Undefined)异常和中断的区别
异常主要是从处理器被动接受异常的角度来考虑;中断带有主动请求处理器处理中断的意味。
共同点:都是打断当前程序执行,进入特定的程序处理事件的一种机制。中断的状态
- 挂起态:中断已发生,但是中断没有被处理执行
- 激活态:中断发生,正在执行对应的中断处理函数,但是还没有执行结束
- 未激活态:中断没有发生。
ARM-7种异常类型
1) 复位异常(reset)
两种情况引起异常:系统上电/系统复位
复位异常中断处理程序完成的功能:- 设置异常向量表
- 初始化栈和寄存器
- 初始化MMU,Cache
- 初始化关键的I/O设备
- 使能中断
- 切换到SVC模式
- 初始化C程序中的变量,跳转到相应程序的执行
2)数据异常(Data Abord)
存储器访问指令load/store访问外部数据时,出现地址不存在或不允许访问等时产生:取数据中止异常
3)快速中断异常(FIQ)
4)外部中断异常(IRQ)
5)预取异常(prefetch Abord)
取一条被标记无效的指令时:取指令中止异常
6)软中断异常(SWI)
软中断发生,系统进入SVC模式,跳转到处理程序
7)未定义指令异常(Undefined)
:未定义指令的异常,指令取出后通过译码器后未定义指令导致译码出错
ARM-异常中断的响应流程(四大步三小步)
注意:
- User和System模式是不可通过异常进入的两种模式,即要进入这两种模式,必须要编程设置CPSR的模式状态。
- ARM处理器中cortex-A不支持中断嵌套,因为ARM处理器的处理中断处理速度较快;
- cortex-M系列支持中断嵌套,eg:stm32。
ARM异常处理:处理器对特定的异常事件进行的处理流程(CPU指导硬件自动完成:四大步三小步)。
一、保存现场(四大步):
1)保存CPSR到SPSR_mode
2)适当设置 CPSR 对应功能位(三小步):- 1、切换处理器进入ARM状态:T[5]
- 2、根据需要,禁止中断位:F[6] / I[7]
- 3、根据异常切换到对应的异常模式:M[4:0]
3)保存返回地址:把当前 PC 保存到 lr_mode
4)设置PC = 存放跳转到对应的异常向量表的固定首地址。
二、恢复现场(必须手动恢复):
1)恢复 SPSR_mode 到 CPSR
2)恢复 lr_mode 到 PC
3)恢复普通寄存器:R0-R7,操作sp将栈中将数据恢复。软中断 汇编测试代码
.text .globl _start _start: b reset b undefined_instruction b software_interrupt b prefetch_abord b data_abord b reserved b irq b fiq reset: @初始化SVC下的栈内存空间 ldr sp, =0x40000100 @切换到User模式下0xD3:SVC;0xD0:User msr CPSR, #0xD0 @初始化User下的栈内存空间 ldr sp, =0x40000200 @执行用户代码 mov r0, #0x1 mov r1, #0x2 @swi软中断:swi <软中断号,取值范围:0-(2^24-1)> swi 2 @执行用户代码:r2 = 1+2 = 3 add r2, r0,r1 undefined_instruction: software_interrupt: @保存现场 stmfd sp!,{r0-r1, lr} @执行用户代码 mov r0, #0x5 mov r1, #0x6 add r3, r0,r1 @恢复现场:{r0-r1,pc}将lr恢复给pc,"^"是表示将SPSR恢复到CPSR ldmfd sp!, {r0-r1,pc}^ prefetch_abord: data_abord: reserved: irq: fiq: loop: b loop .end
-
四、FreeRTOS 中断配置和临界段
2020-02-13 20:45:10中断由硬件产生,当中断产生以后 CPU 就会中断当前的流程转而去处理中断服务,待中断服务函数执行完后再回来执行之前被中断的任务。Cortex-M 内核的 MCU 提供了一个用于中断管理的嵌套向量中断控制器(NVIC)。 ...FreeRTOS 的中断配置是一个很重要的内容,我们需要根据所使用的 MCU 来具体配置。因此要先了解 MCU 架构中有关中断的知识。
Cortex-M 中断
1.中断简介
中断由硬件产生,当中断产生以后 CPU 就会中断当前的流程转而去处理中断服务,待中断服务函数执行完后再回来执行之前被中断的任务。Cortex-M 内核的 MCU 提供了一个用于中断管理的嵌套向量中断控制器(NVIC)。
Cotex-M3 和 M4 的 NVIC 最多支持 240 个 IRQ(中断请求)、1 个不可屏蔽中断(NMI)、1 个Systick(滴答定时器)定时器中断和多个系统异常。
2.中断管理简介
Cortex-M 处理器有多个用于管理中断和异常的可编程寄存器,这些寄存器大多数都在NVIC 和系统控制块(SCB)中,CMSIS 将这些寄存器定义为结构体。以 STM32F407 为例,打开core_cm4.h,有两个结构体,NVIC_Type 和 SCB_Type,NVIC 和 SCB 都位于系统控制空间(SCS)内,SCS 的地址从 0XE000E000 开始,SCB 和 NVIC的地址也在 core_cm4.h 中有定义。这些中断控制寄存器在我们一直FreeRTOS操作系统时是不必关系的,如果想了解的话可以可以参考 Cortex-M 权威指南,我们重点关心的是三个中断屏蔽寄存器:PRIMASK、FAULTMASK 和 BASEPRI,这三个寄存器后面会讲解。
3.优先级分组定义
当多个中断来临的时候处理器应该响应哪一个中断是由中断的优先级来决定的,高优先级的中断(优先级编号小)肯定是首先得到响应,而且高优先级的中断可以抢占低优先级的中断,这个就是中断嵌套。Cortex-M 处理器的有些中断是具有固定的优先级的,比如复位、NMI、HardFault,这些中断的优先级都是负数,优先级也是最高的。
Cortex-M 处理器有三个固定优先级和 256 个可编程的优先级,最多有 128 个抢占等级,但是实际的优先级数量是由芯片厂商来决定的。但是,绝大多数的芯片都会精简设计的,以致实际上支持的优先级数会更少,如 8 级、16 级、32 级等,比如 STM32 就只有 16 级优先级。在设计芯片的时候会裁掉表达优先级的几个低端有效位,以减少优先级数,所以不管用多少位来表达优先级,都是 MSB 对齐的,如下图就是使用三位来表达优先级。
Bit0~Bit4 没有实现,所以读它们总是返回零,写如它们的话则会忽略写入的值。因此,对于 3 个位的情况,可是使用的优先级就是 8 个:0X00(最高优先级)、0X20、0X40、0X60、0X80、0XA0、0XC0 和 0XE0。注意,这个是芯片厂商来决定的!不是我们能决定的,比如 STM32 就选择了 4 位作为优先级!
为了使抢占机能变得更可控,Cortex-M 处理器还把 256 个优先级按位分为高低两段:抢占优先级(分组优先级)和亚优先级(子优先级)。NVIC 中有一个寄存器是“应用程序中断及复位控制寄存器(AIRCR)”,AIRCR 寄存器里面有个位段名为“优先级组” PRIGROUP,它把优先级分为两个位段:MSB 所在的位段(左边的)对应抢占优先级,LSB 所在的位段(右边的)对应亚优先级
STM32 使用了 4 位,因此最多有 5 组优先级分组设置,这 5 个分组在 msic.h 中有定义。注意,STM32 中定义的分组 0 对应的是分组位置7,因为它对应的值是0x700(=7)。因为FreeRTOS 的中断配置没有处理亚优先级这种情况,所以我们只能配置中断优先级分组为 4,直接就 16 个主优先级,使用起来也简单!
#define NVIC_PriorityGroup_0 ((uint32_t)0x700) /*!< 0 bits for pre-emption priority 4 bits for subpriority */ #define NVIC_PriorityGroup_1 ((uint32_t)0x600) /*!< 1 bits for pre-emption priority 3 bits for subpriority */ #define NVIC_PriorityGroup_2 ((uint32_t)0x500) /*!< 2 bits for pre-emption priority 2 bits for subpriority */ #define NVIC_PriorityGroup_3 ((uint32_t)0x400) /*!< 3 bits for pre-emption priority 1 bits for subpriority */ #define NVIC_PriorityGroup_4 ((uint32_t)0x300) /*!< 4 bits for pre-emption priority 0 bits for subpriority */
4.用于中断屏蔽的特殊寄存器--PRIMASK,FAULTMASK,BASEPRI
在许多应用中,需要暂时屏蔽所有的中断一执行一些对时序要求严格的任务,这个时候就可以使用 PRIMASK 寄存器,PRIMASK 用于禁止除 NMI 和 HardFalut 外的所有异常和中断,汇编编程的时候可以使用 CPS(修改处理器状态)指令修改 PRIMASK 寄存器的数值:
CPSIE I; //清除 PRIMASK(使能中断) CPSID I; //设置 PRIMASK(禁止中断)
PRIMASK 寄存器还可以通过 MRS 和 MSR 指令访问:
MOVS R0, #1 MSR PRIMASK, R0 ;//将 1 写入 PRIMASK 禁止所有中断 MOVS R0, #0 MSR PRIMASK, R0 ;//将 0 写入 PRIMASK 以使能中断
FAULTMASK 比 PRIMASK 更狠,它可以连 HardFault 都屏蔽掉,使用方法和 PRIMASK 类似,FAULTMASK 会在退出时自动清零。使用方法如下:
CPSIE F ;清除 FAULTMASK CPSID F ;设置 FAULTMASK MOVS R0, #1 MSR FAULTMASK, R0 ;将 1 写入 FAULTMASK 禁止所有中断 MOVS R0, #0 MSR FAULTMASK, R0 ;将 0 写入 FAULTMASK 使能中断
BASEPRI 寄存器用于设置某个阈值,只屏蔽优先级低于这个阈值的中断。比如,我们要屏蔽优先级不高于0x60的中断,则可以使用如下汇编编程:
MOV R0, #0X60 MSR BASEPRI, R0
如果需要取消 BASEPRI 对中断的屏蔽,可以使用如下代码:
MOV R0, #0 MSR BASEPRI, R0
注意!FreeRTOS 的开关中断就是操作 BASEPRI 寄存器来实现的!它可以关闭低于某个阈值的中断,高于这个阈值的中断就不会被关闭!
FreeRTOS 开关中断
FreeRTOS 开关中断函数为 portENABLE_INTERRUPTS ()和 portDISABLE_INTERRUPTS()。利用他们可以打开或屏蔽FreeRTOSConfig.h中指定优先级的中断。
临界段代码
临界段代码也叫做临界区,是指那些必须完整运行,不能被打断的代码段,比如有的外设的初始化需要严格的时序,初始化过程中不能被打断。FreeRTOS 在进入临界段代码的时候需要关闭中断,当处理完临界段代码以后再打开中断。FreeRTOS 系统本身就有很多的临界段代码,这些代码都加了临界段代码保护,我们在写自己的用户程序的时候有些地方也需要添加临界段代码保护。
FreeRTOS 与 临 界 段 代 码 保 护 有 关 的 函 数 有 4 个 : taskENTER_CRITICAL() 、taskEXIT_CRITICAL() 、 taskENTER_CRITICAL_FROM_ISR() 和 taskEXIT_CRITICAL_FROM_ISR()。他们在 task.h 文件中有相应的宏定义。
1.任务级临界段代码保护
taskENTER_CRITICAL()和 taskEXIT_CRITICAL()是任务级的临界代码保护,一个是进入临界段,一个是退出临界段,这两个函数是成对使用的。任务级临界代码保护使用方法如下:
void taskcritical_test(void) { while(1) { taskENTER_CRITICAL(); total_num+=0.01f; printf("total_num 的值为: %.4f\r\n",total_num); taskEXIT_CRITICAL(); vTaskDelay(1000); } }
注意临界区代码一定要精简!因为进入临界区会关闭中断,这样会导致优先级低于 configMAX_SYSCALL_INTERRUPT_PRIORITY 的中断得不到及时的响应!
2.中断级临界段代码保护
taskENTER_CRITICAL_FROM_ISR()和 taskEXIT_CRITICAL_FROM_ISR()中断级别临界段代码保护,是用在中断服务程序中的,而且这个中断的优先级一定要低于configMAX_SYSCALL_INTERRUPT_PRIORITY,因为高于这个优先级的中断服务函数不能调用 FreeRTOS 的 API 函数。中断级临界代码保护使用方法如下:
//定时器 3 中断服务函数 void TIM3_IRQHandler(void) { if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) //溢出中断 { status_value=taskENTER_CRITICAL_FROM_ISR(); total_num+=1; printf("float_num 的值为: %d\r\n",total_num); taskEXIT_CRITICAL_FROM_ISR(status_value); } TIM_ClearITPendingBit(TIM3,TIM_IT_Update); //清除中断标志位 }
-
EXIT按键中断函数
2021-01-26 16:21:05EXIT中断函数 一、关于中断函数 EXIT基本是第一个接触的中断函数,问题来了 什么是中断:中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动...④配置中断服务函数。 三、代码块 void EXTIX_Init(voEXIT中断函数
一、关于中断函数
EXIT基本是第一个接触的中断函数,问题来了什么是中断:中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
中断和异常向量表可在stm32中文参考手册中9.1.2查询
二、编程流程
要实现STM32外部中断,按照基本流程来讲,可分为四部分:
①初始化GPIO;
②初始化EXTI;
③初始化NVIC;
④配置中断服务函数。三、代码块
void EXTIX_Init(void) { NVIC_InitTypeDef NVIC_InitStrue; EXTI_InitTypeDef EXTI_InitStrue; GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//注意此处的先后顺序,否则会有bug KEY_Init(); //GPIOE.0 中断线以及中断初始化配置 下降沿触发 EXTI_InitStrue.EXTI_Line=EXTI_Line0;//设置中断线0 EXTI_InitStrue.EXTI_LineCmd=ENABLE;//使能中断线0 EXTI_InitStrue.EXTI_Mode=EXTI_Mode_Interrupt;//中断模式 EXTI_InitStrue.EXTI_Trigger=EXTI_Trigger_Rising_Falling;//中断捕获的位置 EXTI_Init(&EXTI_InitStrue);//根据EXTI_InitStrue中指定的参数初始化外设NVIC寄存器 NVIC_InitStrue.NVIC_IRQChannel=EXTI0_IRQn;//使能按键WK_UP所在的外部中断通道 NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;//使能外部中断通道 NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=2;//抢占优先级2 NVIC_InitStrue.NVIC_IRQChannelSubPriority=2;//子优先级3 NVIC_Init(&NVIC_InitStrue);//根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器 //往后可以继续增加EXITX 需要自行配置 与上面两段代码相似 }
四、中断函数体(中断线路0)
//外部中断0服务程序 void EXTI0_IRQHandler(void) { delay_ms(10);//消抖 if(WK_UP==1) //WK_UP按键 { BEEP=!BEEP; } EXTI_ClearITPendingBit(EXTI_Line0); //清除LINE0上的中断标志位 } //往后可以继续增加中断函数 内容需要自行编写如KEY0、KEY1等
-
中断事件大致分为三类_主编解读(三):事件和变更流程—T/CECS7612020数据中心运行维护与管理标准...
2021-01-31 09:03:54支撑数据中心开展正常的运维流程基本上包括:服务台、事件管理、变更管理、问题管理四部分,本讲重点介绍事件、变更两个流程的要点。一、事件管理事件管理是数据中心运维管理的重要流程,事件管理包含了事件的发现、...数据中心的运维需要建立运行、维护和管理的工作制度和流程。支撑数据中心开展正常的运维流程基本上包括:服务台、事件管理、变更管理、问题管理四部分,本讲重点介绍事件、变更两个流程的要点。
一、事件管理
事件管理是数据中心运维管理的重要流程,事件管理包含了事件的发现、事件的处理、事件的恢复和事件的回顾。在事件管理流程中应关注以下的环节:
1、什么是事件
数据中心每天都有许多服务请求,这些请求统称为事件,通常这些事件分为业务、工作需求和运行故障三种形式,本标准侧重于运行中发生的故障事件的处理管理流程,因为这类的事件将导致服务中断,会引发财产的损失、用户的利益、企业的声誉。
2、事件的分级
在数据中心运维中,通常是按照系统来进行事件的分类,同时需要对事件进行分级,分级的目的就是针对不同等级的事件,调用相应的资源加快处理的速度和控制事件事态的升级,减少服务中断的时间和损失。目前不同行业或单位对事件分级是有不同的方式,比如事件对服务的重要性、事件影响面、事件造成的损失、事件的持续时间、与用户签订SLA协议要求等等。如何制定事件的分级,本标准给出了容忍度的分级方法论,事件的分级见下表:
采用容忍度的分级方法,可以很好的覆盖所有的数据中心对事件的分级要求。
3、事件处理优先级
在数据中心运行中,会出现多个事件同时发生,需要优先处理重要的事件和紧急的事件因此需要制定事件处理的优先级,加快服务处理的时效和提升服务质量。事件优先级需要关注两个维度:一是影响度,影响度是指影响用户服务的范围、业务的数量和造成的损失;二是紧迫性,紧迫性是指事件对应的服务级别、服务系统的重要性、事件的持续时间等。
4、事件升级
在处理事件时,会出现随着事件处理时间增加导致事态的扩大,或者在处理事件中引发新的事件,因此需要对事件进行升级。
事件的升级分为职能性升级和结构性升级两种:
职能性升级:调动更多的资源(高级、资深或厂家的技术人员、跨部门跨地区的协作)加快事件的处理。
结构性升级:升级到上级或更高的管理部门,通过管理层的权力调动需要的资源,加快事件的处理速度,并做好与受影响用户的沟通。
二、变更管理流程
在数据中心运行中会有大量的变更,比如设备的维护保养、更换耗材、设备测试、新系统上线、改造或扩容、故障原因查明后的修复等等,很多系统的变更会需要撤离生产环境或停机处理,有些变更会引发系统宕机的风险,因此需要建立变更的管理流程,控制和降低变更带来的运行风险。
1、严格控制变更
要求变更遵守以下原则:
变更要求审批
变更要有计划安排
变更应避开服务的高峰期实施
变更前应做好测试和充分的应急预案
重大的变更需要取得上一级监管的批准或提前报备
变更前应做好通告和用户的解释工作
2、变更类型
按照变更对运行的影响程度,本标准将变更分为紧急变更、例行变更和标准变更三类。
3、变更审批授权要求
所有的变更都需要建立审批授权机制。不同的变更类型的审批授权机制如下:
紧急变更:工作时间采用一事一审批的方式;非工作时段可采用电子(电话、短信、微信等)审批方式,事后补办流程。
例行变更:可采取定期(如年度)集中预批准的方式,对例行变更请求,集中审核、审批,一次审批年度内有效。
标准变更:采用一事一审批方式,也可以定期或不定期召开变更请求审批会,多个变更请求进行审核和排期审批。
THE END
-
was native_stderr.log 是否可以删除_WAS服务器四种应用更新模式
2020-12-03 10:38:38场景设计2、性能测试的重要意义3、性能分析流程及方法4、应用系统性能调优之性能分析WAS服务器四种应用更新模式最近有客户在咨询WAS服务器上应用程序的升级有哪些方式,怎么操作能无中断更新,因此专门对这方面的... -
【Linux操作系统分析】设备驱动处理流程
2013-06-17 16:46:511 驱动程序,操作系统,文件系统和应用程序之间的关系 字符设备和块设备映射到...从驱动程序的角度来从下到上看层次结构,包含了硬件设备,设备驱动程序(中断处理程序,设备服务程序),文件系统和用户进程四个层次: -
PHP基础教程 是一个比较有价值的PHP新手教程!
2010-04-24 18:52:44通过我们已经学过的知识,你可以编写一个最简单的程序输出一个也许是程序世界中最有名的词语: echo "Hello World!"; ?> First PHP page // Single line C++ style comment /* printing the message */ ... -
新手,求帮助。。。。。
2017-09-16 14:14:48有1,2,3,4四个中断源根据中断服务流程图判断这四个中断源的优先级任意写出一种情况各中断源的屏蔽字是 -
单片机与DSP中的基于STC系列单片机的SPWM波形实现
2020-11-08 01:35:27文章在比较了多种生成SPWM波的技术基础上,给出了利用等效面积法来产生SPWM波形的工作原理,详细介绍了由单片机STCl2C5410AD的可编程计数器阵列PCA实现SPWM控制软件的编写过程,并给出了SPWM中断服务程序的流程图。... -
基于STC系列单片机的SPWM波形实现
2021-01-19 19:18:14文章在比较了多种生成SPWM波的技术基础上,给出了利用等效面积法来产生SPWM波形的工作原理,详细介绍了由单片机STCl2C5410AD的可编程计数器阵列PCA实现SPWM控制软件的编写过程,并给出了SPWM中断服务程序的流程图。... -
Leaf:解析美团的分布式id框架Leaf-源码
2021-02-13 15:48:11叶秉承的四个特性: 1.唯一,绝对不会出现重复的ID,并且ID整体趋势递增。 2.高可用,服务完全基于分布式架构,即使MySQL停机机,也能容忍中断的数据库不可用。 3.高并发低延迟,在CentOS 4C8G的虚拟机上,远程调用... -
华为防火墙VRRP双机热备的原理及配置详解
2019-09-18 06:43:05博文大纲: 一、何为双机热备? 二、VRRP的概念 三、VRRP的两种角色 四、VRRP的选举流程 ...所谓的双机热备无非就是以7X24小时不中断的为企业提供服务为目的,各种双机热备的技术很多,那么华为使用了这个... -
mysql双机热备 不忽略异常_华为防火墙VRRP双机热备的原理及配置详解
2021-01-01 03:51:24二、VRRP的概念三、VRRP的两种角色四、VRRP的选举流程五、VRRP的三个状态六、通过VGMP统一管理VRRP的状态1、VGMP的报文封装2、双机热备的备份方式3、关于上游或下游设备的选路问题七、配置实例八、总结一、何为双机... -
工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究
2017-02-28 21:22:19本文研究并设计了基于Android+HTML5的在线认证检测系统,主要工作包括以下四个方面: (1)针对多窗口类浏览器模式问题,指出并分析了该问题存在的原因,利用Activity的运行机制,通过Fragment栈对主要模块的Webview... -
java编程的逻辑,Java好书
2019-02-15 09:02:51*部分(第1~2章)讲解计算机程序的基本执行流程与元素,以及数据背后的二制表示,帮读者掌握编程的基本概念。 第二部分(第3~7章)讲解面向对象的编程原理与逻辑,涉及类、继承与多态、口与抽象类、异常与常用... -
网上会展的未来发展趋势
2012-12-12 16:21:10包括:网络设备的安全性、操作系统的安全性、协议软件的安全性、系统安全监视乏力、对病毒和黑客侵袭的抵抗不足、应用服务的安全性等。 (3)物理自然环境恶化 物理自然环境恶化是指网上会展信息系统物理基础的支持... -
ERP学习必看课件,详细的讲解了ERP的内容
2010-06-24 00:46:48同时要考察软件供应商的综合实力、实施人员素质及其后续服务的能力。 再次,实施ERP项目要依靠整个团队。要想成功实施ERP,必须有一批精通ERP管理思想、掌握软件技术,同时又有中国环境下组织实施ERP项目经验的... -
UNP读书笔记第16章 非阻塞IO
2018-01-22 22:24:28继续跟着steven大佬修改 回射程序接着第六章的程序那个程序的大致流程是 先读输入,读完输入再发给服务器,接着等服务器的输入,并输出到屏幕上, 总共四个步骤但是,假如我们一次性输入的数据非常多,大概有10000... -
TCP/IP
2015-05-07 13:43:37注:熟练掌握TCP/IP 各连接与中断流程,及状态变化;...在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SE... -
TCP/IP 内核参数优化
2014-07-29 10:45:56注:熟练掌握TCP/IP 各连接与中断流程,及状态变化;...建立连接在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEN... -
DELPHI串口编程
2015-12-10 21:39:48和相应的中断服务程序,此外还需要一个中断控制器(I/O接口芯 片)管理I/O设备提出的中断请求,例如设置中断屏蔽、中断请求 优先级等。此外,中断处理方式的缺点是每传送一个字符都要进行 中断,启动中断控制器,... -
windows驱动开发技术详解-part2
2013-07-06 20:49:34这是书的光盘。共分为两个部分,这是第一部分。 本书由浅入深、循序渐进地... 本章总结了在内核模式下的四种等待方法,读者可以利用这些方法灵活地用在自己的驱动程序中。最 后本章还介绍了如何对IRP的超时情况进行... -
《计算机操作系统》期末复习指导
2009-12-30 10:57:55一般有死锁的预防,即破坏产生死锁的四个必要条件中的一个或多个,使系统绝不会进入死锁状态;死锁的避免,即在资源动态分配的过程中使用某种办法防止系统进人死锁状态;和允许系统产生死锁,然后使用检测算法... -
交通灯控制系统C语言版+Proteus原理图设计与仿真
2009-10-30 21:56:13计时程序模块:为定时器的中断服务子程序。 显示程序模块:完成12个发光二极管和4个LED数码管的显示驱动。 键盘扫描程序模块:判断是否有键按下,并求取键号。 键处理程序模块:分别是“设置键”、“增加键”、... -
SOPC系统入门教程
2009-04-02 14:16:194.11 在 Nios 系统中实现中断服务程序(ISR) 4.12 用户自定义指令 4.12.1 用户自定义指令的概念 4.12.2 加速效果 4.12.3 用户自定义指令应用 第五章 系统模拟与调试 5.1 软件配置 5.2 模拟设置... -
SOPC系统设计入门教程
2009-05-31 20:42:394.11 在Nios系统中实现中断服务程序(ISR) 4.12 用户自定义指令 4.12.1 用户自定义指令的概念 4.12.2 加速效果 4.12.3 用户自定义指令应用 第五章系统模拟与调试 5.1 软件配置 5.2 模拟设置 5.2.1 ... -
c语言编写单片机技巧
2009-04-19 12:15:17所以作为一个技术全面并涉足较大规模的软件系统开发的单片机开发人员最好能够掌握基本的C语言编程。 4. 当开发一个较复杂而又开发时间短的项目时,用C还是用汇编开发好? 答:对于复杂而开发时间紧的项目时,...