谁是此次中断服务程序(ISR)的调用者?
来源:互联网 发布:编写软件测试报告 编辑:程序博客网 时间:2024/05/18 12:29
这是一个尚未解决的问题,关于多个中断向量指向同一个ISR时,ISR如何获得调用者身份的信息(即本次调用是哪个中断触发的),大概描述一下:
一颗IC,拥有N个相同类型的接口(比如多个I2C、UART、SPI、USB、McBSP、McASP等等),每个接口分别有一套独立的控制/数据寄存器组和一组独立的中断资源,比如SPI-0使用INT8/9(Tx/Rx),SPI-1使用INT10/11(Tx/Rx)。现在要求开发一个设备驱动,该类设备的每个实例将独占一个上述接口。但具体为哪个接口,将在初始化时决定。
通常情况下,我们总是为这一类设备开发一套驱动,而不会给每个实例编写分别写一套几乎一模一样的代码。于是编写ISR时问题出现了。由于中断服务程序并不能接受或返回参数,原型为void Fn(void)。一经调用,尽管可能是被不同的中断(比如SPI-0的Tx或SPI-1的Tx可能会调用同一个void ISR_spi_tx(void)),但这个函数还是无法知晓调用者是谁,因而无法正确地操作相应的寄存器组或外部数据。
既然无法通过入口参数给出实例信息,那是不是能通过全局变量传递呢?原理上似乎可行,比如进入不同的中断时将当前的中断号或相关中断标志压栈(如果有中断嵌套的话),然后调用对应的ISR,从栈顶获取当前调用者的身份。但这个方法我尚未验证过。不知是否会有什么问题。
- 谁是此次中断服务程序(ISR)的调用者?
- ISR:中断服务程序
- 中断服务程序(ISR)
- ISR: 中断服务程序
- 中断服务程序ISR
- 中断处理过程和中断服务程序ISR的限制
- 中断处理过程和中断服务程序ISR的限制
- 中断服务子程序(ISR)
- ISR:中断服务程序(interrupt service routine)
- 中断服务程序(Interrupt Service Routines,ISR)注意事项
- Interrupt Service Routines(中断服务程序):ISR
- ISR 中断服务子程序的几个特点
- [应聘笔记系列]中断处理过程和中断服务程序ISR的限制
- ISR 中断服务例程
- ISR 中断服务例程
- 中断服务子程序 ISR
- 嵌入式系统中断服务子程序(ISR)
- 嵌入式操作系统 中断服务子程序 ISR
- PHP新的连接mysql的方法mysqli
- 一道微软面试的智力测验题——王志峰(摘自《微软360度》) - microsoft360的专栏 - CSDNBlog
- 用opencms java API获取资源信息
- 两个aspx页面间传递引用对象
- ASP.NET页面间传递对象的另类方法
- 谁是此次中断服务程序(ISR)的调用者?
- 我读老子 (一)
- 获得视图,存储过程,表的定义代码!
- Tomcat web-inf目录说明
- 微软的招聘哲学——做微软人的五大核心素质(摘自《微软360度》)
- 变 or 不变?
- 2008.02.12 年过完了
- 哎今天大年初六,天气晴好,温度很低,有风
- C#時間関数のformat