【原创】飞思卡尔MQX BSP 移植
0赞MQX是一个真正的实时操作系统,您可以到新的概念,如实时任务,多任务处理,驱动器,通信栈等按照下列步骤并完成练习之后,你会得到很好的了解MQX和其功能。
mqx相关资料:
MQX BSP 即板级支持包,是指针对某一特定的板子的系统软件包,包括MQX 操作系统内核,MFS 文件系统(如果需要支持文件系统功能的话),RTCS 协议栈(如果需要)、USB 协议栈(如果需要)以及板子上所有硬件的驱动程序。今天在这里一coldfire处理器为例,介绍一下mqx的移植。
第一步 安装飞思卡尔mqx协议栈,从飞思卡尔网站下载最新的mqx软件,
http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MQX&fpsp=1&tab=Design_Tools_Tab。现在最新的版本应该是mqx rtos 4.0.我电脑上安装的应该是mqx3.7,这里就不装最新的了,以现有版本来说吧。
下载完成后,安装软件,跟windows常见软件流程基本类似,设置安装路径,一路下一步就ok了,没有什么需要特别注意的地方。安装完成后,打开安装目录可以看到:
简单介绍下各个文件夹的内容:
Config:该目录下包含配置文件。
Demo:几个综合性的demo 工程
Doc:MQX 的英文文档,包括用户手册,MFS 参考手册等
Lib:包含每个板子BSP 的最终输出结果:库文件,头文件等
Mfs:MFS 文件系统源码和examples
Mqx:MQX 操作系统代码,BSP 相关代码,驱动代码
Rtcs:TCP/IP 协议栈代码和examples
Shell:shell 代码
Tools:一些辅助的工具
Usb:USB 协议栈代码,包括device 协议栈和host 协议栈两部分,每部分又有几个examples
移植MQX BSP 首先相关的是config 目录和mqx 目录。下面再详细说明下这两个目录的结构。
Common:该子目录包括的是所有板子bsp 共用的配置文件。
maximum_config.h:MQX 全功能配置,基本上把MQX 的所有功能都打开了,很自然生成的image 也最大,最系统硬件资源的需求也最大
small_ram_config.h:针对比较小SRAM 的微控制器的典型配置,大多数情况下采用该配置即可
smallest_config.h:最小配置,只打开MQX 最基本的功能,针对资源极端受限的应用
verif_enabled_config.h:一些辅助的配置。主要是针对MQX 内部错误检查的使能配置。
所有其它子目录:每个子目录都对应一个板子(或者说对应一个bsp)。里面包含针对每个bsp 的个性化配置
对于我们移植mqx 到新的板子,common 目录的内容通常不需要做任何改动,但需要在config 目录下创建一个新的子目录,以你的板子的名称命名,包含针对你的板子的个性化配置。
MQX 目录的结构如下:
Build:该子目录包含不同编译器(codewarrior,IAR 等)的子目录,每个子目录下则是各个板子bsp 和psp 的工程文件。此外,还包括一个bat 子目录,里面是各个板子bsp,psp 的链接后批处理脚本。
Examples:样例程序,演示mqx 主要功能,比如消息邮箱,中断服务等,可以用该目录下的程序测试验证移植的mqx bsp 是否功能正确
Source:包含mqx 内核的所有代码,所有驱动程序代码,以及bsp 相关代码。
第二部分 移植过程
先来简单介绍下移植的基本步骤,给大家一个直观的介绍,也让大家对工作量有一个总体把握:
1.选择一个基线bsp 作为起点
2.复制选择的bsp 和psp 工程文件,配置文件,源码
3.修改相关的配置文件,工程文件和源程序
4.创建默认的I/O 设备初始化文件
5.Build
第一步:选择一个bsp
一般情况下我们不需要从零开始创建一个新的bsp,这样的话工作量就太大了,从产品开发的角度是不提倡的,当然,如果是爱好者想详细研究这个东西可以一试,我们可以选择freescale 提供的某个bsp 作为起点,加速开发。
第二步:复制选择的bsp和psp工程文件、配置文件、源码等等
需要复制的文件有:
在%installdir\mqx\build\cwmcu63 目录下, 复制bsp_m51acdemo.mcp 和psp_m51acdemo.mcp,分别命名为bsp_nscf51acr1.mcp 和psp_nscf51acr1.mcp
在%installdir\mqx\build\bat 目录下,复制bsp_m51acdemo.bat 和psp_m51acdemo.bat,分别命名为bsp_nscf51acr1.bat 和psp_nscf51acr1.bat
在%installdir\mqx\source\bsp 目录下,创建一个新的目录,命名为nscf51acr1,拷贝%installdir\mqx\source\bsp\m51acdemo 目录下所有文件到新目录nscf51acr1。
在%installdir\lib 目录下创建新目录, 命名为nscf51acr1.cw , 并在%installdir\lib\nscf51acr1.cw 目录下创建子目录mqx。
第三步:修改
修改bsp_nscf51acr1.bat 和psp_nscf51acr1.bat 文件,将其中所有的m51acdemo 字符串替换为nscf51acr1
将新创建的$installdir\mqx\source\bsp\nscf51acr1\目录下的m51acdemo.h 文件改名为nscf51acr1.h,打开这个文件,将里面所有的m51acdemo 字符串替换为nscf51acr1
将新创建的$installdir\mqx\source\bsp\nscf51acr1\cw\dbg 目录下的m51acdemo.cfg 和m51acdemo.mem 文件改名为nscf51acr1.cfg 和nscf51acr1.mem
修改nscf51acr1.mem 文件,将里面的:
range 0x00000410 0x0003FFFF 4 ReadWrite // Second Section of the 256KBytes of Flash Memory
reserved 0x00040000 0x007FFFFF
改为:
range 0x00000410 0x0001FFFF 4 ReadWrite // Second Section of the 128KBytes of Flash Memory
reserved 0x00020000 0x007FFFFF
修改$installdir\mqx\source\bsp\nscf51acr1\cw\intflash.lcf 文件,将其中的:rom (RX): ORIGIN = 0x00000440, LENGTH = 0x0003FBBF # Code + Const data # = 0x3FFFF - 0x440 :: 256K Flash
修改为:
rom (RX): ORIGIN = 0x00000440, LENGTH = 0x0001FBBF # Code + Const data # = 0x1FFFF - 0x440 :: 128K Flash
将$installdir\mqx\source\bsp\nscf51acr1\目录下所有文件,包括.c,.h 以及其他类型的文件
中出现的m51acdemo 字符串全部替换为nscf51acr1
用codewarrior for Microcontroller V6.3 打开
%installdir\mqx\build\cwmcu63\psp_nscf51acr1.mcp,然后修改psp工程设置
用codewarrior for Microcontroller V6.3 打开
%installdir\mqx\build\cwmcu63\bsp_nscf51acr1.mcp,然后修改bsp工程设置
这样就完成了飞思卡尔mqx bsp的移植了,psp以及bsp工程设置相关修改将在稍后详解
好了,先讲这么多。