如何将MQX-Lite移植到Cortex-M0+芯片 Freescale MQX™ Lite实时操作系统是针对资源有限的MCU的极轻MQX内核它最初面向Kinetis L系列开发,支持应用以低于4 KB RAM的空间运行。它是成熟的、经过专业开发的Freescale MQX软件解决方案的一个真正的子集,允许轻松向上进行代码迁移。它可以轻松在Processor Expert 软件中配置,与您选择的工具链一起使用。
[url=https://www.freescale.co
m/zh-Hans/webapp/sps/site/prod_summary.jsp?code=MQXLITE] [/url]
一般情况下,我们可以在Processor Expert(处理器专家)软件中直接生成支持MQX-Lite的工程,并使用由Processor Expert软件提供的I/O功能,生成MCU逻辑设备驱动,和使用使用USB组件等协议栈。如果某款MCU暂时不在Processor Expert支持列表中,或者客户已经有成熟的代码库,只需要MQX-Lite内核,这时我们可以将MQX-Lite代码移植到客户的工程中,无需依赖Processor Expert工具。下面介绍如何移植MQX-Lite到Cortex-M0+内核MCU中。
1.获取MQX-Lite代码。
由于是MQX-Lite不像MQX完整版可以从飞思卡尔官方下载到源码和demo例程,而是已经集成在Processor Expert开发工具中。所以第一步,我们需要通过Processor Expert生成一个基本的MQX-Lite工程模板。 在Processor Expert开发环境中,创建一个居于Cortex-M0+内核MCU的MQX-Lite工程项目。下面以KL25Z128为基线,创建一个MQX-Lite工程。  图一 以KL25 MCU为基线创建工程  图二 在Processor Expert配置MCU各种属性 图三 通过Processor Expert生成MQX-Lite代码 图四 MQX-Lite代码目录情况
2. 移植MQX-Lite到Cortex-M0+内核MCU
通过上述步骤我们可以通过Processor Expert生成MQX-Lite代码,下一步就是如何将生成的代码移植到客户的Cortex-M0+内核MCU中。下面我们以Freescale的Kinetis M系列MCU为例子,介绍如何将MQX-Lite移植到KM34中。
Kinetis M系列MCU的其它主要特性包括:
• 50 MHz 32位ARM Cortex-M0+内核,提供快速GPIO、32x32 MAC和卓越的代码密度和能效。 • 64KB或128 KB闪存,带有16 KB SRAM。 • 灵活的段式LCD控制器,提供低功耗模式运行和段故障检测功能(仅在64 & 100 LQFP封装中提供段式LCD模块)。 • 多个低功耗模式和快速唤醒选件,包括低功耗引导模式。 • 面向24位ADC时钟的专用PLL,支持使用低频率晶体,降低抖动和最大程度提高AFE性能。
 图五 TWR-KM34例子工程
将生成的MQX-Lite代码拷贝到TWR-KM34的例程目录,并添加到IAR的工程中。   图六 添加MQX-Lite源代码到工程中
将MQX-Lite的源代码添加到IAR工程中,并且在IAR中加入编译所需库的头文件路径,右击工程名->options->C/C++ compiler->Preprocessor中填入头文件所在的目录即可。$PROJ_DIR$表示工程所在目录,\..\工程所在目录的上一层目录,设置详见下面的图片。  图七 设置MQX-Lite预编译头文件目录
将MQX-Lite移植到新的Cortex-M0+芯片,主要修改mqxlite/bsp目录下的vector.c, init_bsp.h , init_bsp.c等文件。其中init_bsp.h主要定义内核时钟,SysTick时钟滴答的频率。文件init_bsp.c实现SysTick时钟滴答中断。文件vector.c定义中断向量表,包含了默认的系统中断入口函数。
3. 修改增加用户任务。
修改task_template_list.c文件,增加用户定义的多任务定义。主要修改任务ID,任务入口函数,任务的栈空间大小,任务的属性等参数。 
将MQX-Lite工程编译、下载到TWR-KM34Z50运行。测试结果表明MQX-Lite多任务在KM34 MCU中运行正常。可以参考附件的源代码。
|