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“,点确定。