热度 8
2015-3-18 11:00
831 次阅读|
0 个评论
64+ 的中断系统和以往的不同,中断是基于事件的。整个硬件 CPU 接收 15 个中断,但中断源可以支持最多 128 个。 64+ 将中断源视为事件 "Event" , 128 个事件可以分别通过配置连接到 15 个 CPU 中断。而 128 个事件每连续 32 个可以合并到四个固定的事件中,即 Event0 (对应事件号 0-31 )、 Event1 (对应事件号 32-63 )、 Event2 (对应事件号 64-95 )、 Event3 (对应事件号 96-127 )(实际最大有效中断源为 124 个)。这样可以通过数量有限的 CPU 中断来管理大量的中断源,使用灵活。 DSP/BIOS 默认将 Event0-3 分别对应到 HWI_INT7 - 10 四个中断号。 TI 驱动通过 注册 Event 到这四个事件,进而对应到相应中断。在中断 HWI_INT7-10 服务函数中再去判断具体是哪个事件触发的中断。 另外还有几个中断是系统硬件复位中断、 NMI 中断、预保留中断及仿真通讯中断。 HWI_INT4-6 、 HWI_INT13 、 HWI_INT15 这 5 个中断是未使用中断。用户增加中断服务的话,可以将事件号对应到这 5 个中断来实现。 以 T1 高 32 位定时中断为例,介绍一下 DM6437 应用中如何在 DSP/BIOS 操作系统中实现硬件中断。首先用户需要将 T1 配置为双 32 位定时器, T1 高 32 位定时器中断服务函数为 T1HIsr() 。将事件对应到中断 HWI_INT5 。 1 在 DSP/BIOS 图形配置界面下打开 "Scheduling"-"HWI-Hardware Interrupu Service" 。 2 下拉表中有 15 个中断。观察各中断使用情况。右键点击 "HWI_INT5", 弹出下拉菜单中选 "Properties" 进入中断属性编辑栏。在 "General" 栏中, "interrpu selection number" 项填入事件号 "7" ( 6437 数据手册中有中断源对应的事件号)。 "function" 项填入中断服务函数名 "_T1HIsr" (需在 C 语言编写的 函数 前加下划线)。然后点 " 应用 " , " 确定 " 即可退出。 注:一些人说还要在 "Dispatcher" 中勾选 "Use Dispatcher" 前的复选框。那是复合事件 Event0-3 才需要的,所以 HWI_INT7 - 10 四个中断里的 "Use Dispatcher" 需要勾上。如果用户定义的新中断不是使用复合事件而是使用单一事件触发的话不需要勾选。但勾选的话不会影响使用。因为新中断未使用 Event0-3 。 3 在应用程序中使能中断。如 "C64_enableIER( 1 5 )" 使能中断 HWI_INT5 。 4 编写中断 服务 函数 "void T1HIsr()" 。 注。 仿真器 通讯中断可能对新中断有影响,有可能导致中断表现不正常。可以在 "release" 下编译,以减少 仿真 引起的大量中断。