DSP

SYSBIOS学习笔记---硬件中断(HWI)的创建

2019-07-13 11:46发布

       在进行嵌入式开发的时候,我们会根据不同的需求来决定是否使用操作系统,以及使用什么样的操作系统,在ARM嵌入式开发中大家常用Linux操作系统来进行系统的开发;而在DSP嵌入式开发中,尤其是TI的DSP,在早期的时候由于处理器的性能相对的弱一些,资源也相对较少,这时为了满足实时性的要求,一般是跑裸机程序。随着TI的DSP处理器的性能越来越强大,资源也越来越多,为了把开发人员从繁重的底层驱动开发解放出来,TI随即推出了SYSBIOS实时操作系统,该操作系统目前已经支持TI的全系列DSP。        今天笔者就来和大家一起来分享一下关于SYSBIOS中硬件中断(HWI)的创建,硬件中断的创建有两种方式,一种是静态的创建,另一种是动态的创建。所谓静态的创建就是使用CCS下cfg图形配置界面进行配置,或者使用cfg Script脚本语言来进行配置,前者配置比较耗电脑系统资源,会出现卡顿的现象;后者占用的系统资源非常的少,不会出现卡顿的现象。当然一般情况我们使用前者就可以了。下面是一个典型的HWI图形配置界面。
其各项参数解释如下: Handle:当前硬件中断的句柄,此项参数在这里没有具体的作用,但如果是软件中断的话,该参数会被用于发布一个具体的软件中断。 ISR function:中断服务函数,此项参数填写你要执行的中断函数的函数名。 Interrupt number:中断号,指定该硬件中断由哪个CPU可屏蔽硬件中断响应,该中断号的取值需要更具具体的器件来确定。我在这里用的是c6657,它的值是4到15。 Argument passed to ISR function:传递到中断服务函数的参数,如果没有就填写为0,在这里没有参数,所以填写为0。 Event Id:事件ID,即系统事件的的编号,这个得根据具体的要求查阅相关手册,我在这里响应的是外部按键的中断,查阅手册得知事件的ID是91,因此填写的是91。 Masking options:屏蔽选项,有MaskingOption_NONE、MaskingOption_ALL、MaskingOption_SELF、MaskingOption_BITMASK、MaskingOption_LOWER。这里选择的是MaskingOption_SELF,也就是在响应中断是时候自身的中断事件又来了这时不会去响应。
所谓的动态配置是指在程序中调用相应的API函数来配置,这样就可以在程序的运行中有选择的进行配置,这样可以减少系统的资源消耗,下面是一个典型的配置程序代码: // 动态创建硬件中断 Hwi_Handle hwi0; Hwi_Params hwiParams; Error_Block eb; // 初始化错误块 Error_init(&eb); // 使用默认值初始化参数 Hwi_Params_init(&hwiParams); // 中断事件 hwiParams.eventId = 91; // 传递到中断服务函数的参数 hwiParams.arg = 0; // 不允许该中断自身嵌套 hwiParams.maskSetting = Hwi_MaskingOption_SELF; // 使能中断 hwiParams.enableInt = TRUE; // 可屏蔽中断 4 hwi0 = Hwi_create(4, USER0KEYIsr, &hwiParams, &eb); /**/ if(hwi0 == NULL) { System_abort("Hwi1 create failed"); } 该程序实现的功能和上述使用静态的方式是一样的。