FOS中断管理

一、FOS中断管理

中断管理分软硬件。

硬件分两种类型中断,一是中断向量表存放地址,一种是存放指令。

在处理中断之前要初始化其栈指针


二、软件上设计:中断发生,PC跳转到中断向量表,然后我们要做的事情如下:

  1. 保存被中断的任务的上下文;

  2. 增加中断嵌套次数变量;

  3. 进入用户处理函数;

    1) 清中断;

    2)查找中断号,根据中断号调用相应的用户函数;

  4. 减少中断嵌套次数变量;

  5. 查找是否有就绪更高优先级任务,有则切换到更高优先级,没有则切换回原来被中断的任务。

三、中断使用

  1. 注册中断号,目的是让中断号和用户中断处理函数相对应;

  2. 编写用户中断处理函数

四、中断软件架构:

进入中断处理时候最好是不允许其他中断介入,因为这样会造成两种情况:

允许中断嵌套:栈溢出不可推测;

不允许中断嵌套:中断丢失。

所以关中断时间越短越好。

有时候中断处理并不一定是最紧急的事情,比如IO口中断接受的一段数据放在缓冲区里,我们可以不用第一时间处理缓冲区里的内容。我们需要一种机制,把中断接受的数据处理传给普通线程做处理,而中断只做采集数据,并且通知线程去处理数据。这样中断时间就会短很多。提高系统的实时性。

linux采用中断上下部。上半部分做时间紧急事情,才数据采集,下半部分做数据处理。

FOS 将会采取次策略。

Source code download :     https://github.com/yangshanjin/YSJ_OS 

FOS now is based on OpenRISC.



你可能感兴趣的:(框架,操作系统,移植,芯片,多任务)