飞思卡尔单片机MCSDGBuCOSII实时操作系统移植.doc
文本预览下载声明
第一步:创建飞思卡尔单片机工程
打开Freescale CodeWarrior后出现选项如下:
点击“Create New Project”后进入如下界面:
在“Select the derivative you would like to use”下面的框中选中“MCS912DG128B”,在右侧的“Choose your default connextion”下面的框中选中“TBDML”(使用BDM下载仿真调试程序的情况下),“下一步”出现如下界面:
在“C”前面选中,在“Project name”下面写上你想要保存功能的名字(必须是英文的),下一步后出现如下界面:
这个界面是要你选择额外的文件添加到工程中的,一般都不用了,要添加文件也可以在以后的工程中添加的了。直接下一步出现如下界面:
这个界面是要你确定创建工程的时候进行怎么样的初始化操作(把工程的程序某些硬件初始化一下),这里也不用管了,添加操作系统需要修改的东西不少,这些加多了也没有什么用处,所以选择“None”就可以了。“下一步”之后出现以下界面:
最上面的两个选项“minimal startup code”(最小的开始代码)和“ANSI startup code”(ANSI标准的开始代码),选择“minimal startup code”;中间的“Which memery model shall be used”(哪种存储模式将被选用),三个选项“Small”(最小)、“Banked”(块)、“Large”(大),选择“Small”可以了;最下面的选项“Select the floating point format supperted”(选择提供浮点数类型)的三个选项“None”(程序中不使用浮点数运算)、“float is IEEE32,double is IEEE32”(程序中定义的float类型变量位IEEE的32位标准、定义的double类型变量位IEEE的32位标准)、“float is IEEE32,double is IEEE64” (程序中定义的float类型变量位IEEE的32位标准、定义的double类型变量位IEEE的64位标准),这个选项就看你的程序是用在什么领域了,要是用到数学运算要求精度高的一般都选择“float is IEEE32,double is IEEE64”了,但是选择这个的时候要注意在程序中进行运算的时候遇到有float和double交叉的时候一定要小心处理,多方试验确保程序不在浮点数不一致上乱跑。“下一步”后到如下界面:
这个直接选“No”再按完成就可以了,废话不多说。来到创建工程完成了的界面:
现在就要开始拿起砍刀准备对刚刚创建的工程进行大砍特砍了,不过在砍之前还是要准备点东西的,那就是必要的操作系统的“.C”和“.H”文件,清单如下:
INCLUDES.H、MYmain.H、OS_CFG.H、OS_CORE.C、OS_CPU.H、OS_CPU_C.C、OS_FLAG.C、OS_MBOX.C、OS_MEM.C、OS_MUTEX.C、OS_Q.C、OS_SEM.C、OS_TASK.C、OS_TIME.C、TaskStart.c、uCOS_II.C、uCOS_II.H,其中的MYmain.H文件是本人MC9S12DG128B单片机寄存器映射表文件,TaskStart.c是操作系统的开始任务文件(操作系统开始的时候必须要有至少一个的任务运行),其它都是与操作系统内核文件的一部分了。
,以下这些文件为移植操作系统时候的校准文件,可以与自己创建的基于操作系统的工程对比这几个文件中的不同完成修改,其中的TBDML_linker.prm内容是一定要修改才能完成移植的,。
现在开始砍刚才创建的工程文件了。首先,从工程中移除以下文件:mc9s12dg128.h、mc9s12dg128.c、derivative.h和ansisf.lib文件。在main.c中将#include derivative.h /* derivative-specific definitions */语句删除,后添加语句#pragma LINK_INFO DERIVATIVE mc9s12dg128,得到的最后结果如下所示:
将文件INCLUDES.H、MYmain.H、OS_CFG.H、OS_CORE.C、OS_CPU.H、OS_CPU_C.C、OS_FLAG.C、OS_MBOX.C、OS_MEM.C、OS_MUTEX.C、OS_Q.C、OS_SEM.C、OS_TASK.C、OS_TIME.C、TaskStart.c、uCOS_II.C、uCOS_II.H复制到工程所在的文件夹下的子文件夹Sources中,在添加以上文件以前如下所示:
将第9点中黄色
显示全部