中断在tms320c54x系列dsp中的应用

中断在tms320c54x系列dsp中的应用

ID:24678169

大小:50.50 KB

页数:4页

时间:2018-11-15

中断在tms320c54x系列dsp中的应用_第1页
中断在tms320c54x系列dsp中的应用_第2页
中断在tms320c54x系列dsp中的应用_第3页
中断在tms320c54x系列dsp中的应用_第4页
资源描述:

《中断在tms320c54x系列dsp中的应用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、中断在TMS320C54x系列DSP中的应用

2、第1内容加载中...2扩展地址模式下的中断控制  早期的DSP共有192K的空间(程序、数据和I/O空间各为64K),随着DSP处理能力越来越强,192K的空间已经不能满足需要。后来的C54x均提供了扩展地址模式,使程序空间扩展到8M。扩展模式下的中断控制有自己特殊的地方,有必要进行说明。  扩展模式下程序空间的寻址是通过寄存器PC和XPC一同进行的。PC构成低16位地址位,XPC构成高7位地址位。所以保存和恢复XPC是用户必须注意的。如果用户使用的是FarCall指令,则XPC会自动保存和恢复。但在进行中断处理的时候,只有16位的PC寄

3、存器能够自动得到保存(这是由于考虑了非扩展模式下中断的效率问题),所以XPC必须由用户自己来保存,否则在中断返回的时候往往会跳到不同的页面(由返回前后XPC值的不同引起)造成不可预测的后果。程序如表1所示。  由于必须在长跳转之前保存XPC的值,没法使用延迟指令(如FBD),所以中断时延会增加两个周期。  再来考虑另外一种情况:设程序运行在XPC=2的页面上,如果这个时候有中断发生并得到了CPU的响应,DSP会加载PC:PC=(IPTR)<<7+(Vector[n])<<2,XPC的值不发生变化,于是中断向量的地址为:0x20000+0xPC。这就明显地说明:

4、中断向量表必须和应用程序在同一64K的程序空间页面内。如果应用程序不是只分布在一个程序空间页面内,那应该如何处理呢?可分三种类型共四种技巧来应对这样的情况:(1.1)描述的是OVLY为任意的情况;(2.1)~(2.2)描述的是OVLY=1的情况;(3.1)描述的是OVLY=0的情况。  (1.1)有的应用中,一些程序一旦运行是不允许中断的。把不允许中断的程序部分放到扩展空间内,而把中断向量表和ISR以及允许中断的程序部分都放在XPC=0的页面。当调用扩展空间的程序时关闭中断使能,而当扩展空间程序返回到XPC=0的页面时再开中断。这样做的好处是不用关注XPC的值对中断向量寻址的影响。中

5、断的时候也不需要保存XPC的值。调用过程如图1所示,Y表示需要关注XPC的值,N表示不需要关注XPC的值,数字表示调用顺序。500)this.style.ouseg(this)">  (2.1)DSP中影响存储器映射的因素有三个:OVLY、DROM和MP/MC。OVLY是Overlay的简写。当OVLY=1时,数据空间里的一部分RAM变为重叠区域(OverlayMemory)。这部分重叠区域同时映射在每一页程序空间的上部。具体示例如图2所示(MP/MC=0,C5416)。500)this.style.ouseg(this)">  可见OVLY=1的时候,数据空间的DARAM0~3被映

6、射到程序空间的每一页上。基于这样的特点,可以把中断向量表定位到数据空间的重叠区域DARAM0~3中,置OVLY为1。当有中断发生时,不管程序运行于DSP的哪个程序页面空间,只用PC寻址都能够正确地取到中断向量表,而不会受XPC的影响。中断程序ISR可以放到任何一个程序页面中,但这时跳转到ISR的指令只能用长跳转指令(FB等),跳转之前注意将XPC压入堆栈,程序同表1。示意图如图3所示。500)this.style.ouseg(this)">  (2.2)如果片内RAM比较大,分给数据空间的RAM也比较多(如C5416有64K的RAM可以作为数据空间),数据空间可能会有余量。这时可以把

7、中断向量表和ISR都全部放进数据空间的OverlayMemory区域,并把OVLY置1。这样不仅在任何程序页面空间都能够正确地取到中断向量表,同时用短跳转指令(BD等)就可以实现跳转到ISR,不再需要对XPC进行保存和还原。程序请参看表2。500)this.style.ouseg(this)">  (3.1)在扩展模式下,虽然程序空间扩为8M,但如果OVLY=1,则程序空间中存在大量的重叠区域,如C5416在OVLY=1的情况下真正可用的程序空间最大为4.03M。有的场合需要的程序空间大于4.03M,就必须使用OVLY=0的情况。这个时候程序空间不存在重叠区域,但可以模拟出来。方法是

8、:把中断向量表拷贝到会发生中断的每一页程序空间,如图4所示。这样,中断的时候就能正确找到中断向量表而实现中断跳转。  比较上面的四种方法,方法(2.1)更为适应普遍的情况。它不限制ISR的地址范围,而中断向量表只占0x80的空间,把它放到数据空间的重叠区域是很容易做到的。笔者正在做的项目正是采用了这种方法。500)this.style.ouseg(this)">3DSP/BIOS下中断的管理  DSP/BIOS是TI近来推出的准实时操作系统,它同样支持扩展

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。