当前位置:文档之家› CodeWarrior 使用教程

CodeWarrior 使用教程

CodeWarrior 使用教程
CodeWarrior 使用教程

CodeWarrior 使用教程

第一课认识 CodeWarrior Translated from https://www.doczj.com/doc/6b15326639.html, CodeWarrior 能做些什么?

当你知道自己能写更好的程序时,你一定不会再使用别人开发的应用程序。但是常常会发生这种情况,就是当你写了无数行代码后,却找不到使得整个程序出错的那一行代码,导致根本没法编译和链接整个程序。这可能更令人灰心丧气。

本文将告诉你如何使用CodeWarrior 这一工具解决上述问题。

从现在开始,我们将集中精力学习如何在CodeWarrior 中使用C/C++ 进行编程。为了学习本课程,你必须已经能够比较熟练地使用上述两种语言之一。CodeWarrior 也可以支持Java 开发,但那是另一门课程的内容。本课程仅限于在Windows 平台上使用CodeWarrior 进行的开发。一旦你精通了CodeWarrior 编程后,你可以试试在其它平台上使用CodeWarrior。本文中讨论过的大部分内容都可以应用到开发Mac 应用程序中。

CodeWarrior 能够自动地检查代码中的明显错误,它通过一个集成的调试器和编辑器来扫描你的代码,以找到并减少明显的错误,然后编译并链接程序以便计算机能够理解并执行你的程序。你所使用过的每个应用程序都经过了使用象CodeWorrior 这样的开发工具进行编码、编译、编辑、链接和调试的过程。现在你在我们的指导下,自己也可以去做这些工作了。

你可以使用CodeWarrior 来编写你能够想象得到的任何一种类型的程序。如果你是一个初学者,你可以选择编写一个应用程序(比如一个可执行程序),比如象微软公司的文本编辑器WordPad 这样的应用程序。

CodeWarrior 入门

CodeWarrior 是一个复杂的应用程序,你必须花点时间来了解它的各种各样的组件和功能。第一课将讲述CodeWarrior IDE 的安装。我们将学习菜单、窗口和其它的一些方面。建议你最好一边学习本课程,一边学习使用CodeWarrior 的集成开发环境。我们从运行CodeWarrior 开始,如果你按照默认方式安装的CodeWarrior 软件,那么在Windows 的桌面上将会有一个该软件的快捷方式图标。双击该图标启动CodeWarrior 的集成开发环境。如果在Windows 桌面上没有这个快捷图标(这种情况经常发生),你可以在C:/Program

Files/Metrowerks/CodeWarrior/Bin 中找到IDE.exe 文件,然后运行它。

工具条

启动CodeWarrior 后,你将会看到,在屏幕上方的菜单下面有一个工具条。这个工具条(见图1-1)包含了一些常用菜单项的快捷方式。在后面的章节中,你将学到如何设置这个工具条,甚至是整个IDE 环境。现在,你应记住,这个工具条用于快捷使用IDE 中的功能。

图1-1: CodeWarrior IDE 的工具条

文件菜单

CodeWarrior IDE 的菜单是按照标准方式设置的。其中的文件菜单用于处理和文件相关的一些操作,比如创建、打开、保存和打印等等。

编辑菜单

CodeWarrior 的编辑菜单和其它的Windows 应用程序也很相像。其中包括了剪切、复制和粘贴等操作,以及其它一些使得程序员能够更方便地管理源码版面布局的选项。在编辑菜单中还有一个Preferences 项,我们在这一课的后面将提到它。

查看菜单

查看菜单(图1-2)用于安排工具条和其它窗口在CodeWarrior 环境中如何显示的选项。所谓的“其它窗口”包括许多特殊的窗口,比如观察点(Watchpoints)窗口,表达式(Expressions)窗口,过程(Processes)窗口和全局变量(Global Variables)窗口等。

图1-2: 查看菜单中的工具条子菜单

查找菜单

查找菜单用于在单个文件或硬盘的目录中查找指定的代码。你可以使用它来方便地替换文本块或在你的代码中搜索指定的项目。即使是在小工程中使用这个工具也非常方便。

工程菜单

工程菜单中的工具用于管理CodeWarrior 工程。一个工程包括组成你正在编写的程序的所有的文件,包括头文件、源代码和库文件。工程窗口显示了所有这些文件的名称。我们将在第二课中深入讨论这部分内容。

调试菜单

这是在编制程序中最常用到的工具。我们将在第五课中详细介绍它的使用方法。

窗口菜单

用于在CodeWarrior 环境管理窗口显示方式的菜单。

帮助菜单

通过帮助菜单可以到网上寻求关于CodeWarrior 任何问题的在线解答。够酷的吧?

了解CodeWarrior 集成开发环境的设置

CodeWarrior IDE 提供了许多设置以便让你定制你的工作环境。当你选择了编辑菜单中的Preferences 项时,你将会看到一个设置对话框(如图1-3)。在该对话框中,有控制CodeWarrior 编辑器、调试器和其它许多功能的界面和行为的选项。在这一节中,我们将学习这些设置的使用。

图1-3: 设置对话框

你可以在自己的CodeWarrior 中试试上述这些设置项。你可以先点击问号标志,然后点击你感兴趣的项目,就可以得到一个有关该项目的用途的简短介绍,也可以从帮助菜单中得到更详细的信息。

通用设置

编译设置(Build Settings):选择是否在执行编译之前保存已打开的源文件,以及有多少内存被用于编译工作;

?IDE 之外(IDE Extras):几个独立的设置。比如指定CodeWarrior 是否使用一个第三方的文本编辑器——因为集成的编辑器并不是很完美,这可以通过指定一个你惯用的编辑器来替代它;

?插件设置(Plug-In Settings): 供插件开发商调试他们的插件;

?隐藏文件夹(Shielded Folders):在这里指定的文件夹在工程设计期间,或执行查找和比较操作期间,将要被忽略掉。如果在你的工程级有一个巨大的“数据”文件目录,而你又不想让这些文件降低CodeWarrior 的操作速度时,这个设置就很管用了;

?资料树(Source Trees):用于指定CodeWarrior 在编译程序时用不着的目录。

编辑器设置

?编辑器设置(Editor Settings):几个用于定制编辑器显示、管理文本和窗口的设置项;

?字体和制表符(Fonts and Tabs):设置编辑器中的文本大小、字体、制表符和其它显示设置;

?文本颜色(Text Colors):用于指定特定语言元素(比如程序的注释)在编辑窗口中的显示的颜色。

调试器设置

?显示设置(Display Settings):几个用于定制调试器显示的设置项;

?视窗化(Windowing):设定调试器如何管理它的窗口(比如隐藏所有打开的编辑器窗口);

?全局设置(Global Settings):几个用于定制调试器在全局层次如何工作的设置。比如当一个包含了程序调试信息的文件被打开时,是否启动这个程序;

?远程连接(Remote Connections):允许通过TCP/IP 进行远程调试。这样,你就可以在地球的另一边调试你的软件了;

?Java 设置/Java 调试(Java Settings/Java Debugging):允许你设置特定的Java 编程语言选项。本课程不涉及这部分内容。

RAD 工具

?Layout 编辑器:几个用于在CodeWarrior 中定制快速应用程序开发工具的使用的设置。

正如你所见到的,CodeWarrior 有许多设置项和选项。设置完后点击“Save”按钮保存你所作的修改,点击“Close”按钮将忽略你所作的所有修改。在进入下一节课之前,多练习几次。最后请确认“默认的文本文件格式(Default Text File Format)”(在编辑器设置面板中)保持为DOS 设置。

第二课显示和定制工程和目标文件(1)

本课将讲述CodeWarrior 操作文件的方式以及介绍它的工程(Project)窗口。

什么是工程文件

为了使用CodeWarrior 来创建一个应用程序,你必须创建许多文件来构成一个工程(Project)。该工程的设置和所有这些文件的指针都被存放在一个工程文件中。这些设置包括编译和链接设置、源文件、库文件以及它们之间用于产生最终程序的相互关系。你可以将这个工程文件看作该工程的大脑:它保存了所有文件相互依存的关系并知道如何将它们组合成为一个可用的应用程序。工程窗口依次显示了这些关于你的程序和该程序所包含的文件的信息,并允许你只需轻松点击就可以修改这个工程。图2-1显示了工程窗口的外观。

图2-1: 显示工程信息的工程窗口(图示为空的情况)

大多数组成你的程序的文件都是原始的文本文件。这些文件包含了你在CodeWarrior的编辑器中键入的源代码。在某些情况下,你还将使用一些预编译的源码和头文件。在进行数学运算和I/O 操作时,你还要使用到一些库文件,比如Metrowerks 标准库(Metrowerks Standard Library,MSL)

通常,你都是使用C 或C++ 来编写源代码,但通过给CodewWarrior 的集成开发环境加装相应的插件(plug-in),你也可以在CodeWarrior 中使用其它语言来进行编程。别忘了,CodeWarrior 可是一个可扩展的集成开发环境。通过给它安装一些插件,你就可以扩展它的功能。比如说,加入有人开发了一种新的叫做Z++ 的编程语言,你就可以为CodeWarrior 创建一个相应的插件使之能够支持Z++ 语言,而且你还可以拿这个插件卖好多钱,让所有使用CodeWarrior 编程的人都使上Z++ 语言。那该多好!:)

现在你知道了CodeWarrior 是如何使用文件的了。下面我们来详细地学习有关工程窗口的知识。

工程窗口

当你启动CodeWarrior 并打开或创建一个工程时,工程窗口就会显示出来。该窗口用于管理整个工程的所有文件以及这个工程将要产生的目标(targets)文件。一个工程包含了足够的信息来编译一个或多个目标文件。所谓的目标(target)文件就是当你编译程序时,由CodeWariior 创建出来的(通常是)一个应用程序或库文件。一些程序可以编译产生多个目标文件。比如,你可以编写一个程序来创建一个DLL 和一个调用该DLL 的主应用程序。在CodeWarrior 的工程中,你可以定义一个目标来产生DLL,定义另一个目标来产生应用程序。通过这种方式,你的工程只需编译一次就可产生所有需要的目标文件或片断。图2-2 显示了“Hello World”程序的工程窗口。

图2-2: Hello World 程序的工程窗口(其中显示了所有包含于该程序中或用于编译该程序的文件)

你可以看到,在这个工程窗口中确实包含了一些项目。在窗口的顶端有三个标签(tab)页:文件标签(如图2-2显示)、链接顺序标签页和目标文件标签页(后两个标签页将在后续课程中讲述)。在这几个标签页的上方,有一个用于选择要编译的目标文件的下拉菜单。在本例中,我们选择的

是Hello World 工程的调试版本。在下拉菜单的右边有几个图标,它们的存在允许你不必使用菜单命令就可以方便地编译、链接和运行这个工程。

注意:在某些版本的CodeWarrior 中,链接标签被称为段(segments)标签。有

些人可能在某些X86 的处理器上编程时使用的是分段(segmented)代码。但使

用Windows 版的CodeWarrior 工具时就不是这样,这是产生的X86 代码使

用的是"扁平的"(flat),或者叫做非分段的(unsegmented) 内存空间。

顾名思义,文件标签页列出了在工程中所有可能用到的文件。你可以通过创建一些组(用文件夹图标表示)来分门别类地管理这些文件,并可以帮助你方便地了解哪些文件将被使用。在本例中,我们将 C 程序(以.c为后缀名的文件)全都放到一个叫做Source 的组中,同时将库文件放到另一个组中,以便整洁明了地管理这些文件。

在Sources 组中有一个main.c 文件。因为我们还没有编译这个工程,所以在每个文件对应的Code 和Data 栏中显示数字的都是零。一旦我们编译了这个工程,这些数字就将显示出来,表示源码转换为机器代码后实际的代码量和数据量。可是,库文件ANSICX86.LIB 和MWCRTL.LIB 后面显示的是n/a 。这表示索虽然这些文件被显示在这里,但是它们并不是Hello World 目标文件的一部分。这两个文件是用于不可调试(non-debugging)开发的,而本例不是这种情况。如果我们从菜单中修改本例的目标文件为Release(发布) 版本时,这两个文件就用得上了。这时这些文件后面的Code 和Data 栏目就会显示相应的数值。

注意: 在Data 和Code 栏右端的Target 栏目中的小子弹头也是用来表示

该文件是否被当前编译生成的目标文件使用到。

再往右边去,是Debug 栏(用一个绿色的小虫子表示),它是用于告诉你对应的文件在编译时是否要产生调试信息。我们将在第五课中详细论述这部分内容。最后,我们来看看在每一行最右端的弹出菜单,它是用于打开文件、更新源码、打开包含的头文件等等操作的快捷方式,具体是什么才作,要看它所代表的项目的类型而定。

现在让我们来编译这个Hello World 工程并看看编译后的工程窗口的情况。我们从Project 菜单中选择Make 命令来编译该工程。这将更新所有需要编译的文件并产生相应的输出文件——在本例中是Hello World 这个应用程序。

图2-3: 编译工程后的工程窗口的显示情况

从图2-3中我们可以看到,工程窗口发生了一些变化。Code 和Data 栏都显示了当前工程中对应项的相应的数字。如果你打算看看编译前后存放这些文件的目录的话,你会发现编译后在该目录下产生了一些新的文件,如图2-4所示。

图2-4: 编译后将在工程目录中产生一些新的文件

在本例中,编译工程后在工程目录中产生了一个新的文件。这就是X86 目标文件输出——生成一个叫做Hello World x86 的应用程序。其它一些一直存在于这个目录中的文件是:.mcp 文件—工程文件本省,以及.c 源文件—包含了应用程序源码的文件。Hello World Data 目录中还包含了由CodwWarrior 生成的各种各样的支持文件。现在你还不必去关心这些文件。如果你

正在编译目标文件的调试版本,你会看到更多的文件被产生出来,这些文件中可能包含着符号(symbolic)调试信息。集成开发环境的调试器使用这些符号信息来记录在高层次源码中的操作轨迹。我们将在第五课中详细讲述这方面内容。

现在你已经了解了这些文件是如何结合在一起被编译生成一个目标文件的。让我们来运行这个目标文件并看看它的运行结果是什么样。你双击Hello World x86 应用程序,就会有如图2-5所示的结果显示出来。

图2-5: Hello World 应用程序的运行结果

Putting It into Play

Someday, you too may create something as lyrical and profound as Hello World. Possibly, with hard work and determination, you can do this by the end of the day. The source code to make this work is as follows:

#include

void main(void) { int c; printf("Hello World on Windows!/n"); c =

getchar();

}

That's it! Who knew it could be so easy? Go on, you know you want to try it, but with some sort of profound statement instead of "Hello World on Windows!" Soon you'll be writing your own applications that not only can display text but can also perform other tasks for you. Before you know it, you'll be customizing AIBO dogs! That's Lesson 4. Well, okay, not really. Lesson 4 is Linking.

What's That Other Function Doing There?

Those already seasoned in the C language might be wondering what the character

input function, getchar(), is doing here. Typically, when an application completes its job, it terminates, and the OS cleans up after the program. This means the Hello World window disappears moments after the application finishes drawing the phrase "Hello World on Windows!" So that we can admire our handiwork, we put the brakes on the program by having it wait for a final keystroke before it terminates.

This is not a bug, but normal behavior. Honest. CodeWarrior does provide an alternate library that provides the C console I/O functions used here. This alternate library will not only halt the application after it finishes writing to a window but will also let you save the text output to a file. Link Order

When you build a program using multiple source files, the link order is very important. After compiling your source code, you must link the items in the proper order. You will use the Link

Order tab to determine this order. In the case of the Hello World x86 target we've been working with (Figure 2-6), note that the main.c source file is first on the list, with the libraries used by the program following. To reach the Link Order tab, open the project and click the tab. To change the order by which files are linked, you simply drag items up and down the list within this window. We will discuss Linking in more detail in Lesson 4.

Figure 2-6: Back in the Project window, clicking the Link Order tab displays a list of component files included in the current project. Targets

Figure 2-7: The Hello World project's Target tab.

After you've chosen the files and defined their link order, you must configure the target. The target is essentially the output file -- in our case, the Hello World application. There are also a lot of settings that must be set behind the scenes to make it possible for you to hit the target. If you double-click the Hello World target in the Targets Tab (Figure 2-7), you should see the dialog box shown in Figure 2-8.

Figure 2-8: Set targeting preferences in the Settings window.

Configuring Target Settings

The preferences you learned about in Lesson 1 are global settings used throughout the CodeWarrior IDE. Now, let's take a look at options for configuring target options. I will briefly examine the most important of these options. Follow along in your copy of CodeWarrior by double-clicking an item under the Target tab to bring up the Settings panel.

If you want a little extra guidance, move your cursor over an item in the panel, right-click it, and read the pop-up help text that appears.

Note: Some of the items listed below are specific to the target we are

currently viewing, in this case the Hello World target. If you're using AMD's K6

or Athlon processors, some of these panels may contain items that use

features specific to that chip. Consult the documentation for the

compiler/linker that you are using to ensure that you are making the best use

of your development environment.

Target Preferences

Target preferences include the following items, each with its own panel:

?Target Settings: Choose the target's name (the name that appears in the target pop-up menu), which linker(s) to use, and the output directory here.

?Access Paths: Access paths tell CodeWarrior where to search for required files that are a part of the project but not necessarily project-specific (such as header files).

CodeWarrior will not, by default, search your entire hard disk for files. It will only look

where you explicitly tell it to look with access paths.

?Build Extras: A few miscellaneous settings to improve the build speed.

?Runtime Settings: In order to debug non-application code, such as a plug-in, you must have an application assist you. The application does this by calling the suspect

plug-in code. This panel lets you specify the host application to use in this situation.

This topic will be mentioned in Lesson 8.

?File Mappings: Every file must be mapped so as to identify it to the compiler. That is, this panel tells CodeWarrior that files ending in .cpp are C++ source files and should

therefore be compiled using the C++ compiler. See Figure 2-9 for more examples.

Figure 2-9: The File Mappings options allow you to specify the treatment of files, based on their extension.

?Source Trees: Source trees are similar to access paths. Here you can enter file locations, such as file servers, that are specific to your project.

?x86 Target: This panel allows you to set the type of project (application, library, or DLL), and various aspects of the project -- including how much memory the resulting

program requires. It is also where you specify the name of the file output by the IDE.

This name can -- and usually will -- be different from the target's name (the one

entered into the Target Settings panel).

Setting Other Preferences

CodeWarrior includes a variety of additional preferences that can help you customize your environment before beginning to work on your own programs.

Language Settings

Language Settings include the following items: (discussed further in Lesson 3) ?C/C++ Language: There are an extremely large number of settings for the C/C++ compiler. Suffice it to say that you can alter them here. See Figure 2-11.

Figure 2-10: C++ Language settings.

?C/C+ Warnings: These settings (Figure 2-10) tell the C/C++ compiler whether to provide warnings as your code is being compiled. Sometimes source code can contain elements that aren't quite correct but are not necessarily errors. These are called

warnings. You can instruct the compiler to treat all warnings as errors so that you can quickly examine the questionable code in the editor.

?Windows RC: A Windows-specific resource compiler. Resources are graphic elements (such as windows, buttons, and menu items) that can be built independent

of your program code. This panel lets you specify a header file that the resource

compiler uses when generating these interface elements.

Code Generation

Code Generation preferences include the following items:

?x86 Processor: There are a number of decisions your compiler must make as it generates the machine code from your C or C++ source code. The settings in this

panel help the compiler to optimize your code. This item will be labeled differently on

each CodeWarrior platform. Figure 2-11 shows the x86 version. This is discussed

more in Lesson 3.

Figure 2-11: x86 Processor settings are specific to projects intended for a x86-based computer. CodeWarrior includes settings for each

operating system it supports (directly, or through plug-ins).

?Global Optimizations: This has got to be one of the most exciting and useful panels in all of CodeWarrior (see Figure 2-12). This panel allows you to set the global

optimization level of the compiler. This means that you can control how efficient and

fast the compiler tries to make your source code. However, speed comes at a price.

The smaller and faster the source code, the more difficult it is to debug, and the longer it takes to compile. Fortunately, the panel spells it all out for you so you can make that decision every time you optimize! If you want to, I mean. You will have a great deal of fun with this panel as you adjust the settings to suit your needs and your projects.

Figure 2-12: Use Global Optimization settings to speed up compiling of the code (Optimizations Off), or make your code execute faster

(Levels 1 through 4).

Linker Preferences

Linker preferences include the following items:

?x86 Disassembler: The name and specific settings in this panel may differ a bit by platform, but the options are similar. They allow you to configure specific settings that the Linker must use when disassembling and debugging your target.

?x86 Linker: The name and specific settings in this panel may differ a bit by platform, but the settings are similar (Figure 2-14). They allow you to configure specific settings that the Linker must use when building your target, such as specifying the entry point into your code. See Lesson 4.

Figure 2-13: Each supported operating has a Linker settings panel. Here is the x86 version.

Settings for the editor can be found on the Custom Keywords panel. This panel allows you to configure the text editor to display various custom keywords in different colors. For example, if you like to use a keyword in your source code to label certain areas of the code in a different color, you can list it here. It will appear in the color you choose.

The Debugger Settings panel allows you to choose how the debugger should log data, handle watch points, etc. This is discussed in more detail in Lesson 5.

Now you can begin to see how CodeWarrior's features help make programming easier. Now go check out your homework. Yes, you will have some homework assignments in this class. Then I'll see you back here for Lesson 3.

第三课编译

第一步:理解编译阶段

我们的前面的课程中已经学到,源程序输入完之后的工作就是要编译它。编译源程序就是计算机把你所写(通常是用C 或C++编写的)的源代码进行分解、分析,然后转化为机器语言。机器语言是一种计算机能够理解阿语言,而且它运行起来比 C 或C++ 也要快得多。编译的大致过程如下:

1. 用C 或C++ 编写代码:

#include

void main(void) {

int c;

printf("Hello World on Windows!/n");

c = getchar();

}

2. 进行编译。CodeWarrior 编译上述代码并把它翻译成机器语言,结果如下:

符号名:

1: _main 2: _@8 3: _printf 4: ___files 5: _fwide 6: ___get_char

===============================================================

SECTION SIZE = 0x0000003C; NAME =?.text DEFINED SYMBOLS: name = _main offset = 0x00000000; type = 0x0020; class = 0x0002 00000000: 68 00 00 00 00 push offset _@8 00000005: E8 00 00 00 00 call _printf 0000000A: 59 pop ecx 0000000B: 6A FF push -1 0000000D: 68 00 00 00 00 push offset ___files 00000012: E8 00 00 00 00 call _fwide 00000017: 85 C0 test eax,eax 00000019: 59 pop ecx 0000001A: 59 pop ecx 0000001B: 7D 1E jge $+32 ; --> 0x003b 0000001D: 83 2D 2C 00 00 00 sub dword ptr ___files+44,1 00000023: 01 00000024: 72 0A jb $+12 ; --> 0x0030 00000026: FF 05 28 00 00 00 inc dword ptr ___files+40 0000002C: EB 0D jmp $+15 ; --> 0x003b 0000002E: 89 C0 mov eax,eax 00000030: 68 00 00 00 00 push offset ___files 00000035: E8 00 00 00 00 call ___get_char 0000003A: 59 pop ecx 0000003B: C3 ret near

============================================================= SECTION SIZE = 0x00000019; NAME = .data 00000000: 48 65

6C 6C 6F 20 57 6F 72 6C 64 20 6F 6E 20 57 Hello World on W 00000010: 69 6E 64 6F 77 73 21 0A 00 indows! DEFINED SYMBOLS: name = _@8 offset = 0x00000000; type = 0x0000; class = 0x0003 ============================================================== 上述机器代码难于阅读,不要去管它。机器代码相比C 或C++ 而言,要难理解多了。但是,计算机只能理解机器语言。只有将你的程序编译—或翻译—成机器代码,然后再执行它,这样运行起来才能快一些,而不是每次运行时才去翻译它,那样运行速度就很慢了。

你只需选定一个源文件,然后从工程菜单中选择反汇编项,你就能看到该文件的机器语言清单。实际上上面我们看到的机器语言清单就是这样得到的。如果你仔细地对照阅读一下你的 C 或C++ 源代码和它编译后的机器代码,不难发现它们之间的关系。

CodeWarrior 中编译选项的详细设置

在正式开始编译源代码之前,CodeWarrior 还要对其做预处理。在这个阶段,是对C 或C++ 代码进行编译前的一些准备工作。在编写程序的过程中,往往会有很多相同的P代码输入,于是程序员使用一些快捷方式,比如所谓的宏(macros)来代替这些相同的输入。例如,你可以使用APPNAME 作为一个宏,来表示“Metrowerks CodeWarrior”,以此来减少输入的工作量。预处理就是要把这些宏转换为它们实际表示的代码,此外还要替换一些定义符号(比如#define THREE 3)为实际的源代码。为了更好地理解预处理所做的工作,你可以查看一下预处理结果的清单。首先在工程窗口中选中一个源文件,然后从工程菜单中选择预处理项,你就可以看到源代码进行了预处理之后,编译之前的结果清单了。.

定制CodeWarrior 的编译方式

在第二课中,我们已经了解了一些控制CodeWarrior 编译代码的选项对话框。现在我们再来详细地看看一些标准 C 和C++ 编译器的设置。请你按照下面所学内容在你的CodeWarrior 上进行实际的操作练习。

图3-1: 控制CodeWarrior 进行C/C++ 编译的语言设置

从编辑菜单中选择Hello World X86 setting 项来打开设置窗口。现在,点击图3-1中语言设置类(Language Settings category)下面的C/C++ 语言标签(C/C++ Language label),你就可以看到C/C++ 语言设置对话框中的许多选项。我们逐个来学习这些选项,以便了解它们是如何影响编译的过程的。

?激活C++ 编译器(Activate C++ Compiler):这个选项允许你把所有后缀名为.c 的源文件当作C++ 文件来进行编译。如果你想在 C 源码中使用一些C++ 语言的特色时,这个功能就很有用了;

?ARM 一致性(ARM Conformance):编译器要求你的代码遵循ANSI C++ 的标准。但你可以通过选中这个选项来指定你的编译器遵循“注释C++ 参考手册”(Annotated C++ Reference Manual,ARM) 中的标准;

?允许C++ 例外(Enable C++ Exceptions):选中这个选项将允许你在C++ 代码中使用try/catch/throw 等块(blocks)。这些方法用于书写错误管理器(writing error

handlers);

?允许RTTI(Enable RTTI): RTTI 表示Run Time Type Information(运行类型信息)。这个选项运息编译器判定一个C++ 对象在运行中的类型。这是C++ 的高级特色,在很多情况下都是很有用的。如果你想了解更多关于RTTI 的信息,请查阅你的C++ 手册;?内联深度/自动内联/延期内联(Inline Depth/Auto-Inline/Deferred Inlining):这些是关于源代码中使用的内联函数的一些设置项。所谓内联函数,就是在编译时该函数的源代码将被直接插入到程序体中,而不是产生这个函数的调用。在某些情况下,使用内联函数可以提高代码的性能。这是编译器的一个高级设置项;

?字符串池(Pool Strings):通常,编译器将编译后代码中的所有字符串对象存储到它们自己的数据空间中。如果你想将所有的这些字符串存放到一个数据空间中,就应该选中此项。如果你的源代码中有非常多的字符串(比如上面我们提到的APPNAME 宏),那么你就应该选中此项来节省内存空间。这个功能只能在使用PowerPC 的Mac OS 平台上编程时使用;

?不重用字符串(Don't Reuse Strings):所谓“重用字符串”,就是指当你的程序中有几个完全一样的字符串时,编译器会将它们全都存放到同一个数据空间里。但是,有时你可能想修改某个字符串,这就会造成其它和要修改字符串共享数据空间的字符串也要被修改了。如果你想避免这种情况,就要选中这个选项。这样,即使程序中有完全一样的字符串,它们也将存放到不同的数据空间中;

?要求有函数原型(Require Function Prototypes):建议最好选中此项。使用函数原型可以帮助编译器在检查传递给函数的参数类型时发现代码中的错误。所谓函数原型就是在程序的前端对函数进行声明。也就是说,你应当在使用一个函数之前,定义或声明这个函数。既然这个选项这么好,那么什么时候应该关掉它呢?通常是,当你使用一些老版本的 C 进行编程时,并不需要对函数进行事先声明,这时你就应该关掉这个选项来检查整个程序代码。你一定愿意在程序前端书写函数原型,并选中此选项,因为它能帮助你解决这么多的编码错误;

?允许支持布尔变量(Enable bool Support):为了使用C++ 的布尔变量——true (真) 和false (假) 这两个关键字,必须选中此项;

?允许支持wchar_t(Enable wchar_t Support):为了使用C++ 的内置类型wchar_t 而不是char 类型来表示字符类型,必须选中此项;

?严格遵循ANSI/只能使用ANSI 关键字(ANSI Strict/ANSI Keywords Only):默认情况下,编译器允许你使用Metrowerks 扩展和C/C++ 语言的附加关键字。但是如果你想在这种情况时编译报错,那么就应该选中这两项。这样,编译出来的程序就是100% ANSI 兼容代码;

?扩展通配符(Expand Trigraphs):默认情况下,通配符是不允许的。为了能够使用通配符,就要选中此项。所谓通配符,就是在你的源代码中代表字符常量的方式。例如,'????' 就是一个通配符;

?多字节敏感(Multi-Byte Aware):如果你是有能够的编程语言要求使用多字节字符(例如Kanji 或Unicode),就要选中此项。这样编译器才能正确地处理源代码中的多字节

字符;

?指示到SOM (Direct to SOM):这是Macintosh 平台上才有的功能,它允许你在CodeWarrior 中直接创建SOM 代码。SOM 是一种使用于苹果机上的开放文档环境的代码类型,但现在已没人用了;

?使用CR 为换行符(Map Newlines to CR):这个选项允许你交换'/n' 和'/r' (这是用于标识源码行结束的符号)。此选项只对Mac OS 上的编程有用;

?不严格的指针类型规则(Relaxed Pointer Type Rules):选中此项将把char *, unsigned char *, void * 和Ptr 当作是同一种类新。当你从另一个并没有正确管理指针

类型的源代码中,或者是从一个使用还不能正确支持这些类型的老编译平台上开发的源代码中继承代码时,这个选项就很有用了;

?枚举类型总是整型(Enums Always Ints):通常情况下,编译器将一个枚举类型分配与之最接近的类型同样的空间。如果你想使枚举类型的空间总是和整型一样,那么就要选中此项。所谓枚举类型就像这样:enum {itemone, itemtwo = 7, itemthree}。其中,itemone 等于0,itemtwo 等于7,itemthree 等于8;

?使用无符号字符类型(Use Unsigned Chars):选中此项将把所有字符数据类型当作无符号字符类型来处理;

?EC++ 兼容模式(EC++ Compatibility Mode):使用CodeWarrior 编译嵌入式C++ (EC++) 代码时,要选中此项。请注意,此时C++ 中的诸如模板(templates)、例外

(exceptions)和其它一些C++ 的高级功能就不可用了。具体情况请查阅C++ 手册;

?允许Objective C(Enable Objective C):为了使用Objective C (在NeXT 计算机操作系统上很著名的编程语言),要选中此项。此选项只能在Mac OS 下只用;

?前缀文件(Prefix File):如果需要在每个源文件中包括一个头或预编译头文件,就要将该文件名输入在此处。适用情况:当所有源文件都要访问一个特殊的定义,但你又不想在每个源文件中键入#include 来包括该定义时,使用此选项很方便。

注意:上述许多选项在Mac OS 和Windows 平台上的CodeWarrior 编译器版本中都是一样的。但根据我们在上面对这些编译器选项的描述可知,一些选项在两个平台上还是有一些不同的。然而,C 和C++ 时平台无关的编程语言,因此大多数概念都是可以应用于任何平台的。

第四课连接

第二步:连接程序各部件

当你的程序编译完毕以后,接着就要使用连接器来把这些组成你的程序的各个文件连接起来。

连接器是用来组合各个源文件被编译后得到编译代码的,同时还要将这些文件与它们所需要的库连接在一起。连接确保了每片代码都知道如何去找到你程序中的其它元素。例如,连接器修

改机器代码以便使用MSL 库函数中的printf() (该函数用来实现功能强大的控制台输入/输出)来替换你在源文件中使用的printf() 函数调用。

当你编写一个程序时,常常将代码写成函数并存放在不同的文件中,然后将这些文件编译得到单个的输出文件。就像我们在前面使用的Hello World 这个程序,它的输出文件是一个应用程序。但是在某些时候,同一个程序中使用的函数在输出时不一定是存放在同一个输出文件中的。例如,假设你编写一个应用程序时,其中包含了许多被程序的多个部分重复使用的代码,你就可以将这些被重复使用的代码编译成为一个可共享的动态链接库(DLL)。这样,该应用程序仍然可以访问到这些代码,但是它就需要弄明白应该到哪个文件以及如何找到这些它需要使用的函数。这种情况,就需要做一些连接的工作了。

连接的类型

在程序的编制中,一个连接就是一个指针,指向一个象编译函数这样的对象,或者指向一个变量或一个数组这样的数据内容。连接有两种方式:硬连接(hard linking)和软连接(soft linking)。

硬连接发生于连接过程中,说明代码的时候。换句话说,如果一个函数被使用了,在连接时连接器确切地知道这个函数在哪里并创建一个连接把这个函数连接起来。

软连接(也称为弱连接)发生于进行连接时,一些代码可以不需要进行说明,因为你知道这些代码位于一个DLL 中,并在运行时可以从该DLL 中进行调用。在这种情况下,连接器会告诉应用程序到哪里去找它所需要的代码。软连接也是计算机操作系统中许多元素使用的方法。接下来,我们一起来学习一些关于连接器的选项设置。

A 连接Detailed Look at Linking

为了将来能更好地领略CodeWarrior for Windows 平台的卓越功能,你首先需要了解如何配置CodeWarrior 的连接器来满足你的要求。

根据你的要求来配置连接器

本课中使用的示例是运行在x86 平台上的CodeWarrior 的连接器设置面板(如图4-1)。但是在这其中使用的很多术语也是适用于其它平台上的CodeWarrior 连接器的。

图4-1 x86 连接器设置窗口

通过选择编辑菜单中的“工程名”项来打开这个设置窗口。(“工程名”是指当前的活动工程——在本例中就是Hello World x86),然后点击设置窗口中的x86 连接器(或类似的名字)标签。

下面我们来看看一些连接器设置项:

入口点用法(Entry Point Usage):在Windows OS 体系中,每一个代码模块都有许多可能可以或者不可以选择的入口点,这取决于你所编译的代码类型。这些入口点的自然属性依赖于你正在编写的程序的输出文件(应用程序、库或DLL )的类型和其它的一些因素。当一个应用程序需要调用一个DLL 函数时,主机操作系统就使用这个入口点信息

来正确地调用该DLL 地初始化函数。大多数情况下,你应当设置此选项为默认方式(如

图4-1所示)。这将让CodeWarrior 根据你在目标文件设置面板中选择的目标文件类型,来自动地为输出文件设置正确的入口点;

?子系统(Subsystem): 子系统有三种选择:Native、Windows CUI 和Windows GUI。

Native 选项是用于开发驱动程序和其它异种系统模块的;Windows CUI 选项是用于开发使用控制台风格用户界面( console-style user interface,所谓的CUI )的应用程序的;

Windows GUI 选项用于开发使用Windows 图形用户界面(Windows graphic user

interface,所谓的GUI )的应用程序的。因为我们是用的示例程序是简单的基于控制台

的Windows 应用程序,所以我们选择了CUI 子系统。通常情况下,CodeWarrior 会根据你在开始创建工程时选择的工程模板来自动地设置子系统的选项;

?子系统ID/用户ID(Subsystem ID/UserID):和子系统项一样,这个选项也是由CodeWarrior 自动设置的。具体系统对应的ID 为:Windows 3.1,Windows 95 和

Windows NT 3.5 的ID 为3.10,Windows NT 4 的ID 为4.00;

?生成连接映射(Generate Link Map):这个选项允许你生成一个文本文件,其中包含了程序中使用到的所有的类和函数的详细信息。当需要通过匹配变量或函数名的地址来调试代码时,这个选项就非常有用了;

?生成SYM 文件(Generate SYM File):这个选项允许你在连接过程中生成一个符号文件。大多数的调试器在进行调试时需要一个符号文件来逐步调试你的源代码。我们将在第五课中详细讨论这个内容。此外,你还可以通过选中生成CV 信息项(Generate CV Info item)来生成一个可用于CodeView 的符号文件。CodeView 是一个流行的

Windows 调试工具;

?生成CV 信息(Generate CV Info):生成一个可用于CodeView 的符号文件。

CodeView 是一个流行的Windows 调试工具;

?命令文件(Command File):这个选项要你选择一个用于指示复杂的连接选项设置的文本文件。该文件称为连接器命令文件。它被使用来指定要导入和导出哪些符号。除非你正在编写一个特殊目的的代码,你才不需要一个连接器文件。

正如你所知的,连接器的设置过程是非常复杂的。但是,在多数情况下,你不需要修改连接器的默认设置。Metrowerks 公司的开发人员已经帮助你很好地解决了这个问题。

第五课调试

关于调试

Purging pesky pests proves productive for programmers!

调试就是在你的程序代码中找到一个问题并着手去解决它的过程。不管是谁,在编程时都难免出现一些输入或程序逻辑上的错误,一旦出现这种问题,很可能你想破了头也找不到错误在哪。这个问题可能只是一个输入上的小错误或者只是一个变量用错了,因此你很难发现它。但是因为这个错误的存在使得你的程序无法实现预期的功能。有时候会更糟糕,以致你的机器都崩溃了。这时,你就必须借助调试来解决问题。

CodeWarrior 带有一个集成的调试器,可以让你在CodeWarrior 主窗口中打开一个窗口来进行调试工作。使用调试器的方法是,从工程菜单中选择Enable Debugger 项,然后重新编译你的目标文件。完成上述步骤后,你的程序就会在调试窗口中运行,此时你就可以隔离并改正你找到的任何一个问题了。

通常进行调试时总要生成源程序的一个调试目标文件。该目标文件的源文件保持不变,但是需要预先设置置一些选项才能产生该程序的调试版本。通过点击工程窗口的弹出菜单中的调试目标文件,你就可以进入调试状态。

图5-1: 调试器界面

图5-1显示了Hello World 这个程序在CodeWarrior 调试器中进行调试时的情况。为了能够更方便地演示调试器的工作过程,我们在程序中添加了一小段循环代码(其中使用了i、x 和y 等三个变量)。调试器允许对代码执行单步逐行调试。当你在代码中移动时,你还可以查看程序中所有变量的值。在这种“慢速移动(slow motion)”的方式下调试程序,你可以非常清晰地查看到代码的运行情况并很容易地解决问题。

但实际情况是,不是所有的问题都很容易解决的。有些问题就有可能要花费你

长达数周的时间去解决。不管是经验多么丰富的编程老手,同样不可避免地要

遇到这样的问题。作为一个初学者,你更容易遇到这样的问题,但是,你千万

别被这种情况吓倒。请记住,从错误中学习,你能学到更多的东西。

请注意在调试器窗口左上角的那些按钮,它们是用于帮助你进行调试工作的。这些按钮从左到右分别是:运行程序(Run Program)、停止(Stop)、退出(Kill (Quit))、跳过(Step Over)、转入(Step Into)和转出(Step Out)。最后两个命令按钮是让你决定在单步调试程序时,如果遇到一个函数,是否要进入函数内部进行代码调试。或者你也可以使用跳过(Step Over)命令让该函数一次执行完毕,而不进入函数体中单步调试函数的代码,这样可以节省一些时间。如果你不能肯定函数是否正确无误,那么你可以转入(step into)该函数体内部对其进行单步调试。对于初学者,你应该单步调试每一个函数,至少可以练练手嘛!

图5-1 所示的调试窗口包含三个主要部分:

?栈窗格(The Stack pane):位于左上方的窗格是显示调用栈(也叫做调用栈的记录)的区域。当你在单步调试源码的过程中调用了多个函数时,在这个区域就显示出调试到达当

前状态之前调用过的函数名清单。这个清单会随着你的调试过程,根据你是否转入函数

内部的情况随时增减;

?变量窗格(The Variables pane):位于右上方的窗格是显示变量名和其值的区域。其中显示的是各个变量的名字和它们的值,而且还可以依据变量的类型让你查看(或修改)这

些数据。在图5-1中显示的Hello World x86 程序这个例子中,有四个变量:c,i,x 和y。当你在代码中执行单步调试时,这些变量的值就会根据程序执行的过程实时地更新。

例如,在调试过程中,你可以注意到后三个变量是如何取得它们的值的(这些值是在循环

代码中赋给这些变量的),而变量 c 显示的是一个无意义的值(因为你还没有给getchar()

输入任何值)。你可以使用这个窗格来发现不正常的变量值,从而发现程序设计上的错误这对于程序的调试成功,非常关键;

源代码窗格(The Source pane):位于下方的窗格显示了Hello World x86 这个程序的

C 语言源代码,它也可以用来显示该代码的汇编语言版本。随着调试的深入进行,仅仅

是程序的 C 语言代码可能不能提供足够的调试信息,这是你就需要查看该程序的汇编语言代码。你可以通过该窗口下端的弹出菜单来选择查看程序的源代码、汇编代码或者两者的混合显示。

你可能已经注意到在源代码窗格左边的红色停止标记,该标记表示这是一个断点,它用于告诉调试器在此处停止执行程序。此功能可以帮助你很方便地快速到达程序中地某一位置,然后从此位置处开始调试程序。当你设置了一个断点,调试器运行到断点所在的行就停止下来,等待你的控制命令。在某行程序左边显示的蓝色小箭头是当前程序的计数器,它表示指向的程序行为即将要执行到的语句。在图5-1中,我们已经设置了一个断点以便程序执行到完源代码中的循环块后在第二个输出语句前停下来。设置断点的操作也很简单,只需在你希望调试器停止的程序行的左端点一下鼠标即可。

下面我们来看看关于CodeWarrior 调试器的一些参数设置。

全局调试器参数设置

通过选择编辑菜单中的“Preferences”项,可以看见CodeWarrior 调试器有许多全局的参数设置。

设置内容

图5-2: 调试器全局参数设置显示

设置显示面板(见图5-2)包含了一些决定调试器窗口上如何显示信息的参数设置。当你刚开始使用调试器时,你可以在这里把调试器窗口上的某些文字设置得大一些或小一些,或者用一些特殊的颜色来显示它们。

颜色设置允许你选择在源代码中用于突显观察点(watchpoints)和变量名的文字颜色。这种设置非常有用,可以帮助你在调试代码时很容易地观察到观察点或变量值的变化。观察点可用来帮助你在整个程序中跟踪某个值并将其显示在一个窗口中。

其它设置的用途都解释得很明白了,你也不需要去更它们,默认设计就可以了。当你对调试器了解得更多了一些时,你才可能会的想去修改这些设置。

关于视窗的设置

图5-3: 关于视窗的设置

在调试程序的过程中,你会发现桌面上很会就挤满了许多打开的窗口。关于视窗的设置(见图5-3)允许你设定在调试中隐藏或显示某些特定的窗口来管理这些窗口。默认的设置是隐藏非调试用的窗口,这在大多数情况下就可以了,不必修改它。

全局设置

全局设置窗格(如图5-4所示)包含了一些用于控制调试器操作方式的选项。

图5-4: 全局设置

调试过程中缓存修改后的文件这一设置是用于决定修改后的文件需要缓存多长时间用的。缓存文件能够提高调试器的速度,但是要牺牲一些磁盘空间。

其余的设置解释得很清楚了。如果你只是一个初学者,那么默认设置就可以了。

远程连接

图5-5: 远程连接

最后是远程连接设置(见图5-5)。该设置面板用于设置通过一个TCP/IP 网络进行远程调试。这是一些高级设置,作为初学者,使用默认设置就可以了。

至于Java 设置和Java 调试面板用于使用Java 语言进行编程的情况的,本课程不涉及这个内容。你可以学习一些相应的课程。

目标文件和工程特定的调试器参数设置

以下是关于被调试的目标文件和工程的设置项。当在CodeWarrior 的工程窗口的目标文件标签中有一个目标文件被选中时,你再选择编辑菜单中的工程名设置(Project Name Settings)项即可看到这个设置窗口。

图5-6: 目标文件和工程调试器设置

调试器设置

?重定位后的库...的位置(Location of Relocated Libraries, etc): 如果你正在调试的文件被移到其它位置了,或者你正在通过一个TCP/IP 网络来进行远程调试,你就必须将这些文件所在的目录输入到这个文本框中;

?在应用程序启动时在临时断点处停止(Stop at temp breakpoint on application launch): 默认情况下,这个选项在程序的起始位置中断调试器的运行。但你也可以设置为可在任何断点处中断;

?自动查找目标库(Auto-target Libraries): 选中这个选项可以自动地访问库。此选项用于正在调试的代码是一个库的一部分时,当你调试这些代码时,调试器将“做应做的事”

(例如装载库并调用任何初始化函数);

?记录系统消息(Log System Messages): 这个选项用于强制将所有的系统消息写入一个记录文件中。当你遇到代码导致系统崩溃,并因系统崩溃又看不到屏幕显示时,就很有用了。当你重启机器后,你可以从记录文件中查看导致系统崩溃的消息。特别是今后你调试一些大型程序时,记录文件就很有用了,所以一定要学会读懂记录文件!

?数据更新时间间隔(Data Update Interval): 选中这个选项并给它设置一个值,这样你就可以决定数据查看(data view)多长时间更新一次。数据查看更新得越频繁,调试器显示的数据值就越新;

?缓存运行中的符号文件(Cache symbolics between runs): 在调试器运行时,符号文件(在编译过程中产生的一种文件)将被缓存起来。这可以提高调试的进程;

在观察点处停止(Stop at Watchpoints): 选中此项,当观察点值为真时就中断调试。观察点和断点一样是很有用的。不同的是,断点每次都是在一个特定的代码行处停止下来,而观察点是监视一个变量或内存的一块区域,当此被观察的对象发生改变时,它就中断调试过程。这和VC 中的条件断点相似,都是在设定的条件被满足时中断调试过程的。

这是一个很有用的调试工具。

x86 异常(Exceptions)

图5-7: x86 出错信息面板

当你调试有问题的代码时,CodeWarrior 调试器会截取到由程序的bug 引起的某些奇怪的操作(即所谓的异常——Exceptions)。IDE 会将这些异常传递给一个特殊的代码——一个被称之为处理器的东西——由它来处理这些异常问题。

但是,对于大多数的异常,调试器只是简单地中断它的工作而已。为什么会这样呢?

如果你正在做一个高级开发,例如开发一个系统库或一个设备驱动程序,你可能想测试一下这些代码是如何处理这些异常的。只有调试器不截取这些异常时,你才能这么做。如果为了一些特定的原因,你希望调试器抓住某些特定异常发生时的控制("seize control of the moment" for specific exceptions) ,你就应该在这个设置面板上做一些设置。在该面板上显示的异常是CodeWarrior 的集成开发环境可以处置的情况。点击那些你希望由调试器来处理的异常情况,然后点击“保存”按钮保存设置。就像前面提到的,这是很高级的编程设置,因此我们在这将不作详细讨论。总之,CodeWarrior 的调试器是一个非常先进的,而且很易于使用的附件。如果你学好了调试器的使用,它将会成为你开发软件的最重要的一个工具。

另外还有“其它的可执行程序”和“远程调试”设置面板,它们是针对高级用户设置的,本课程不打算再作介绍。如果你需要同时调试多个可执行程序或通过TCP/IP 网络来调试程序的话,你可以自行参看这几个设置面板。

第六课定制

概述

这将是最简单的一课,但它却能够帮助帮助你更好地组织你的思想和开展工作。

正如我们在第一课中学到的,可以有许多中方式来为手头某个特定的任务定制CodeWarrior。你可以定制CodeWarrior 的外观和许多设置项,以便使得编译、连接和调试你的程序变得更快、更简单。

下面我们来看看可用于帮助你更有效地使用CodeWarrior 的定制选项。因为定制CodeWarrior 会改变IDE 的所有行为,所以我们可以想到在编辑菜单下找到这些设置项。在那儿你将找到选择、命令和键绑定(Key Bindings)等菜单。点击其中的命令项就会显示定制IDE 命令设置的窗口。定制IDE 命令的面板包含两个主标签页。命令标签页允许你很容易的定制出现在每个CodeWarrior 菜单中的命令。通过该标签页你也可以修改在内置的文本编辑器中使用的命令,例如选择文本和移动光标等命令。在这个设置窗口中,你还可以创建任何用于触发某个菜

单命令项的组合键(也称之为键绑定——key binding),以此来启动一个应用程序,或者执行一个脚本。当然,你也可以设定一个某个命令项是否出现在一个菜单中。

定制IDE 命令的面板中的另一个标签页是工具条项目标签页,在这个标签页中你可以看到在CodeWarrior 的工具条中显示的项目,例如显示在每个文本编辑器窗口上方(或下方,取决于你的参数设置)。

在工具条项目标签页中,你只需点击一个工具条图标然后把它拖到主菜单下面的工具条或者文本编辑器窗口的工具条中,就可以往相应的工具条中增加一个命令。还可以把工具条中的一个图标拉到工具条的最后。从CodeWarrior 的窗口菜单中的工具条子菜单中选择重设窗口的工具条(Reset Window Toolbar) 或重设浮动工具条菜单项,还可以重新设置该工具条。

在大多数情况下,CodeWarrior 的默认设置就可以满足你的要求了。偶尔你也可能发现一个通过改变一个菜单或工具条的方式来自动完成一些任务。关于Codewarrior 的定制,你可以参考它的在线文档获得更多的信息。

CodeWarrior 定制示例

通过定制CodeWarrior,你可以增强你的工作环境和提高工作效率。除了对菜单和工具条的简单修改之外,你可能还想只需点击一个图标或键入一个组合键就可以执行一个脚本或启动一个应用程序。有时当你正在参与一个非常庞大的开发项目的时候,需要做一些定制工作来解决自动设置带来的混乱问题。例如,你可以创建一个脚本来完成以下这些工作:?自动删除编译过程中产生的多余的文件;

?将输出文件复制到一个本地或网络上的目录中以做备份;

?为你的工程创建一个安装应用程序。

对于Windows 用户而言,可以通过VBScript,Perl或其它使用通用对象模型(Common Object Model,COM)接口的脚本语言来驱动CodeWarrior Pro 5 IDE 完成一系列复杂的操作。如果使用VBscript,你还需要一个可以执行VBScript 的的应用程序(如Internet Explorer 5),或者是一个Scripting Host 工具——可以从以下网址下载

https://www.doczj.com/doc/6b15326639.html,/scripting/windowshost/。

下面的VBScript 脚本用于指导CodeWarrior IDE 删除当前工程中的所有目标(object)文件,以便执行一个“干净的构建(build)”,然后再执行构建工作(编译和连接操作)。该脚本还打开一个编辑器窗口来显示操作结果(成功或失败的)的总结。这个脚本是有点长,但设计得很好,因为其中包含了许多用于错误检查的代码。

' 文件名:Build.vbs

' 作者:Jim Trudeau, Metrowerks

' 以及版权声明信息

option explicit

codewarrior软件与编程的讲解完整版

CodeWarrior 使用教程 第一课认识CodeWarrior Translated from?https://www.doczj.com/doc/6b15326639.html, CodeWarrior?能做些什么? ????当你知道自己能写更好的程序时,你一定不会再使用别人开发的应用程序。但是常常会发生这种情况,就是当你写了无数行代码后,却找不到使得整个程序出错的那一行代码,导致根本没法编译和链接整个程序。这可能更令人灰心丧气。 ????本文将告诉你如何使用?CodeWarrior?这一工具解决上述问题。 ????从现在开始,我们将集中精力学习如何在?CodeWarrior?中使用?C/C++?进行编程。为了学习本课程,你必须已经能够比较熟练地使用上述两种语言之一。CodeWarrior?也可以支持?Java?开发,但那是另一门课程的内容。本课程仅限于在?Windows?平台上使用?CodeWarrior?进行的开发。一旦你精通了?CodeWarrior?编程后,你可以试试在其它平台上使用?CodeWarrior。本文中讨论过的大部分内容都可以应用到开发?Mac?应用程序中。 ??? CodeWarrior?能够自动地检查代码中的明显错误,它通过一个集成的调试器和编辑器来扫描你的代码,以找到并减少明显的错误,然后编译并链接程序以便计算机能够理解并执行你的程序。你所使用过的每个应用程序都经过了使用象?CodeWorrior?这样的开发工具进行编码、编译、编辑、链接和调试的过程。现在你在我们的指导下,自己也可以去做这些工作了。

????你可以使用?CodeWarrior?来编写你能够想象得到的任何一种类型的程序。如果你是一个初学者,你可以选择编写一个应用程序(比如一个可执行程序),比如象微软公司的文本编辑器?WordPad?这样的应用程序。 ????应用程序可能是最容易编写的程序了,而那些庞大的商业软件,比如象?Adobe Photoshop,Microsoft Word?以及?CodeWarrior?软件都是极其复杂的。其它类型的程序指的是控制面板(control panels),动态链接库(dynamic linked libraries,DLLs)?和插件(plug-ins)。我们先来简单的讨论一下这些类型的程序。 ????在?Windows?中,控制面板程序是一些(通常比较小的)存放在控制面板目录下的程序,可以在开始菜单的控制面板项中看到它们。控制面板实际上是设置系统功能的一个简单界面,比如可以在控制面板中完成诸如设置音量和鼠标移动速度这样一些参数。????动态链接库?(DLLs)?提供了一些很有用的被系统和应用程序共享的函数。通常它们都是没有用户界面的。 ????插件?(Plug-ins)?有点类似于?DLLs,插件也是可供其它软件使用的小程序,但插件只能被特定的软件使用。比如说,Photoshop?的插件允许程序员方便地扩展?Photoshop?的功能,而不需要去修改它的源代码。同样的,许多?Web?浏览器也使用插件来增加功能,或者为了让你能够看到页面上的新的内容类型。实际上,有许多程序,包括?CodeWarrior,都使用这种插件结构。 ????一旦你掌握了?CodeWarior?和你所使用的操作系统的编程接口时,你可以编写许多其它类型的程序。实际上,本课程也是你深入学习其它编程方法的基础课程。你已经找到了一个最优秀的地方开始你的编程之旅。好,现在请坐好,放松,去吸取这门课程的精

LCF文件资料使用说明书

序言:Codewarrior 2.10是飞思卡尔32位汽车级单片机Qorriva 系列的集成开发环境,与之前版本2.8、2.9完全兼容。Codewarrior 10.3是飞思卡尔最新的集成开发环境,是一个开放源代码的、基于Java 的可扩展开发平台。许多新用户对codewarrior 链接文件不是十分了解,本文将针对链接文件的常见问题以及段的定义进行介绍帮助用户快速了解和使用CodeWarrior 。 目录 第一节 LCF 文件定义及使用说明 1: LCF 文件介绍 2:LCF 文件中各个预定义段的说明 3:常用关键字和宏定义说明 第二节 EPPC 链接器介绍及使用说明 第三节 代码重定向 第一节 LCF 文件定义及使用说明 1:LCF 文件介绍 链接文件用来控制不同类型数据代码、数据以某种排列方式在最终在生成的可执行文件或者二进制文件,调试文件中的放置位置。它可以通过在EPPC linker 的面板中进行配置,也可以直接在lcf 文件中直接进行修改。 Lcf 文件中首先是对整个memory map(MEMORY )地址空间内的所有RAM,ROM 进行分割,将其分为几个区域,便于放置不同类型的存储内容,而这些区域内包含的内容可以是用户自定义的段或者系统预定义的段(SECTION )。关于段的定义和使用将在lcf 文件介绍结束后进行介绍。 一个工程通常在建立的时候默认的调试方式都是在RAM 中进行调试,由于RAM 中执行的效率高于FLASH ,并且下载速度快。在生成的ROM Image 中常量,初始化过的数据或者代码如果没有被定义在ROM 区域则假设为这部分代码要在程序开始执行的时候从ROM 去拷贝到RAM 区。 下面是一个完整的lcf 文件,其中包括每行的解释及用法。 /* lcf file for MPC5604B M27V (debug RAM version) 文件的名字及对应单片机(RAM 版本) */ //RAM 版本和ROM 版本的区别在于RAM 版本不将程序下载到ROM 中去,而在RAM 中执行程序 /* 512KB Flash, 32KB SRAM */ //单片机的FLASH 和SRAM 大小 MEMORY 下面是对单片机存储空间的定义,不同的段的起始地址,不能叠加地址空间 {

codewarrior v10.x快速指南

Quick Start for Microcontrollers V10.1

CodeWarrior Development Studio for Microcontrollers V10.x Quick Start SYSTEM REQUIREMENTS Hardware Windows? OS: PC with 1 GHz Intel? Pentium? compatible processor Linux? OS: 1.8 GHz Intel Pentium class processor (or better) 2GB of RAM CD-ROM drive Depending on host-target connection: Parallel Port, 9-pin Serial Port, or USB Port Operating System Microsoft? Windows XP 32-bit and 64-bit (Professional Edition), Microsoft Windows Vista? 32-bit and 64-bit (Home Premium Edition and Business Edition), or Microsoft Windows 7 32-bit and 64-bit (Home Premium Edition and Professional Edition) Red Hat Enterprise Edition 5.2 Disk Space 2 GB total 400MB on Windows system disk This Quick Start explains how to install the CodeWarrior Development Studio for Microcontrollers V10.x software on Windows and Linux operating systems, and how to use the CodeWarrior IDE to create, build, and debug a project. Section A:Installing CodeWarrior Software NOTE This section describes how to download and install CodeWarrior for Microcontrollers V10.x from the Web or install it from the CD. The Web version has a time-bombed license.

CodeWarriorV软件使用指南

Code Warrior V5.1软件使用指南 一、软件安装指南 二、关于BDM驱动 三、创建一个新的工程 四、编写与运行你的程序 2011年10月16日陈万忠

Code Warrior V5.1软件使用指南 一、软件安装指南 1. 打开文件安装文件夹 2. 找到安装文件 3. 双击此文件,出现安装界面: 4. 点击“NEXT”按钮,出现安装路径信息。如果修改系统默认路径,点击“change”按钮,然后修改安装路径,否则点击“NEXT”按钮。

5. 在安装过程中,根据提示信息,完成每一步的安装。 6. 安装完毕后,在所有程序中找到Code Warrior V5.1执行文件,点击执行即可进入Code Warrior V5.1集成环境。

7. 也可以拖到桌面上。此时桌面出现如下图标: 二、关于BDM驱动 请将“BDM使用说明和驱动”文件夹下的文件: OpenSourceBDM.dll 和 tblcf.dll以及 tblcf_gdi.dll 三个文件,复制到: C:\Program Files\Freescale\CWS12v5.1\Prog\gdi目录下(或者你安装时修改过的Code Warrior V5.1所在目录\Prog\gdi子目录下),在调试时选择Open Source BDM 调试接口即可。

三、创建一个新的工程 创建一个新的工程,要按照下面向导选项的8个步骤来选择完成。 双击桌面快捷图标,进入 Code Warrior集成开发环境窗口。 第一步:创建一个新的工程。

第二步:选择CPU类型,选择HCS12X目录下的HCS12X Family。 第三步:选择CPU芯片型号和BDM工具TBDML。 第四步:选择编程语言,我们选择C语言编程。

Codewarrior License制作教程(优选.)

目录 第1章 Codewarrior License制作教程 (1) 1.1 准备工作 (1) 1.2 制作步骤 (1) 1.2.1 确定FlexLm版本号 (1) 1.2.2 找FEATURE (2) 1.2.3 找vendor (5) 1.2.4 找计算seed的关键数据 (6) 1.2.5 计算ENCRYPTION_SEED (8) 1.2.6 制作License生成器 (9) 1.2.7 生成License (9)

第1章Codewarrior License制作教程 声明 作者出于学习的目的撰写此文,读者需承担文章使用或传播过程中产生的一切后果,作者概不负责。 我们以飞思卡尔Codewarrior for HC08 v6.0为例,来介绍制作过程。 1.1 准备工作 我们需要事先准备如下软件: z Lmtools z OllyICE z Calcseed z Lmcryptgui 1.2 制作步骤 破解Flexlm最主要的是找到4样东西: z确定Flexlm版本号 z找FEATURE z找vendor z计算ENCRYPTION_SEED 1.2.1确定FlexLm版本号 运行Lmtools,选择Utilities标签页,点击Browse选择Codewarrior安装目录bin目录下lmgr8c.dll,然后点击Find Version,如图 1.1。 图 1.1 确定Flexlm版本号

1.2.2找FEATURE 运行OllyICE,界面如图 1.2。 图 1.2 OllyICE运行界面 点击“文件/打开”,选择Codewarrior安装目录bin目录下IDE.exe,界面如图 1.3。 图 1.3 打开IDE.exe界面

codewarrior快速使用手册

CodeWarrior? Development Studio for Microcontrollers V6.x Quick Start SYSTEM REQUIREMENTS Hardware PC with 1 GHz Intel? Pentium? compatible processor 512 MB of RAM (1 GB recommended) CD-ROM drive Depending on host-target connection: Parallel Port, 9-pin Serial Port, or USB Port Operating System Microsoft? Windows? XP or Microsoft Windows Vista? Operating Systems 32-bit (Home Premium Edition and Business Edition) Disk Space 2 GB total 400MB on Windows system disk This Quick Start explains how to install the CodeWarrior Development Studio for Microcontrollers V6.x software, and how to use the IDE to create, build, and debug a project. Section A:Installing CodeWarrior Software NOTE You must install the CodeWarrior software on the equipment on which you intend to use the software. 1.Insert CodeWarrior Development Studio CD into CD-ROM drive — CW Auto Install begins NOTE If Auto Install does not start, run launch.exe, which is located in the root directory of the CD. The CodeWarrior software may be part of a DVD included with your kit. In this case, click Install CodeWarrior Development Studio for Microcontrollers, follow the on-screen instructions, and skip to step "Check for updates".

CodeWarrior 10.2简明手册(V1.1)

CodeWarrior 10.2简明手册 CodeWarrior 10.2简明手册 (1) 1 下载安装CW v10.2 (1) 2 安装BDM驱动 (2) 3 导入现有工程 (3) 4 编译、下载源码工程 (4) 5. 带有操作系统程序的编译、下载 (6) 5.1 带有操作系统模板程序的打开 (6) 5.2 带有操作系统模板程序的编译 (7) 5.3 带有操作系统模板程序的下载 (7) 6 CodeWarrior 10.2常用操作 (8) 7 常见问题说明 (9) 基于Eclipse的CodeWarrior Development Studio for Microcontroller v10.2(简称CW10.2)作为一个完整的集成开发环境,提供了高度可视化操作及自动创建复杂嵌入式系统应用的功能,为使用Freescale嵌入式产品开发提供了便利。官方推荐使用CW v10.2进行Freecale Kinetis嵌入式产品的开发。本文将对使用CW v10.2开发K60项目的操作进行简要说明。本文安装的cw10.2 版本是特别版的,支持128KB的代码大小。用户若需要更大的代码空间和更多的功能的话,则需要向飞思卡尔申请license,这些license都是要收费的。 1 下载安装CW v10.2 飞思卡尔半导体为注册用户在其官方网站的网址链接处 下载后,双击可执行安装文件,如图1所示,根据提示即可完成安装。由于有的CW10.2版本安装完成后默认是中文版的,有的默认是英文版的。集成开发环境的原版是英文版的,所以英文版的运行速度比中文版的快很多。 这里建议用英文版的CW10.2,不建议用户使用中文版集成开发环境,所以本章介绍的使用说明都是基于英文版的。想将飞思卡尔的CW10.2集成开发环境变成英文版,首先

CodeWarrior V10.1 使用方法快速入门

CodeWarrior V10.1 使用方法快速入门 CodeWarrior V10.1 Quick Start Guide 1.启动CodeWarrior。 如果是首次启动该软件,需要设定一个工作空间。选定工作空间后,如果是第一次运行CodeWarrior,则首先进入“欢迎”界面,点击该界面左上角“×”按钮,关闭该界面后即进入“C/C++项目”编程界面。 2.新建工程:在工具栏中选择 “文件->新建->BareBoard Project”,如图1所示。 图1 1)设定文件名 在缺省状态下,该新建工程将保存在当前工作空间的文件夹下。完成后点击“下一步”,如图2所示。

图2 2)选择芯片类型。 此处以MK10N512VMD100为例。选择好芯片类型后,点击“下一步”,如图3所示。

图3 3)选择调试器类型(可多选) 如果成功安装了新的USBBDM并且patch成功,此处会出现USBDM选项,如图4所示。 如果要在该工程中添加一些已有文件、或者希望生成一个默认的main.c文件,则完成后点击“下一步”。 如无上述需求,则直接点击“完成”。此时将生成一个包含Startup Code、但不含main.c 的新工程。 图4

4)选择导入的默认文件以及是否生成main.c,完成后点击“下一步”。 CodeWarrior的默认编程语言是C,也支持C++和汇编,如果使用C语言编程,此处也可直接单击“完成”,具体操作如图5所示。 图5 5)选择编程语言,完成后点击“下一步”,如图6所示。 图6

6)选择是否需要调用一些快速开发工具(如Processor Expert、Device Initialization),完成后点击“完成”,如图7所示。 图7 至此,CodeWarrior将为您生成一个包含Startup.c和main.c的新工程。在编程界面(C/C++项目)下的工程窗口下,您可以浏览该工程含有的全部文件。 如果您无法找到上述窗口,可在CodeWarrior界面左下角的视图管理器中寻找。如图8所示。 图8

我的整理CodeWarrior生成lib文件一

写给CodeWarrior初学者 1.运行CodeWarrior IDE,打开软件界面; 2.点击“File”菜单下的“New”选项,然后在“Project”选项卡中选择“HC(S)12 New Project Wizard”,也就是新建工程向导,在右侧输入你要键入的工程名和你要放在哪个文件夹下面; 3.点击“确定”后下面选择你采用的单片机型号,比如你选择“MC9S12D64”或者(其中如果选择MC9S12NE64,则必须安装光盘上的NE64补丁插件)“MC9S12NE64”;

4.点击“下一步”后,选择你采用哪种编程语言,尽量不要选第三个“C++”,因为好像我试的有问题,如果你单纯的C,则选择第二个,如果你是C和汇编混合编程,则前两个都要选的; 5.选择是否采用“处理器专家”,该项功能可以方便程序的寄存器设置,但我用过感觉比较糊涂,所以我一般选择“No”;

6.下面就是选择是否采用“PC-lint”,选择“No”; 7.选择是不是支持浮点数,如果你的工程采用浮点数则选择下面的两个中一个,否则选择“No”;

8.选择采用哪种内存定位模式,一般选择第一个“Small”模式 9.最后一步,选择前面两项,如果仅选择第一项,则仅可以软件调试,前两项都选择可以支持软件和硬件调试。

10.完成后,软件会自动创建一个工程,如下图所示,,其中左侧的sources 文件夹下面的main.c就是你的主程序文件,你可以在里面添加代码,同时在左侧按鼠标右键,会弹出菜单,里面有“Add Files”或“Create Group”等,可以根据你的需要往新创建的工程里添加你自己的头文件或者C文件。 11.你可以在main.c里面编辑你的代码,如果需要加入中断,则在左侧找到Prm文件夹下面打开“P&E_ICD_Linker.prm”,然后在右侧该文件里你可以加入你自己的中断函数和中断向量入口地址,记住:你在这个Prm里定义的自己的中断函数名,要和主函数里面的中断函数名对应起来;比如我在Prm文件里定义了串口接收中断:

9S12XS128(CodeWarrior_for_HCS12_使用说明_免费版)

9S12XS128单片机开发工具包清华Freescale MCU/DSP 应用开发研究中心

9S12XS128单片机开发工具包 (1) 概述 (3) 9S12XS128单片机 (3) 9S12XS128开发工具包组件 (3) 9S12XS128开发板及与PC通信 (4) 9S12XS128 开发板 (4) 开发板的硬件连接 (5) PC机的设置 (6) 监控程序及监控命令详解 (8) 命令详解 (8) 复位、中断向量表 (12) 用户可以使用的RAM空间 (12) 编译器CodeWarrior for HCS12 使用方法入门 (13) 建立工程文件 (13) 编写main.c 程序 (15) 定义存储空间分配 (17) 应用程序的编译 (18) 向开发板下载程序 (20) 运行应用程序 (21)

概述 这里描述的是一套9S12XS128系列单片机开发系统套件。以后的更新的版本见清华Freescale单片机应用开发研究中心的网站:https://www.doczj.com/doc/6b15326639.html,。 开发系统主要由两个部分组成,分别是调试下载用的TBDML和开发用目标板。其中TBDML的使用请参见文档“BDM for S12(TTBDM)用户手册V 34.pdf”。 目标板是有异步串行口的驱动的基本系统。针对9S12XS128芯片我们编写了9S12XS128目标板监控程序,可以方便地完成应用系统的开发。用户可以在此基础上设计自己所需的目标母板,完成项目的初期开发。应用软件完成后,用开发工具板擦除监控程序,下载最终的应用程序。 9S12XS128单片机 S12XS 16位微控制器系列针对一系列成本敏感型汽车车身电子应用进行了优化。S12X产品满足了用户对设计灵活性和平台兼容性的需求,并在一系列汽车电子平台上实现了可升级性、硬件和软件可重用性、以及兼容性。 S12XS系列可以经济而又兼容地扩展至带XGate协处理器的S12XE系列单片机,从而为用户削减了成本,并缩小了封装尺寸。S12XS系列帮助设计者迅速抓住市场机遇,同时还能降低移植成本。 主要特性: S12X CPU, 最高总线速度40MHz 64KB、128KB和256KB闪存选项,均带有错误校正功能(ECC) 带有ECC的、4KB至8KB DataFlash,用于实现数据或程序存储 可配置8- 、10- 或12- 位模数转换器(ADC),转换时间3μs 支持控制区域网(CAN)、本地互联网(LIN)和串行外设接口(SPI)协议模块 带有16-位计数器的、8-通道定时器 出色的EMC,及运行和停止省电模式 9S12XS128开发工具包组件 9S12XS128开发工具包硬件系统包括以下组件: (1) 驻留监控程序的9S12XS128开发板一块; (2) 带USB接口的TBDML调试器一个,简称BDM头; (3) BDM 6芯扁带电缆一根; (4)USB电缆一根; (5) RS-232串口通信线一根; (6) 220V AC~DC +5V电源一个; (7) CD光盘一张,含CodeWarrior V4.7,可下载的S12X监控程序.S19。

CodeWarrior学习笔记--Win7不能启动CW的问题

CodeWarrior学习笔记 --Win7不能启动的CW的问题 --skyline 2012/02/21 由于本人正在努力学习中,如有错误,望指正之,万分感激。Email:pjz47@https://www.doczj.com/doc/6b15326639.html, 工作关系,又用到飞思卡尔的芯片了,重新安装CodeWarrior5.1版本软件。我的电脑是Win7旗舰版,但是启动一段时间后,或者执行某个操作后,就会出现如图的画面。 我首先是以为是Win7系统不兼容的原因。因为软件在我家里台式机的XP系统安装过,是没有问题的。后来在软件的介绍发现是支持Win7的,并且我一同事也是Win7系统,却可以正常的跑。然后我认为是我安装软件出的问题。卸载再重新安装,还是如此。耗费了我不少时间。后来根据错误搜索了一下,发现也有人遇到过类似的问题。刚好这个问题有一个人给了个很好的解决方法。他说这是Win7开了毛玻璃窗口的问题。“将你的桌面主题不要设成毛玻璃效果的就可以了.在桌面上右击->个性化->Win7 Basic即不会出现该问题.当然也可以选择更早的主题!!”我修改了主题之后,问题到现在还没有出现过。应该是解决掉了。感谢帮我解决这个问题的人。这个看似没有联系的,看似没有影响的设置居然会引起问题,太奇怪了,呵呵。Mark下来,看看有没有人需要。 解决引用自:https://www.doczj.com/doc/6b15326639.html,/question/321218092.html?seed=0 同时我也搜到另外一种解决方法,就是在图标点击右键-属性,在“兼容性”页面选中“禁用桌面主题”“禁用桌面元素”还有用XP兼容模式,个人感觉问题也应该跟桌面主题的关系导致IDE运行不正常。 解决引用自: https://www.doczj.com/doc/6b15326639.html,/question/263503425.html?fr=qrl&cid=89&index=3&fr2=query

Codewarrior使用指南

Codewarrior 使用指南
飞思卡尔 HC08/HCS12 系列微控制器开发环境 - Codewarrior 使用指南(草稿)
tyf01@https://www.doczj.com/doc/6b15326639.html, 2005 年 10 月
仅供学习参考,请勿用于商业目的
1

Codewarrior 使用指南
第一章 Codewarrior IDE 概述
在软件开发过程中,通常需要经过以下几个步骤: ? 新建:创建新项目,源文件 ? 编辑:按照一定的规则编辑源代码,注释 ? 编译:将源代码编译成机器码,同时还会检查语法错误和进行编译优化 ? 链接:将编译后的独立的模块链接成一个二进制可执行文件 ? 调试:对软件进行测试并发现错误 在软件开发中,每个过程都会用到不同的工具。如果每个工具都单独存在,这样就 会给开发人员带来很多不便。所以很多公司为开发人员提供了集成开发环境。开发 人员可以在同一个工具或平台上完成以上全部的工作。 Codewarrior 是 Metrowerks 公司开发的软件集成开发环境(以后简称 IDE)。飞思 卡尔所有系列的微控制器都可以在 codewarrior IDE 下进行软件开发。
Codewarrior IDE 特点
Codewarrior IDE 为软件开发提供了一系列的工具,其中包括: 项目管理器:为软件开发人员管理上层的文件;将项目进行分组管理,比如文件或 目标系统;跟踪状态信息,比如修改日期;决定编译顺序或每次编译应包括哪些文 件;与插件一起提供版本控制功能 编辑器:利用颜色来区分不同的关键字;允许用户利用颜色机制自定义关键字;自 动检查括号范围;利用菜单在不同的文件或函数中导航 搜索器:搜索一个特定的字符串;用特定的字符串代替查找到的字符串;允许使用 常规表达式;提供文件比较功能; 源代码浏览器:标志符(变量名称,函数名称)数据库;利用数据库来对代码快速 定位;对所有的标志符连接到用到它的代码中; 编译系统:编译器将源代码编译成机器码;链接器将目标文件链接成可执行文件 调试器:利用标志符数据库进行源代码级调试;支持各种标志符数据库,比如: codeview, DWARF, SYM 等
Codewarrior IDE 优点
?
交叉平台开发
2

CodeWarrior for ColdFire简明使用方法

CodeWarrior for ColdFire简明使用方法(V1.0/2009年1月) 苏州大学飞思卡尔嵌入式系统研究与开发中心 1.硬件连接PC和实验板 通过与实验板配套的USB口BDM for ColdFire 连接PC 和实验板。一端连接PC机并行接口,另一端连接实验板上的BDM接口。 2.打开工程 在CodeWarrior下打开一个现有的工程的方法是:菜单File>Open…,选择要打开的工程中后缀名为mcp的文件即可。也可以通过File>Open Recent打开一个最近访问的工程。3.创建一个ColdFire工程 1.启动CodeWarrior IDE。 2.从主菜单选择File> New…,弹出新建窗口。 3.创建工程,创建一个MCF52233DEMO的工程。(需要将本书提供的…\第04章阅读材料\MCF52233DEMO文件夹放到Freescale安装目录中的…\Stationery\ColdFire目录下)。 4.编辑源代码 a.单击Sources夹旁边的+标志。双击main.c编辑窗口将会打开main.c文件。 b.可以按需要改变main.c的内容。选择File > Save保存改变。 5.如果需要可以添加文件 右键Sources 夹Add Files打开对话框。选择想要加入的文件单击open。被添加的文件出现在Sources夹下。 4.编译并链接源文件 1.选择工具栏上的Make“”,IDE将会编译并链接工程;Error & Warnings窗口将会打开显示被检测到的错误和警告信息。 5.下载程序 1.选择File>Flash Programmer,弹出Flash Programmer对话框。 2.选择Target configuration,单击Load Settings按钮,在打开的对话框中选择CFM_MCF52233_25MHz.xml打开,在connection中选择PEMICRO_PARALLEL(并口)或PEMICRO_USB(USB接口)或tblcf,在这里我们选择tblcf。 3.选择Erase/Blank Check,单击Erase。整体擦除FLASH。 4.选择Program/Verify,通过Use Selected File选择希望写入的文件,单击Program即可写入程序。

CodeWarriorV.软件使用指南

Code Warrior 软件使用指南 一、软件安装指南 二、关于BDM驱动 三、创建一个新的工程 四、编写与运行你的程序 2011年10月16日陈万忠 Code Warrior 软件使用指南 一、软件安装指南 1. 打开文件安装文件夹 2. 找到安装文件 3. 双击此文件,出现安装界面: 4. 点击“NEXT”按钮,出现安装路径信息。如果修改系统默认路径,点击“change”按钮,然后修改安装路径,否则点击“NEXT”按钮。 5. 在安装过程中,根据提示信息,完成每一步的安装。 6. 安装完毕后,在所有程序中找到Code Warrior 执行文件,点击执行即可进入Code Warrior 集成环境。 7. 也可以拖到桌面上。此时桌面出现如下图标: 二、关于BDM驱动 请将“BDM使用说明和驱动”文件夹下的文件: 和 以及 三个文件,复制到: C:\Program Files\Freescale\\Prog\gdi目录下(或者你安装时修改过的Code Warrior 所在目录\Prog\gdi子目录下),在调试时选择Open Source BDM 调试接口即可。 三、创建一个新的工程 创建一个新的工程,要按照下面向导选项的8个步骤来选择完成。 双击桌面快捷图标,进入 Code Warrior集成开发环境窗口。 第一步:创建一个新的工程。

第二步:选择CPU类型,选择HCS12X目录下的HCS12X Family。 第三步:选择CPU芯片型号和BDM工具TBDML。 第四步:选择编程语言,我们选择C语言编程。 第五步:添加文件到工程,一般直接按“下一步”。 第六步:快速开发应用程序选择,选None。 第七步:选择中的用户自定义模式。 第八步:选择不使用PC-Lint(TM)链接工具软件,点击“完成”按钮,Code Warrior集成开发环境就会自动生成整个工程的文件系统。 四、编写与运行你的程序 在Code Warrior集成开发环境中,利用其自动生成的函数模板,就可以编写和调试你的应用程序了。 例如,最简单的程序,试着在函数模板上添加两条语句: PORTB=0XAA;//让接在B口上的8个LED间隔点亮 DDRB=0XFF //B口8个引脚全部设为输出单击“编译”按钮,如果有错误,会指出错误类型和位置,可修改后重新编译;如果没有错误,单击“运行”按钮就会弹出仿真和实时调试窗口,由于选择了TBDML调试方式,程序会在单击运行后,被自动下载到单片机中。 其他的实验程序,请试着自主设计完成。 I/O口输出程序 #include <> /* common defines and macros */ #include "" /* derivative-specific definitions */ 延时子程序: void delay(void) { unsigned int i,j; for(i=0;i<100;i++) for(j=0;j<10000;) j++; } 主程序: void main(void) { DDRB=0xFF; PORTB=0xaa; for(;;){ delay(); PORTB=~PORTB; 隔位点亮程序 }

1.Freescale CodeWarrior 简要使用说明

Freescale CodeWarrior 使用说明在智能车竞赛中,我们主要使用Freescale公司提供的CodeWarrior软件开发环境对单片机进行编程,在应用中,我们使用的是CodeWarrior4.7或CodeWarrior5.0的版本,在这里以CodeWarrior5.0为例,给大家说明CodeWarrior软件的一些使用说明。 点击桌面或开始菜单中的CodeWarrior IDE的图标,就可以进入CodeWarrior集成开发环境,具体结果如图一所示。 图一 我们点击Startup中的第一个选项”Create New Project”,来新建工程。 之后进入向导菜单,如图二所示 图二

智能车使用的MC9S12XS128单片机作为主控芯片,所以我们在器件中选择相应的芯片,同时,在智能车校赛过程中,大家都是使用学校提供的BDM作为下载区,所以在Connections 中选择TBDML。然后点击下一步。 下一步界面如图三所示 图三 在这一界面中,我们首先选择编程的语言,我们主要使用C语言进行编程,所以我们需要选中C的复选框,同时我们还需要在project name和location中对我们工程的名称和路径进行设定,这里我们给出的例子的工程名为SMARTCAR,路径在D盘根目录,这里每个人都可以根据喜好自由设定,然后点击下一步。之后的界面如图四所示 图四

在这里,我们可以将一些已经编写好的文件纳入到工程中,这里由于我们是建立一个空白的全新的工程,所以,我们跳过此步,直接点击下一步。之后的界面如图五所示 图五 这里我们不进行修改,直接点击下一步。 下一步菜单如图六所示,这里我们对C或C++语言进行一些设置。 图六 在实际使用中,我们主要对第三项”Select the floating point format supported”进行修改,默认选择了”None”,这样我们在编程中就无法使用浮点数”float”,这是非常不方便的。所以这里我们一定要将其改为第二项”float is IEEE32, double is IEEE32”或者第三项”float is IEEE32, double is IEEE64”。这样我们在实际编程中才可以使用浮点数。然后点击下一步

CodeWarrior 安装教程修正版

CW安装教程: 提醒: 1.安装说明:WIN 7 32位系统安装版本为CW 5.0 WIN 7 64位系统和WIN 8系统安装版本为CW 5.1 2.Win7和win8前面安装相同,主要区别在于驱动安装方式不同,安装步骤如下,安装过程部分步骤需要耐心等待,切勿安装过程随意取消。 步骤如下: 1.找到资料中下面文件,双击打开 2.点击“next”下一步至此,修改安装路径(切记不要使用中文路径名称) 3.继续点击下一步 4.点击下一步,再次修改路径,两次路径不可重复(切记不要使用中文路径名称)

5.点击下一步 6.连续点击“安装” 点击“install” 7.安装完成 8.然后将上传资料中USBDM_V2文件夹USBDM_V2\Debug DLLs\tbdml.dll和SBDM_V2\tbdml_gdi_dll\tbdml_gdi12.dll拷贝至安装目录C:\Program

Files\Freescale\CodeWarrior for S12(X) V5.0\Prog\gdi\中,(注意:此处即为安装时第二次更改的路径) 9.接下来进行驱动的安装 A.win8安装:WIN8系统的驱动安装需要禁用数字签名,可参照以下网址提示教程:https://www.doczj.com/doc/6b15326639.html,/article/3f16e003d1f4612591c103ce.html 或按照以下安装步骤(由于无法进行截图,图片为手机拍摄,部分不清晰,请谅解) 1首先按“Shift”+重启,重启后会出现以下界面,点击疑难解答 2.点击高级选项 点击启动设置 选择重启 3.重启后会出现以下界面,选择第七项,按“F7” 7.接下来点击“我的电脑—管理—设备管理器”,双击未知设备,点击“更新驱动程序”,注意操作时需要插上BDM进行;然后如图所示点击浏览驱动程序软件,

我的整理CodeWarrior_使用教程

CodeWarrior 使用教程 课程目录 Translated from https://www.doczj.com/doc/6b15326639.html, CodeWarrior 使用教程 第一课认识 CodeWarrior Translated from https://www.doczj.com/doc/6b15326639.html, CodeWarrior 能做些什么? 当你知道自己能写更好的程序时,你一定不会再使用别人开发的应用程序。但是常常会发生这种情况,就是当你写了无数行代码后,却找不到使得整个程序出错的那一行代码,导致根本没法编译和链接整个程序。这可能更令人灰心丧气。 本文将告诉你如何使用 CodeWarrior 这一工具解决上述问题。 从现在开始,我们将集中精力学习如何在 CodeWarrior 中使用 C/C++ 进行编程。为了学习本课程,你必须已经能够比较熟练地使用上述两种语言之一。CodeWarrior 也可以支持 Java 开发,但那是另一门课程的内容。本课程仅限于在 Windows 平台上使用 CodeWarrior 进行的开发。一旦你精通了 CodeWarrior 编程后,你可以试试在其它平台上使用 CodeWarrior。本文中讨论过的大部分内容都可以应用到开发 Mac 应用程序中。 CodeWarrior 能够自动地检查代码中的明显错误,它通过一个集成的调试器和编辑器来扫描你的代码,以找到并减少明显的错误,然后编译并链接程序以便计算机能够理解并执行你的程序。你所使用过的每个应用程序都经过了使用象 CodeWorrior 这样的开发工具进行编码、编译、编辑、链接和调试的过程。现在你在我们的指导下,自己也可以去做这些工作了。 你可以使用 CodeWarrior 来编写你能够想象得到的任何一种类型的程序。如果你是一个初学者,你可以选择编写一个应用程序(比如一个可执行程序),比如象微软公司的文本编辑器 WordPad 这样的应用程序。 应用程序可能是最容易编写的程序了,而那些庞大的商业软件,比如象 Adobe Photoshop,Microsoft Word 以及 CodeWarrior 软件都是极其复杂的。其它类型的程序指的是控制面板(control panels),动态链接库(dynamic linked libraries,DLLs) 和插件(plug-ins)。我们先来简单的讨论一下这些类型的程序。 在 Windows 中,控制面板程序是一些(通常比较小的)存放在控制面板目录下的程序,可以在开始菜单的控制面板项中看到它们。控制面板实际上是设置系统功能的一个简单界面,比如可以在控制面板中完成诸如设置音量和鼠标移动速度这样一些参数。 动态链接库 (DLLs) 提供了一些很有用的被系统和应用程序共享的函数。通常它们都是没有用户界面的。 插件 (Plug-ins) 有点类似于 DLLs,插件也是可供其它软件使用的小程序,但插件只能被特定的软件使用。比如说,Photoshop 的插件允许程序员方便地扩展 Photoshop 的功能,而不需要去修改它的源代码。同样的,许多 Web 浏览器也使用插件来增加功能,或者为了让你能够看到页面上的新的内

使用CodeWarrior调试U

使用CodeWarrior调试U-Boot 2011-04-19 16:15 1667人阅读评论(1) 收藏举报 使用USBTAP仿真器,CodeWarrior可以直接跟踪和调试已经烧写在NOR Flash上的 U-Boot。下面以MPC8306 U-Boot为例,介绍如何配置CodeWarrior,让它能连接和调试U-Boot,以及如何跟踪和调试。 在此之前,我们首先介绍一下PowerPC体系架构处理器的上电复位知识,PowerPC体系架构处理器包括内核是603e,G2,e300,e600的处理器,对于这些PowerPC体系架构的处理器来说,它们的上电复位过程基本上是一致的。在此,我们只介绍包含e300内核的MPC83xx处理器的上电时序,其它都基本与它类似。 对于MPC83xx处理器,上电后,/POR信号拉低有效,/HRESET同时拉低有效, SYS_CLK_IN提供时钟和复位配置输入信号CFG_RESET_SOURCE,待该时钟稳定,至少32个时钟周期后,/POR开始拉高为无效,此后,设备开始锁存复位配置输入管脚信号CFG_RESET_SOURCE,以决定是从何处读入复位配置字RCW;接着,开始读取RCW,至于读取RCW所耗的时间长短,依赖于读入的设备和RCW的长度。读到RCW后,就可以决定板子的其中模式,由此,开始板子的其中过程。 RCWHR[BMS]确定e300内核MSR[IP]位的初始值,它用来决定中断是量表的位置: 0 — 8M的引导内存空间是0x0000_0000到0x007F_FFFF,如果内核引导使能,它将从0x0000_0100地址处取第一条指令执行 1 — 8M的引导内存空间是0xFF80_0000到0xFFFF_FFFF,如果内核引导使能,它将从0xFFF0_0100地址处取第一条指令执行 RCWHR[ROMLOC]和RCWHR[RLEXT]一起来确定Boot ROM的位置是NOR,NAND还是DDR SDRAM设备。 下面开始介绍如何配置CodeWarrior来跟踪和调试U-Boot。 1. 建立一个新的MPC8306工程,因为需要一个工程来承载配置信息,建立工程的过程需要5步选择: 1) EPPC New Project Wizard,输入工程名字如mpc8306

相关主题
文本预览
相关文档 最新文档