1.CodeWarrior中建立新项目
运行CodeWarrior(CW)集成开发平台,如图1-1所示在File菜单下点击New,弹出建立新项目的模板对话框,见图1-2。
一般的简便做法是在图1-2对话框左面的选择列表中选择“HC(S)08 New Project Wizard”,然后在右面的项目名“Project Name”输入条中,输入你要建立的新项目名字,再在“Location”一栏中用编程语言下载
确定项目存放的文件夹路经,完成后按“OK”进入下一步。
你也可以在图1-2对话框左侧列表中选择“Empty Project”,这样生成的项目不包含任何文件,你必须在CodeWarrior中自己添加所有相关的文件内容。我想除非有特殊理由,实际项目开发过程中很少采用这种麻烦的方式来建立自己的项目。
接下去是选择项目开发所用的编程语言,见图1-3。最常用的当然是C语言编程。有时因具体项目要求,除了C编程外还需要编写独立的汇编语言模块,那就再加选汇编工具(Assembly)。C++编程在免费版和标准版CW下都不支持,只有在专业版下才可以使用。编程语言选择完毕后按“Next”。
图1-1
图1-2
图1-3
这时将出现如图1-4的对话框,让你选择项目开发对应的MCU 型号。在CW5.x 版本下支持几乎所有的HC08和大部分HCS08单片机型号。在最新的CW6.x 中,增加了飞思卡尔最低端的8位机(RS08系列)和低端32位处理器(Coldfire V1系列)的支持,但HC08系列的有些型号没有被包含在内。由于
HC08为比较老的产品系列,已经不推荐在新项目设计中选用,因此影响不会
太大。对于新用户来说,请尽量直接安装CW6.x 或以后推出的更新版本。
以典型的9S08系列为例,当你选择了一个MCU 型号后,在图1-4右侧会显示出所有针对该型号芯片可用的项目调试场景。其中:
∙ “Full Chip Simulator ”是芯片全功能模拟仿真,即无需任何目标系统的硬件资源,直接在你的PC 机上模拟运行单片机的程序,在模拟运行过程中可以观察调试程序的各项控制和运行流程,分析代码运行的时间,观察各种变量,等等。CW 提供了功能强大的模拟激励功能,可以在模拟运行时模拟一些外部事件的输入,配合程序调试;
∙ “P&E Multilink/Cyclone Pro ”是基于P&E 公司的硬件调试工具实现实时在线硬件调试。实际就是我们经常说的BDM 调试。BDM 调试是基于芯片本身内含的在线调试功能,可实现程序下载,单步/全速运行,可以设若干个断点,可以观察和修改任意寄存器或RAM 内存空间。BDM 几乎是开发飞思卡尔8位(9S08和RS08系列)、16位(9S12系列)和32位(Coldfire V1系列)单片机的标准调试模式,运用最为广泛;
∙ “SofTec HCS08”是另外一家SofTec 公司提供的硬件调试工具,国内使用较少;
∙ “HCS08 Serial Monitor ”是基于芯片串口的监控调试开发模式。由于开发效率较低,现在几乎无人使用。
注意不同系列,不同型号的芯片,或不同版本的CW ,其所对应或支持的开发场景可能不同,在图1-4的项目建立模板中都可以显现出来。用户点击选择某一项场景后,该场景将在项目建立完成后作为首选配置。你可以在稍后调试过程中随意切换开发场景,不必太在意在这里的选择。
到此你如果按“Finish ”,整个项目建立过程将完成,剩下的一些项目设定将自动用缺省配置。如果你要自己选择调整,则按“Next ”进入下一步,往项目中添加现成的文件,见图1-5。
图1-4
如果你以前编写了很多代码文件现在想重复利用,那么可以通过图1-5对话框左面的文件树选择对应的文件,按中间的“Add ”逐个添加到右侧的“Project Files ”列表中。若加错了就用“Remove ”把列表中的文件移除。注意此列表下方的两个选项:“Copy files to project ”选择是否将所选的文件拷贝到现在的
项目文件夹中。如果你准备在新的项目中修改这些文件,就选择拷贝,以免把
原始的文件改变后而影响先前的一些项
目;“Create main.c/main.asm file ”选择是否在本项目中生成全新的main.c 或main.asm 文件,一般的项目开发都需要生成新的main 文件。按用户自己的要求和目的自由选取。建议大家保留默认的选择状态。如果没有什么现成的文件需要加入,就直接按“Next ”进入下一步,选择处理器专家(Processor Expert 或简称PE )。
PE 是CW 集成开发平台内带的可实现芯片内部各种资源模块配置并自动生成相关代码的一个软件工具。不过只有专业版的CW 才支持该功能。通过PE ,用户可以快速实现芯片初始化代码的自动生成工作,而且PE 还提供了大量的软件库可供用户开发时嵌入或调用。因为8位单片机结构和功能相对简单,实现的控制项目复杂度也不是很高,故一般情况下8位机开发我们都不需要PE 的介入,自己直接编
写程序代码即可。关于PE 的详细介绍将耗费大量的文字,这里按下不提。所以在图1-6的对话框中选择“None ”,并直接按“Next ”进入下一步。
这是项目建立模板的最后一步。在这一步你可以决定有关C/C++的一些编译和代码生成模式,见图1-7。
启动代码选择。所有C 编译器会自动生成一些启动代码。单片机复位后的指令运行将首先执行这些启动代码,然后再进入到你自己的程序模块main 函数。这些启动代码主要完成堆栈指针初始化、全局和静态变量自
动清零
图1-5
图1-6
图1-7
或赋初值、调用main 函数等。ANSI 标准初始化“ANSI startup code ”即完成上述工作,是项目开发的标准选择;最小初始化“Minimal startup code ”除了初始化堆栈指针外就直接调用main 函数,代码最少,进入main 函数最快,但变量的清零和赋初值必须由用户自己编写代码实现。在这里请大家特别注意,即最小初始化将不会对全局或静态变量自动清零,这一点在单片机编程中有时非常重要。在实际产品中当单片机出现异常复位程序重新开始运行时,我们往往希望原先的控制过程得以延续,因此一
些关键变量的内容要在复位后保留而不能不分青红皂白地一概清零。选择最小初始化代码可以实现这一特殊要求,但还有更合理更高级的方法,将在后面介绍prm 文件时详细说明。
∙ 编译内存模式选择。“Tiny ”模式是指所有程序不超过64KB ,RAM 变量不超过内存地址最前面的256字节(有时也被称作第0页);“Small ”模式程序空间一样不超过64KB ,但RAM 不限于第0页,可以覆盖整个64K 地址空间。如果你选择的芯片有超过第0页空间的RAM 并想在设计中充分利用,就应该选择该缺省的“Small ”模式。
∙ 浮点运算库选择。当你的程序设计决定用浮点运算时就应该选择加入浮点运算库。浮点运算库有两种:一是标准浮点float 和双精度浮点double 都用32位精度表示,换句话说float 和double 都看成是float 。这样做的目的是减少代码量,提高运算速度;另一种是double 用64位精度表示,毋庸置疑其运算精度将增加,但代码量也将增加,运算时间也会更长。用户可以按实际计算需求酌情选取。如果设计中无需浮点运算,就选择“None ”。
全部选择完成并确认后,按“Finish ”,恭喜你:你的项目已经成功建立,可以开始编写你自己的代码,调试你的目标系统了。完成后的项目范例如图1-8,其中: ∙ Sources 栏目下包含所有你的原程序文件,
可以是C ,也可以是asm ,或C++。你可以在此栏下点击鼠标右键在弹出菜单中选择“Add Files ”添加其他源程序文件;
∙ Includes 栏目下包含本项目所有被引用的头文件。你可以自己编写项目相关的头文件并添加到本栏目下;
∙ Libs 栏目所包含的是本项目开发用到的代码库,可以是目标代码型式或C 源程序型式; ∙ Project Setting 下放的全是项目的配置
文件。Startup Code 下是刚才建项目时
自动生成的启动文件,你可以打开观察具体的程序代码,也可以在必要时自己添加或修改这些启动代码;Link Files 下的三个文件分别是:用于编程器下载的代码文件格式配置(bbl 文件)、机器代码连接定位用的内存说明和配置
文件
图1-8
(prm文件)、生成的目标代码在内存中的映射文件(map文件)。其中prm 文件最为关键,将在稍后重点专门介绍。
2.CodeWarrior中项目的基本管理和设定
现在项目已经成功建立,应该可以开始编写自己的代码了。但在写代码之前,先了解一下CW中最基本的项目管理和设定的方法还是很有必要。
在图1-8中项目窗口的右上角有一些小图标,这些图标代表了项目开发管理的最基本功能:
该图标可以即时改变目标单片机型号和开发调试场景。按下这一图标,将弹出图1-4所示的对话框,可以按照前面针对新项目建立模板的介绍,改变目标单片机的型号,或设定不同的当前目标开发调试场景。对于调试场景的改变,也可以直接点击当前场景右边的下拉菜单按纽,直接用鼠标点击选择所需的新场景,如图2-1;
该图标完成项目配置选项设定。点击该图标会弹出一个对话框,里面所含的
内容非常
繁杂,这里只解释几
个日常使用时最常用的选项配置:
1.最终目标代码类型设定(Target Setting)。在这里你可以选择最终编译连
接生成的代码直接用于单片机程序运行(Link for HC08),或将各个源代码文件编译连接生成一个库文件(Libmaker for HC08)。这些选择可以通过图2-2所示的下拉菜单选择;
图2-1
图2-2图2-3