jicheng0622

【嵌入式】【原创】MQX研究心得(一)之工程框架分析

0
阅读(7795)

    趁这两天闲功夫拾掇了下前段时间研究MQX时积累的一点东西。说来惭愧,因为中间插了一杠子答辩的事,结果撂下了这么长时间,没能及时做好记录,现在再重新一点点的拾起来颇有些重复性工作浪费时间的感觉,看来真得有必要向@yulzhu学学思维导图和印象笔记记录的方法(小建议,要是AET博客也有微博里类似的@功能就好了,这样可以极大的带动博主之间的互动和交流气氛,虽然个人没做过web开发,但是感觉这个功能实现起来不难啊,哈哈)。

    言归正传,由于打算把MQX的研究心得做个系列的记录,至于写到啥时候结束,就看啥时候自己觉着可以熟练掌握了吧,这样可以让新手们看到菜鸟的成长历程,让他们可以接受MQX(说到菜鸟,想起昨天看到的新闻,马云同志刚消停了几天就换了个马甲又出来高调的成立了“菜鸟”物流系统,志在构建阿里商业帝国生态链,太NB了,我现在已经是马云的粉丝了,哈哈)。前段时间写的初体验算是开山之作,权且作为敲门砖,从这篇开始对MQX做个全面的分析,这里做个声明,本人学习资料全部来源于飞思卡尔官方手册及广大网络资源,总体来说算是对这些资源的一个整合,当然也加入了自己的一点见解。所谓万事开头难,咱既然已经开头了,就不要停下了,呵呵,so…走着~

    1、首先需要去飞思卡尔官网把MQX的安装文件下载下来,http://www.freescale.com/zh-Hans/webapp/sps/site/prod_summary.jsp?code=MQX,进入该链接之后可以看到Freescale MQX的相关简介,目前MQX已经更新到4.0(这就是有技术支持的好处,更新快且官方,呵呵,2009年出的3.0),值得一提的是飞思卡尔针对Kinetis L系列推出了精简版MQX Lite RTOS(其实就是MQX的浓缩版,考虑到L系列资源有限),点击下图红圈链接即可下载MQX4.0 RTOS的相关文件;

image

    2、下图所示为Freescale MQX的软件解决方案,包括开发环境(CW,IAR和Keil等,看来还是他们三个较主流,呵呵,MQX自带的Demo和库等也都是这三个的,其中CW自带的PE可以向导化生成MQX工程)、调试工具(OSBDM,Jlink…)和平台相关软件分层(包括HAL硬件抽象层、Enablement中间件层和Application应用层);

image

    3、看完上图的分析之后估计Freescale MQX4.0也下载好了,呵呵。略过中间安装过程不谈,安装好之后会在安装目录下生成如下图所示的子目录,这就是MQX的工程框架了,下面就来个剥茧抽丝,一点点的分析下这个结构吧:

image

  • (1)build目录:包含了飞思卡尔不同平台不同编译器的相关库的Makefile文件(注意build目录在4.0的时候变了,不跟之前的一样),具体内容如下列表示意图所示:

    build
    +---common
    |   +---make        ... shared Makefiles with global settings, variables and paths
    +---<board1>        ... board-specific folder
    |   +---make        ... folder contains mass-build Makefile for all libraries
    |       +---tools   ... tool-specific global settings, variables and paths
    |       +---bsp     ... BSP Library Makefile
    |       +---psp     ... PSP Library Makefile
    |       +---mfs     ... MFS Library Makefile
    |       +---rtcs    ... RTCS Library Makefile
    |       +---shell   ... Shell Library Makefile
    |       +---usbd    ... USB Device Library Makefile
    |       +---usbh    ... USB Host Library Makefile
    +---<board2> 
        +---make
            ...

  • (2)Config目录:该目录下包含配置文件即库编译工程。该目录下有一个为common的子目录,包括所有飞思卡尔硬件平台的共用配置,而其他子目录则对应每个平台的配置文件user_config.h和库工程(包括BSP、PSP及一些中间件,如RTCS、USB协议栈等等,库工程编译好的文件会生成到lib目录下);

  • (3)demo目录:几个综合性例程,包括web服务器、telnet等;

  • (4)doc目录:MQX的英文文档,包括MQX用户手册、MFS参考手册、RTCS参考手册、USB参考手册和开发环境的使用说明;

  • (5)lib目录:包含对应于config目录下的飞思卡尔相关硬件平台最终输出结果,包含BSP、PSP、RTCS、MFS、USB等相关库文件(.a文件),可以将生成的库文件包含在新建的工程中;

  • (6)MFS目录:MQX文件系统MFS的源码和实例,包含build、example和source子目录;

  • (7)MQX目录:包含MQX操作系统代码、BSP相关代码和驱动代码,同样包含build、example和source三个子目录,其中source即是MQX的源代码了(.c和.h文件);
  • (8)rtcs目录:TCP/IP相关协议栈的代码和实例;

  • (9)shell目录:shell代码;

  • (10)tools目录:一些辅助工具(里面有CW、IAR和keil调试MQX的插件);

  • (11)usb目录:USB协议栈代码,包括设备协议栈和主机协议栈两部分,每部分又有几个实例。

    就先说这些了,本文本来早就写了一部分,结果因为杂七杂八的事到现在才搞定,哎,虽然真的有事,不过自己拖拉的毛病真得改改了。好了,静待下回分解,未完待续~