garfield

【原创】飞思卡尔MQX BSP 移植

0
阅读(4935)

MQX是一个真正的实时操作系统,您可以到新的概念,如实时任务,多任务处理,驱动器,通信栈等按照下列步骤并完成练习之后,你会得到很好的了解MQX和其功能。

mqx相关资料:

image

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了,没有什么需要特别注意的地方。安装完成后,打开安装目录可以看到:

image

简单介绍下各个文件夹的内容:

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 目录。下面再详细说明下这两个目录的结构。

image

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 目录的结构如下:

image

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工程设置相关修改将在稍后详解

好了,先讲这么多。

Baidu
map