CW 环境安装没有什么特别之处,在 Windows 操作系统上,只要按照安装向导单击 鼠标就可以自动完成。
第 3 章 第一个样例程序及 ColdFire 工程组织
需要说明的是,安装完毕以后要上网注册以申请使用许可(license key)。无论是下载 的软件还是申请到的免费光盘,安装后都要通过因特网注册,以申请使用许可(licenseKey)。
这里可通过登录其网站,单击“Request a Key”实现。由于这一注册过程是在网上自动实 现的,故只要网络通畅,这个往返过程在数分种之内即可过完成。申请后会通过 E-MAIL 得 到 一 个 License.dat 文件。将该文件复制到相应目录下即可,例如:“ C:\Program Files\Freescale\CodeWarrior for ColdFire V6.3\ ”。 对 于 免 费 的 特 别 版 本 , 安 装 好 后 用 License.dat 覆盖安装目录下的 License.dat。
CW 环境的运行界面如图 3-4 所示。
由于 CodeWarrior IDE 安装后的默认字体是 Courier New,对中文的支持不完善,因此 建议修改字体。选择 Edit->Perferences„,弹出 IDE Preferences 对话框。在 Font&Tabs 选 项设置字体为 Fixedsys,Script 为 CHINESE_GB2312,由于 Tab 在不同文本编辑器解释不 同,建议在 Tab Inserts Spaces 前打钩,使 Tab 键插入的是多个空格。
光盘中有相关简明使用方法的文档,本章随后的内容也有引导读者如何进行编辑、编 译、程序运行、调试等阐述。
3.3.2 WA-Ⅰ型32位ColdFire写入器
开发人员可以通过 WA-Ⅰ型 32 位 ColdFire 写入器对目标板中的 Flash 进行擦除、写 图3-4 CW环境运行界面
入等操作。将机器码下载到 Flash 后,可以进行程序的运行、调试。图 3-5 给出了写入器 的实物图。使用该写入器时,一端连接 PC 的 USB 口,另一端连接目标板 BDM 接口。
图3-5 ColdFire系列MCU写入器实物图
3.3.3 MCF52233EVB硬件评估板
SDMCF52233EVB 硬 件 评 估 板 如 图 3-6 所 示 。 该 硬 件 评 估 板 使 用 80 引 脚 的 MCF52233CAF60 芯片,带以太网接口、RS232 串口、一个复位按钮、两个按键、引出所 有 I/O 口、并带有与苏州大学 Freescale 嵌入式系统实验室的 MT-扩展板-Ⅰ型的对接口。
外接 5V 直流电源,板内转为 3.3V 给芯片供电。
图3-6 MCF52233EVB硬件评估板 本书附录中提供了有关硬件材料的购买信息。
3.4 CW工程文件组织
嵌入式系统工程往往包含很多文件,如:程序文件、头文件、与编译调试相关的信息 文件、工程说明文件以及工程目标代码文件等。工程文件的合理组织对一个嵌入式系统工 程犹为重要,它不但会提高项目的开发效率,同时也降低项目的维护难度。
嵌入式系统工程的文件组织方法以硬件对象为核心来展开,系统中每个对象应包含相 关的头文件、程序文件及说明文件等。以硬件对象的方式来组织文件,会使得工程结构清
第 3 章 第一个样例程序及 ColdFire 工程组织
晰,调试定位方便,后期维护容易,这也是嵌入式系统软件工程的基本思想。
3.4.1 工程文件的组织
将光盘中的文件夹“„\02-MCF52233Program\01_Light”工程文件夹添加到安装文件 所 在 的 文 件 夹 下 , 比 如 “ C:\Program Files\Freescale\CodeWarrior for ColdFire V6.3\Stationery\ColdFire” 文件夹下。该模板是苏州大学飞思卡尔嵌入式系统实验室专门 为 MCF52233EVB 开发板设计的工程模板。读者在新建工程时可以选择该模板。该模板 方便易懂,与 CodeWarrior 提供的 CF_m52233DEMO 的工程模板相比文件少,去掉了一 些初学者不易理解且不是必须的文件,同时应用底层软件构件的概念改进了程序结构,目 的是一开始就引导读者进行规范的文件组织与编程。
新建工程有两种方法,一种是使用工程模板,另一种是使用已存在的工程来建立另外 一个工程。
第一种方法的操作步骤如下:
选择 File->New,弹出新建对话框,选择“ColdFire Stationery”,在 Project name 中输 入工程名,在 Location 中选择工程所在目录。单击确定即可。
新建工程后,通常要设置某些工程属性,例如新建 Light 工程后,选择菜单 Edit->Demo Settings...,弹出 Demo Settings 对话框,选择 Target Settings,将 Target Name 修改成 Light;
选择 ColdFire Target,将 File Name 修改成 Light.elf,这样开发环境在编译后生成的目标文 件名即为 Light。
第二种方法是使用已存的工程来建立另一个工程。当在已有工程的基础上,做另一个 项目时,比如在 Light 工程的基础上编写 LCD 程序,需要进行如下设置:
(1)更改工程文件夹名为 LCD
(2)更改 Light.mcp 为 LCD.mcp
(3)文件夹 Light_Data 更改为 LCD_Data
(4)将 bin 文件夹的所有内容删掉
(5)打开该工程,选择菜单 Edit->Light Settings...,弹出 Light Settings 对话框,选择 Target Settings,将 Target Name 修改成 LCD;选择 ColdFire Target,将 File Name 修改成 LCD.elf。
下面以 3.5 小节所述的控制小灯闪烁工程为例,介绍基于 CW 环境的嵌入式工程文件 组织方法。图 3-7 给出了该工程相关源文件的树型结构,可分为“汇编程序”、“头文件”、
“C 语言程序”、“链接文件”、“工程说明文件”五个部分。其中“头文件”又可分为“总 体框架头文件”与“软件构件头文件”;相应地,“C 语言程序”分为“总体框架程序”与
“软件构件”两部分。
“汇编程序”中包含的文件与工程初始化相关,包括工程启动文件“setup.s”与中断 向量表文件“vectors.s”,由于源代码完全使用汇编语言编写,故将其独立作为一类。对于 其他的文件,可以很容易找到一个头文件和一个源文件的对应关系,例如,includes.h 对 应 main.c 文件,isr.h 对应 isr.c 文件,而 GPIO.h 对应 GPIO.c 文件,它们都是按照构件化
的原则来进行切割和组织的。
请特别注意 main.c 和 isr.c 这两个文件,从源程序角度来看,一般嵌入式软件的执行 流程如下:系统启动并初始化后,程序根据 main.c 中定义的主循环顺序执行;当遇到中 断请求时,转而执行 isr.c 中定义的相应中断处理程序;中断处理结束,则返回中断处继 续顺序执行。由于 main.c 和 isr.c 文件反映了软件系统的整体执行流程,故而在工程文件 组织时,将它与其余 C 语言程序文件分开管理,同样,与这两个文件对应的 includes.h 和 isr.h 文件也被单独拿出,放在头文件的根目录下。
此外,与总体框架程序相关的头文件和源文件分别放在了 Frame_H 和 Frame_C 子文 件夹中,以归类管理。Frame_H 里包含了 type.h、mcf52233.h、GeneralFun.h 和 sysinit.h 四个头文件。type.h 用于类型别名定义,它将 C 语言中用于变量类型定义的关键字简化定 义成比较简短的形式,这样,开发者在定义变量时,可以不必敲入冗长的变量定义关键字,
同时,这也为不同编译体系间的代码复用和移植提供了方便。mcf52233.h 是 MCF52233 芯片寄存器及相关位定义头文件,它可被视为芯片的接口文件,没有这个文件,就不可能 对该芯片进行任何操作。sysinit.h 与 Frame_C 子文件夹中的 sysinit.c 对应,它定义了系统 初始化时的基本参数,如系统时钟等,而 sysinit.c 文件则包含实际初始化代码。GeneralFun.h 与 GeneralFun.c 对应,它提供常用且基本的软件功能性子函数,如延时子函数等。这些文 件对于系统的正常运行都是不可或缺的。
以上所说,都是系统正常运行所必需的,它们只是实现了“最小系统”。若要系统能 做 实 际 的 事 情 ,还 必 须添 加 相 关 功 能 代码 。 按 照 构 件 化 原 则 ,这 些 代码 被 安 置 于 Component_H 与 Component_C 子文件夹中。每个功能实体,或叫作“构件”,都对应一个.c 文件和一个.h 文件。例如,用于指示灯控制的“Light”构件,就对应了 Light.c 和 Light.h,
它们分别放置于 Component_C 和 Component_H 子文件夹中。构件主要是按照功能进行划 分的,除了这里定义的“Light”构件和“GPIO”构件,以后的章节还会出现“串行通信”、
“键盘”、“LED”、“液晶”等构件,它们都是包含在这两个文件夹里的。
另外,嵌入式系统工程框架中还必须包括后缀名为.lcf 的特殊格式文件,它是一个地 址链接文件,用于告诉编译器代码是如何安放在具体的地址空间的。了解该文件的格式,
有助于全面理解嵌入式系统的运作,本章后续章节会简要介绍它的内容。特别注意,要重 视工程说明文件,必要的工程说明对于软件开发者是非常必要的。
第 3 章 第一个样例程序及 ColdFire 工程组织