首页 > 技术文章 > DSP6455 DSP/BIOS中断配置问题(是否需要ECM-事件组合以及实例)

youngforever 2013-06-20 21:10 原文

2013-06-20 21:08:48

中断的配置有两种常用的方式:

一是通过CSL提供的API进行配置,这种方法相对DSP/BIOS偏底层,也比较麻烦;这种方法要求对中断系统的工作方式很清楚。

二是通过DSP/BIOS的图形界面配置,这种方法对于新手来说更加方便,不用写代码,就能完成中断的配置;相对第一种,该方法对开发者的要求较低。

 

6455的中断是基于事件的,共有128个事件,但CPU可用的中断只有12个,这就有了事件组合(event combination),将128个事件分为4组,减小到四个组合后的事件。

关于如何通过DSP/BIOS配置中断,以及是否使用ECM(event combiner manager),详见TI中的问答贴:

http://e2e.ti.com/support/dsp/tms320c6000_high_performance_dsps/f/112/t/11832.aspx

如帖子中所述,当中断数量小于12时,不必要用ECM,当然,也可以通过event combiner进行分组;

当中断数量大于12时,需要通过event combiner将事件分组,从而处理多余12个事件的中断。

下面以配置GPIO4引脚为外部中断为例,分别用上面两种方式配置中断。

(参考:http://blog.csdn.net/gtatcs/article/details/8903509,该博文给出了使用ECM的配置例子,写的很详细)

不用ECM:

首先新建一个DSP/BIOS配置文件,根据工程需要配置CLK、MEM等,此处只说明中断的配置。

step1:

选中HWI-Hardware Interrupt Service Routine Manager,右键properties,弹出如下窗口:

在此处选择外部中断的除法方式是上升沿还是下降沿。

(疑问:6455有16个GPIO,datasheet上说的是都可配置为中断引脚,为何此处只有4、5、6、7引脚的极性设置?是只能配置4个外部中断吗?)

step2:

选中HWI_INT4,设置属性如下:

其中,interrupt selection number设置为55,是因为GPINT4对应的event number为55(event number可在6455的datasheet上找到);function为中断服务程序的名字。

在dispatcher下,使能 "use dispatcher" 选项。关于dispatcher的作用,详见:

step3:

确认HWI-Hardware Interrupt Service Routine Manager下的ECM没有勾选,如下:

 

至此,中断配置完成。

 

使用ECM的配置步骤如下:

 

step1:

选中HWI-Hardware Interrupt Service Routine Manager,右键properties,弹出如下窗口:

 

 

在此处选择外部中断的除法方式是上升沿还是下降沿。

 

(疑问:6455有16个GPIO,datasheet上说的是都可配置为中断引脚,为何此处只有4、5、6、7引脚的极性设置?是只能配置4个外部中断吗?)

 

step2:

选中HWI_INT4,设置属性如下:

 

 

 

其中,interrupt selection number设置为1,是因为GPINT4对应的event number为55(event number可在6455的datasheet上找到),而event32-63对应的EVT1;这时"function"中会自动生成"_ECM_dispatch"。点“确定”退出属性设置。

 

在dispatcher下,使能 "use dispatcher" 选项。关于dispatcher的作用,详见:http://blog.csdn.net/zzsfqiuyigui/article/details/6940795

 

 

step3:

选中ECM,在下面选项打钩,使能ECM:

 

step4:

在EVENT55中点右键,选择"Properties",打开属性框,在"function"中输入"_HEI_int4_isr"."arg"框中输入14(事件号),同时选中"unmask event source“,点确定。

推荐阅读