在基于OSEck RTOS的TI DSP中,中断能够作为一个进程存在,在OSEck系统中,进程分为两类:优先级进程,中断进程。

当可屏蔽中断(INT4~15)发生后,就会运行相应的中断vector,在vector的代码中会找到注冊在该中断号上的进程,然后由OSEck负责调度,进而切换到可屏蔽中断进程。该中断进程与优先级进程类似,相同有PCB(进程控制块),而在odo_vect2pcb数组中就存储了可屏蔽中断号(INT4~15)与中断进程PCB的映射(这就是vect2pcb的含义)。odo_vect2pcb数组的索引作为中断号,索引相应的数组的值存储PCB指针。

比如,能够将TI DSP corePac的INTC模块中的eventCombiner的输出event0~3的中断服务程序创建为中断进程。如能够将event0绑定在INT5中断上,这样INT5中断发生后就会运行_vector5。然后通过以下的汇编代码odo_vect2pcb+vec_number*4找到event0相应的中断进程的PCB指针,OSEck就会切换到该进程运行。这里PCB结构中有个变量指示了进程的入口点,入口点就是event0的中断服务程序,每次中断发生后。切换到中断进程后,就会从该入口点处開始运行。

odo_vect2pcb[0~15] = {NULL,pcb1,...,pcb15};

INT0相应RESET。应该不须要设置中断进程。

 .sect	".vectors"
;RESET中断的vector。 __vector0:
.nocmp
BNOP CheckFunc, 5
.align 32 ;vector1是用于NMI/Exception处理的。
__vector1:
.nocmp
;把栈指针B15的值写到GPLYB寄存器,注意,这里牺牲了GPLYB寄存器的值,来保存B15的值,B15中存储的是跳转到vector1之前的进程的栈指针,所以要保存起来。
MVC B15, GPLYB
;把事先准备好的exception的栈指针赋值给B15(栈指针,当执行某进程时。B15就指向进程的栈),这样在处理exception时,就会用特定的分配好的栈 exceptionErrorStackPtr。
MVKL exceptionErrorStackPtr, B15
MVKH exceptionErrorStackPtr, B15
LDW *B15[0], B15
;跳转到检查错误的函数运行,BNOP checkErrorFunc 5指令等同于B checkErrorFunc, NOP 5。
BNOP checkErrorFunc, 5 ;默认的vector2~15的实现。用".macro"宏来实现。 vector_macro .macro vec_num
.align 32
__vector:vec_num::
STW B11,*B15-- ;将B11的值保存在栈中(B15)。
||MVKL handlerFunc,B11 ;||表示本条指令与上一条指令是并行运行的。仅仅占一个cycle的时间。
MVKH handlerFunc,B11
;跳转到handlerFunc函数,由于B指令有5个cycle的延迟,且本BNOP指令中已包括了1个NOP,所以用户能够在剩余的4个cycle中加四条指令运行。如以下的四条指令,这些指令运行完后,将真正切换到handlerFunc函数运行。
BNOP B11,1
STW A11,*B15--
STW A10,*B15--
MVKL odo_vect2pcb+vec_number*4,A11 ;这样A11中保存了中断进程的pcb(进程控制块)指针
MVKH odo_vect2pcb+vec_number*4,A11
.endm vector_macro 2
vector_macro 3
vector_macro 4
vector_macro 5
vector_macro 6
vector_macro 7
vector_macro 8
vector_macro 9
vector_macro 10
vector_macro 11
vector_macro 12
vector_macro 13
vector_macro 14
vector_macro 15

OSEck中odo_vect2pcb的作用的更多相关文章

  1. web.xml中load-on-startup的作用

    如下一段配置,熟悉DWR的再熟悉不过了:<servlet>   <servlet-name>dwr-invoker</servlet-name>   <ser ...

  2. C#中构造函数的作用

    C#中构造函数的作用 共同点: 都是实例化对象,初始化数据的 默认构造是说所有的类都从祖先object那继承了空参的构造方法,你不写与写空参构造都存在,而有参数的构造一般是自己写的,写就有不写就没有, ...

  3. MySQL数据库中delimiter的作用概述

    以下的文章主要是向大家描述的是MySQL数据库中delimiter的作用是什么?我们一般都认为这个命令和存储过程关系不大,到底是不是这样的呢?以下的文章将会给你相关的知识,望你会有所收获. 其实就是告 ...

  4. js中getBoundingClientRect的作用及兼容方案

    js中getBoundingClientRect的作用及兼容方案 1.getBoundingClientRect的作用 getBoundingClientRect用于获取某个html元素相对于视窗的位 ...

  5. Linq中关键字的作用及用法

    Linq中关键字的作用及用法 1.All:确定序列中的所有元素是否都满足条件.如果源序列中的每个元素都通过指定谓词中的测试,或者序列为空,则为 true:否则为 false. Demo: 此示例使用 ...

  6. JAVA中protected的作用

    JAVA中protected的作用   1.public:public表明该数据成员.成员函数是对所有用户开放的,所有用户都可以直接进行调用 2.private:private表示私有,私有的意思就是 ...

  7. url中#号的作用

    url中#号的作用就是本页面位置跳转 比如这个url地址:http://www.aaaaa.com/index.html?ad=34&m=c#red red就是index.html页面的依哥位 ...

  8. Java中hashCode的作用

    转  http://blog.csdn.net/fenglibing/article/details/8905007 Java中hashCode的作用 2013-05-09 13:54 64351人阅 ...

  9. struts2 中 Actionsupport 的作用

    struts2 中 Actionsupport 的作用 Action 跟 Actionsupport 的区别     当我们在写action的时候,可以实现Action接口,也可以继承Actionsu ...

随机推荐

  1. 进程与multiprocessing模块

    一 进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在 ...

  2. spring boot-html和templates

    静态页面 spring boot项目只有src目录,没有webapp目录,会将静态访问(html/图片等)映射到其自动配置的静态目录,如下 /static /public /resources / ...

  3. Java-二叉树-插入、删除、遍历

    二叉树的具体特性和细节知识点,自行百度,直接上代码. 节点:节点内容.左子孩子.右子孩子.父亲 class Node { private int data; private Node leftChil ...

  4. 【CF387D】George and Interesting Graph(二分图最大匹配)

    题意:给定一张n点m边没有重边的有向图,定义一个有趣图为:存在一个中心点满足以下性质: 1.除了这个中心点之外其他的点都要满足存在两个出度和两个入度. 2.中心 u 需要对任意顶点 v(包括自己)有一 ...

  5. MySQL的@与@@区别

    MySQL的@与@@区别 @x 是 用户自定义的变量  (User variables are written as @var_name) @@x 是 global或session变量  (@@glo ...

  6. 一简单c++程序之反汇编

    #include<iostream> using namespace std; class point3d; class point2d; class point3d { private: ...

  7. Nginx没有启动文件、nginx服务不支持chkconfig、nginx无法自启

    Nginx没有启动文件.nginx服务不支持chkconfig.nginx无法自启 问题描述: Nginx安装后,当想要设置Ngixn为开机启动时, 就需要把nginx的启动命令路径放到/etc/rc ...

  8. 关于Redux到底是个什么鬼

    原文链接:https://zhuanlan.zhihu.com/p/20641377 我们故事的主人公,小明. 小明大学刚毕业,摆脱了宿舍的集体生活,自己在外面租了个一室一厅的小公寓住. 这是客厅的平 ...

  9. Boost Asio介绍--之一

    原文:http://www.tuicool.com/articles/YbeYR3 Boost Asio介绍--之一 时间 2014-03-26 17:57:39  CSDN博客 原文  http:/ ...

  10. 洛谷1967货车运输 即 NOIP2013 DAY1 T3

    题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多 ...