首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

S3C4480X平台上μC/OS-Ⅱ的中断系统设计03

S3C4480X平台上μC/OS-Ⅱ的中断系统设计03

3.4 IRQ中断设计   
        IRQ中断处理过程中涉及中断环境保护、处理器运行模式切换和中断环境恢复等过程。中断处理过程如下:   
        中断入口条件:IRQ中断屏蔽,LR是被中断模式的PC值,SPSR是被中断模式的当前处理器状态值,SP是IRQ模式的当前堆栈指针值。   
        ①在IRQ模式下保存环境。

        ②判断是否为第一层中断,如果不是程序跳转到④。

        ③设置中断嵌套层数变量OSIntNesting值为1,切换到SVC模式以便将IRQ模式堆栈中保存的中断环境保存到任务堆栈中,当前任务SP指针保存到任务控制块中;然后切换到UND模式准备执行中断服务程序ISR,程序跳转到⑤。

       ④中断嵌套层数变量OSIntNesting加1,切换到UND模式,将保存在IRQ模式下的任务环境拷贝到ISR的堆栈中,即UND模式堆栈中。

      ⑤调用IRQ中断处理函数,执行中断服务程序。

      ⑥中断结束处理。屏蔽中断,递减中断嵌套计数,判断是否为最后一层。如果不是,继续执行中断服务;否则,执行任务调度,使优先级最高的任务运行。

      ⑦恢复上一层中断服务程序ISR的环境,执行上一层的中断服务程序。

    具体的中断服务程序执行流程如图5所示。

        3.5 FIQ中断设计   
        μC/OS-II移植到S3C4480X之后,μC/OS-II没有对FIQ中断进行管理,这样可以为系统保留一个快速响应的中断源。如果在系统的设计过程中多个中断源都配置为FIQ中断,就要在中断入口处进行中断的分发,然后进入相应的中断服务程序中。这样会增加中断的响应时间,因此在系统设计中应该为FIQ中断设置单独的中断源。由于μC/OS-II没有对FIQ进行管理,所以FIQ中断程序需由用户单独设计。FIQ中断服务程序的执行流程如图6所示,发生FIQ中断后系统进入FIQ模式进行简单的环境保护,然后执行中断服务程序,最后恢复中断环境返回。所有这些工作都是在FIQ模式下完成的。

        4 系统测试
   
        系统测试环境为北京恒丰锐科公司开发的hf44b0A三星arm7开发板和μC/OS-II v2.61版本。系统测试包括3个部分:定时器中断测试、IRQ中断测试和FIQ中断测试。首先对每一部分单独进行测试,然后进行系统的总体测试。   
        (1)定时器中断测试   
        μC/OS-II要求提供一个时钟节拍(周期性定时中断),来实现时间的延迟和超时功能。时钟节拍每秒发生10~100次。本设计选用S3C44BOX的Timer0定时器产生系统的时钟节拍,时钟频率为50 Hz。建立Task_main、Task_test和Task_led三个任务在每个任务中调用μC/OS-II系统延时函数OSTimeDly()实现不同时间长度的延时,通过串口输出信号可以观察到任务能够按照预定的设置进行延时和调度。   
         (2)IRQ中断测试   
        在定时器中断测试过程中,Timer0中断设置为IRQ中断。在此基础上再添加一个IRQ中断,将S3C44B0X的外部中断EINT4/5/6/7设置为按键中断添加到系统中,当按键按下时点亮对应的LED灯,同时通过串口输出按键信息。程序运行时,Timer0定时器按照固定的时间间隔发生中断,在程序运行的过程中随机按下任意按键,按键中断能够及时得到响应和准确返回。   
         (3)FIQ中断测试   
        由于FIQ中断不受操作系统管理,中断响应速度快,因此将S3C44B0X的Timer2作为FIQ中断。另外Tim-er2的中断频率较快(测试中设置为Timer0的10倍),通过串口输出中断信息,FIQ中断能够正常响应和返回。
    在系统中同时设置上面的3种中断,系统能够稳定地运行。
        5 结 论   
        在嵌入式领域有各种类型的微处理器和操作系统,将不同的微处理器和操作系统进行组合构成嵌入式系统后,就要根据两者的特点进行中断系统设计。针对S3C4480X和μC/OS-II进行中断系统的设计,使μC/OS-II移植到S3C4480X系统后可以对中断进行有效的管理,提高系统的执行效率,其设计思想也可以应用到其他嵌入式中断系统的设计中。但是,由于μC/OS-II本身的结构问题,所以在实际的应用中还需要进行具体的分析。
返回列表