MQX中断系统深度解析(二)

2018-04-10 11:43:22 浏览数 (1)

在此提醒大家,如果是基于KSDK开发的软件,跟单独基于MQX的在配置上有些不同,飞思卡尔对kinetis MCU的SDK从1.1.0以后,已经包含MQX RTOS,即我们经常提到的MQX SDK,源码结构上跟单独的MQX有些变动,开发时候,要注意。如果你是新学习基于kinetis MCU的开发,建议安装KSDK,目前最新版本是1.2.0,这一版已经支持kv系列。在最新版的单独的MQX RTOS中还是没有支持kv系列的BSP包,如果是使用kv系列,需要自己移植BSP,可借助飞思卡尔的BSP克隆工具,非常方便,针对kv4x系列有一个单独的KSDK安装文件,KSDK1.1.0_KV4xF_1.0.0也是支持MQX的。

用户ISR安装

用户自己开发的中断程序要能够得到正确调用,必须在系统初始化时候调用中断安装函数,_int_install_isr,将用户ISR安装到中断向量表,中断安装函数的参数有三个,中断向量号,中断服务例程入口地址,中断服务例程的参数。当需要响应一个中断时候,会通过_int_install_isr,转向执行用户的ISR。该函数位于内核源码包内的kernel文件夹下的int.c文件中,这个函数比较重要,可以参考飞思卡尔MQX参考手册仔细分析源码。

内核ISR函数

内核ISR函数采用汇编语言实现,该函数位于dispatch.S文件中,dispatch.S位于MQX安装源码包下的psp文件夹下的cortex_m文件夹下的core文件夹中的M4文件夹里,如下图路径显示.

C:FreescaleFreescale_MQX_4_2mqxsourcepspcortex_mcoreM4

内核ISR的汇编代码,可参考ARM指令集分析源码,函数源码比较长,相信大家也不愿意看冗长的汇编源码,这里就不赘述了,这个函数要大体理解整个流程,内核是如何处理中断的。MQX的中断系统还是比一般的裸机中断系统要复杂一些,需要好好消化。我们这里只是简单引导下大家,这部分的内容还需要自己下功夫去理解。

0 人点赞