今天下午看了RM48的VIM模块介绍,看了很长时间感觉还是比较混乱。能否点拨下这个VIM的工作原理啊,比如从CPU收到一个IRQ请求到处理完它,所走的一个基本流程。谢谢了!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
今天下午看了RM48的VIM模块介绍,看了很长时间感觉还是比较混乱。能否点拨下这个VIM的工作原理啊,比如从CPU收到一个IRQ请求到处理完它,所走的一个基本流程。谢谢了!
感谢两位技术人员ken和Jason的回答。
我昨天看了你们的TRM里面写了VIC的三种工作方式,从COGEN生成的代码来看,应该是默认使用的是第二种方式:register vector interrupt。
Ken的图大概可以这么理解吗?即右边灰色的模块“通道映射”和“优先级解码器”是从硬件的角度来阐述的:来了中断后,硬件会自动选取优先级最高的中断送往CPU。PC跳到0X18处(假设是IRQ),由此再跳到system model区的地址为0xFFFFFE70h IRQVECREG寄存器,里面存储了VIM RAM中被响应的ISR地址,最后CPU去执行ISR。
一、那么图中的“寄存器”是否就是IRQVECREG寄存器?右边的“外设总线接口”连接实际的中断源,其与左边的INT0--INT94又是如何联系起来的呢?
二、如果禁止VIC,CORTEX-R4又如何去实现中断流程呢?
感谢!
Zhiqiang,
对于第一个问题,个人认为IRQVECREG应该不是在Hardware vector interrupt 模式下的VIC Port,不过我还需要再核实一下。
右边的“外设总线接口”并不是与实际的中断源连接的,实际的中断源是在最左侧输入到VIM中去的,每个中断源默认对应于一个VIM的Channel(在数据手册中有章节介绍每个channel默认对应的中断源);右侧接口是CPU访问VIM RAM的内部总线接口,当CPU初始化RAM时会通过此总线接口来进行相关操作。
第二个问题我没有看太懂,能否解释一下这样操作的目的?
谢谢!
哦,第一个问题基本明白了,这个Vbusp是VIM与CPU的特有总线?(PS:第一个问题中的IRQVECREG我说的是register vertor interrupt,您看错了咯。。。)
第二个问题,我的意思是如果没有实现VIC的集成,就是去掉这个VIM模块 ,(我的中断不通过VIM这个途径)中断又如何实现?
ZhiQiang,
VBUSP是MCU内部的外设总线接口,即CPU去访问外设时,会通过这个内部总线去访问,并不是专用于VIM的总线;
对于第二个问题,我认为芯片设计时就定义了中断均要通过VIM去处理,并没有设计出其它的模式,因此没办法不通过VIM而去处理中断。
谢谢!