ARM ® DeveloperSuite CodeWarrior ® IDEGuide

Version 1.2

Table of Contents

About this book
Intended audience
Using this book
Typographical conventions
Further reading
Feedback on the ARM Developer Suite
Feedback on this book
1. Introduction
1.1. About the CodeWarrior IDE
1.2. About the CodeWarrior IDE for theARM Developer Suite
1.2.1. Unused menu commands and windows
1.2.2. Converting old projects
1.3. Where to go from here
1.3.1. Online documentation and online help
2. Working with Files
2.1. About working with files
2.2. Creating and opening files
2.2.1. Creating a new file
2.2.2. Opening files from the File menu
2.2.3. Opening files from the project window
2.2.4. Opening header files from an editorwindow
2.3. Saving files
2.3.1. Saving project files
2.3.2. Saving editor files
2.3.3. Saving a backup copy of a file
2.4. Closing files
2.4.1. Closing project files
2.4.2. Closing editor files
2.5. Printing files
2.5.1. Setting print options
2.5.2. Printing a window
2.6. Reverting to the most recently savedversion of a file
2.7. Comparing and merging files and folders
2.7.1. File comparison and merge overview
2.7.2. Choosing files to compare
2.7.3. Applying and unapplying differences
2.7.4. Choosing folders to compare
2.7.5. Comparing XML-formatted projects
3. Working with Projects
3.1. About working with projects
3.1.1. Project structure overview
3.2. Overview of the project window
3.2.1. Navigating the project window
3.2.2. Project views
3.3. Working with simple projects
3.3.1. Creating a new project
3.3.2. Opening a project
3.3.3. Closing a project
3.3.4. Saving a project
3.3.5. Importing makefiles into projects
3.3.6. Choosing a default project
3.3.7. Moving a project
3.3.8. Importing and exporting a project asXML
3.4. Working with project stationery
3.4.1. Project stationery overview
3.4.2. Using ARM-supplied project stationery
3.4.3. Creating your own project stationery
3.5. Managing files in a project
3.5.1. Selecting files and groups
3.5.2. Adding files to a project
3.5.3. Grouping files in a project
3.5.4. Moving files and groups
3.5.5. Removing files and groups
3.5.6. Touching and untouching files
3.5.7. Examining and changing project informationfor a file
3.6. Configuring the CodeWarrior IDE forcomplex or multi-user projects
3.7. Working with multiple build targetsand subprojects
3.7.1. Overview of complex projects
3.7.2. Creating a new build target
3.7.3. Assigning files to build targets
3.7.4. Changing a build target name
3.7.5. Creating build target dependencies
3.7.6. Building all targets in a project
3.7.7. Creating subprojects within projects
3.8. Compiling and linking a project
3.8.1. Overview of compiling and linking
3.8.2. Compiling files
3.8.3. Making a project
3.8.4. Removing objects from a project
3.9. Processing output
3.9.1. Disassembling code
3.9.2. Converting output ELF images to otherformats
3.9.3. Creating libraries with armar
3.9.4. Running batch files with the batchrunner
4. Working with the ARM Debuggers
4.1. About working with the ARM debuggers
4.1.1. How the ARM debuggers work with theCodeWarrior IDE
4.2. Generating debug information
4.2.1. Generating debug information for individualsource files
4.2.2. Generating debug information for allsource files in a build target
4.3. Running and debugging your code
4.3.1. Running a project
4.3.2. Debugging a project
4.4. Using the message window
4.4.1. Overview of the message window
4.4.2. Using the message window
5. Editing Source Code
5.1. About editing source code
5.2. Overview of the editor window
5.3. Configuring the editor window
5.3.1. Setting text size and font
5.3.2. Displaying window controls
5.3.3. Splitting the window into panes
5.3.4. Saving editor window settings
5.4. Editing text
5.4.1. Basic editor window navigation
5.4.2. Basic text editing
5.4.3. Selecting text
5.4.4. Moving text with drag and drop
5.4.5. Balancing punctuation
5.4.6. Shifting text left and right
5.4.7. Undoing changes
5.4.8. Controlling color
5.5. Navigating text
5.5.1. Finding a function
5.5.2. Finding symbol definitions
5.5.3. Using markers
5.5.4. Going to a specific line
5.5.5. Using Go Back and Go Forward
5.5.6. Opening a related header file
6. Searching and Replacing Text
6.1. About finding and replacing text
6.2. Finding and replacing text in a singlefile
6.2.1. Searching for selected text
6.2.2. Finding and replacing text with theFind and Replace dialog
6.3. Finding and replacing text in multiplefiles
6.3.1. Using multi-file search
6.3.2. Using file sets
6.4. Using grep-style regular expressions
6.4.1. Special operators
6.4.2. Using regular expressions
7. Working with the Browser
7.1. About working with the browser
7.1.1. Understanding the browser strategy
7.2. Activating the browser
7.2.1. Configuring browser options
7.3. Using browser views
7.3.1. Viewing data by class with the Classbrowser view
7.3.2. Viewing data by type with the Contentsview
7.3.3. Viewing class hierarchies and inheritancewith the hierarchy view
7.4. Using the browser
7.4.1. Using Go Back and Go Forward
7.4.2. Using the Browser context menu
7.4.3. Finding declarations, definitions,overrides, and multiple implementations
7.4.4. Using symbol name completion
7.4.5. Editing code in the browser
7.5. Creating classes and members with browserwizards
7.5.1. Using the New Class wizard
7.5.2. Using the New Member Function wizard
7.5.3. Using the New Data Member wizard
8. Configuring IDE Options
8.1. About configuring the CodeWarriorIDE
8.2. Overview of the IDE Preferences window
8.2.1. Using the IDE Preferences window
8.3. Choosing general preferences
8.3.1. Configuring build settings
8.3.2. Configuring IDE extras
8.3.3. Configuring plug-in settings
8.3.4. Configuring shielded folders
8.3.5. Configuring global source trees
8.4. Choosing editor preferences
8.4.1. Editor settings
8.4.2. Font & Tabs
8.4.3. Text Colors
8.5. Choosing debugger preferences
8.6. Setting commands and key bindings
8.6.1. Opening the Customize IDE Commandswindow
8.6.2. Adding your own commands to the CodeWarrior IDE
8.6.3. Customizing keybindings
8.7. Customizing toolbars
8.7.1. Toolbar overview
8.7.2. Showing and hiding a toolbar
8.7.3. Modifying a toolbar
9. Configuring a Build Target
9.1. About configuring a build target
9.1.1. Configuration recommendations
9.1.2. Creating project stationery
9.2. Overview of the Target Settings window
9.2.1. Using the Target Settings window
9.3. Configuring general build target options
9.3.1. Configuring target settings
9.3.2. Configuring access paths
9.3.3. Configuring build extras
9.3.4. Configuring runtime settings
9.3.5. Configuring file mappings
9.3.6. Configuring source trees
9.3.7. Configuring the ARM target
9.4. Using the Equivalent Command Linetext box
9.5. Configuring assembler and compilerlanguage settings
9.5.1. Configuring the ARM assembler
9.5.2. Configuring the compilers
9.6. Configuring linker settings
9.6.1. Configuring the ARM linker
9.6.2. Configuring fromELF
9.7. Configuring editor settings
9.7.1. Custom Keywords
9.8. Configuring the debugger
9.8.1. Other Executables
9.8.2. Debugger Settings
9.8.3. Configuring the ARM Debugger
9.8.4. Configuring the ARM Runner
9.9. Configuring Miscellaneous settings
9.9.1. ARM Features
10. Using the CodeWarrior IDE with Version Control Systems
10.1. About version control systems
10.1.1. Commercially available VCS plug-ins
10.2. Activating VCS
10.2.1. VCS plug-in software
10.2.2. Activating VCS software
10.3. Using your VCS from the CodeWarriorIDE
10.3.1. Using the Version Control Login window
10.3.2. Performing common VCS operations
A. Running the CodeWarrior IDE from the Command Line
A.1. Using the CodeWarrior IDE from thecommand line
B. CodeWarrior IDE Installation and Preference Settings
B.1. The CodeWarrior IDE preferences directory
B.2. Using different versions of the CodeWarriorIDE
C. Perl Scripts
C.1. Perl software plug-ins
C.1.1. Installing Perl software plug-ins
C.2. Configuring your project for Perl
C.2.1. Configuring file mappings
C.2.2. Configuring a prefix file
C.3. Using Perl scripting
C.3.1. Adding Perl files to you project
C.3.2. Restrictions
C.3.3. Example
D. CodeWarrior IDE Reference
D.1. CodeWarrior IDE menu reference
D.1.1. File menu
D.1.2. Edit menu
D.1.3. View Menu
D.1.4. Search menu
D.1.5. Project menu
D.1.6. Debug menu
D.1.7. Data menu
D.1.8. Browser menu
D.1.9. Layout Menu
D.1.10. Window menu
D.1.11. Version Control System (VCS) menu
D.1.12. Help menu
D.1.13. Toolbar submenu
D.2. CodeWarrior IDE default key bindings
D.2.1. File menu
D.2.2. Edit menu
D.2.3. View menu
D.2.4. Search menu
D.2.5. Project menu
D.2.6. Window menu
D.2.7. Miscellaneous
D.2.8. Editor commands

List of Figures

2.1. The New dialog box
2.2. Add new file to project
2.3. Open dialog box
2.4. Group drop-down menu
2.5. Header Files drop-down menu in theproject window
2.6. Find and open file dialog box
2.7. Save Document As dialog box
2.8. Save document as
2.9. Unsaved changes alert
2.10. Revert to a previous file
2.11. The Compare Files window
2.12. Compare Files Setup window
2.13. Applied difference
2.14. Compare Folders Setup dialog box
2.15. Folder Compare Results window
2.16. Export project as dialog box
3.1. View tabs at the top of the projectwindow
3.2. Project window Files view
3.3. File Control context menu in theproject window
3.4. Example Link Order view
3.5. Example Targets view
3.6. New dialog box
3.7. Open dialog
3.8. Makefile Importer Wizard
3.9. Makefile importer summary
3.10. Interworking project
3.11. Add Thumb files
3.12. Interworking project Files view
3.13. Interworking project Targets view
3.14. File Mappings panel
3.15. Changing file mapping to use ThumbC compiler
3.16. Changed file mappings
3.17. Select Thumb initial state
3.18. Select ARM/Thumb interworking
3.19. Selecting the ATPCS Interworkingoption
3.20. Select the ARM librarian
3.21. Save a copy of project as dialog
3.22. Adding files to a project
3.23. Add files to targets dialog box
3.24. Create Group dialog
3.25. Rename group dialog
3.26. Expanding groups and subgroups
3.27. Moving a file
3.28. Remove file confirmation dialog
3.29. Synchronize modification dates
3.30. Project Inspector window for attributes
3.31. Project Inspector window for targets
3.32. Build target drop-down list
3.33. Targets view
3.34. Targets view tab
3.35. New Target dialog box
3.36. The target column
3.37. Project Inspector window for targets
3.38. Renaming a build target
3.39. Project window
3.40. Creating a new build target
3.41. Dragging a build target
3.42. Dependent build target
3.43. Adding files to the dependent buildtarget
3.44. Linking output from a dependent buildtarget
3.45. Building all build targets
3.46. Adding a subproject
3.47. Add subproject to build target dialog
3.48. Project with subproject
3.49. Subproject build target view
3.50. Selecting subproject build targetsfor building
3.51. Selecting subproject build targetsfor linking
3.52. Multiple build targets in the Linkorder view
3.53. Build Progress window
3.54. Link Order view
3.55. Remove Objects dialog box
3.56. File Mappings panel
3.57. Specifying batch file mappings
3.58. Target Settings panel
3.59. Setting the link order
3.60. MS-DOS Prompt Properties window.
4.1. Debug Info markers
4.2. ARM compiler Debug/Opt panel
4.3. The Run button
4.4. The Errors & Warnings messagewindow
4.5. Statement arrow pointing to an error
5.1. The editor window
5.2. The Marker drop-down menu
5.3. The Document Settings drop-down menu
5.4. Multiple panes in a window
5.5. The Functions drop-down menu
5.6. Add Marker dialog box
5.7. Example text file with a marker added
5.8. Remove Markers dialog box
5.9. Line Number dialog box
5.10. The Header Files drop-down menu
6.1. The Find and replace dialog box
6.2. Search Results window
6.3. The Find in Files dialog
6.4. The In Folders tab in the Find in Files Window
6.5. The In Projects tab in the Find in Files Window
6.6. The In Symbols tab in the Find inFiles Window
6.7. The In Files tab in the Find in FilesWindow
6.8. The Save File Set dialog
6.9. Remove File Sets dialog box
6.10. Regexp checkbox
7.1. Target settings panel
7.2. A Class browser view
7.3. The Classes pane
7.4. Member functions, data members, anddeclaration for class circle
7.5. Access filters drop-down list
7.6. Browser access filter icons
7.7. A Contents window
7.8. The Multi-class hierarchy window
7.9. Ancestor drop-down list
7.10. Go Back and Go Forward toolbar buttons
7.11. A Browser context menu for a function
7.12. Using symbol name completion
7.13. Inserting a function template
7.14. Symbol window for a multiply definedfunction
7.15. The Symbol window
7.16. New C++ Class: Name and Location
7.17. New C++ Class: Base Class and Methods
7.18. New C++ Class: Include Files
7.19. New C++ Class: Targets
7.20. New class summary
7.21. New Member Function: Member FunctionDeclaration
7.22. New Member Function: File Locations
7.23. New member function declaration summary
7.24. New Data Member wizard: Data Member Declaration
7.25. New Data Member wizard: File Locations
7.26. New data member summary
8.1. The IDE Preferences panel
8.2. Preferences Confirmation dialog box
8.3. Build Settings preference panel
8.4. IDE Extras preference panel
8.5. Plugin settings panel
8.6. Shielded Folders settings panel
8.7. Source Trees panel
8.8. Editor Settings preference panel
8.9. Font & Tabs preference panel
8.10. Text Coloring preference panel
8.11. Custom Keywords dialog box
8.12. Key Bindings panel
8.13. List of Edit commands
8.14. Configuring a new command
8.15. Mail selection command
8.16. Creating a new group
8.17. Selecting the quote key
8.18. New Key binding for the Quote key
8.19. Edit Keybinding dialog
8.20. The Project window toolbar
8.21. The editor window with hidden toolbar
8.22. Customize IDE Commands window
8.23. Dragging a toolbar element
9.1. Select build target
9.2. Selecting a settings panel
9.3. Settings Confirmation dialog box
9.4. Target Settings panel
9.5. Access Paths settings panel
9.6. Access paths detail
9.7. Select an Access Path dialog box
9.8. Build Extras settings panel
9.9. File Mappings panel
9.10. Source Trees panel
9.11. Example source path
9.12. ARM Target panel
9.13. Equivalent Command Line text box
9.14. ARM Assembler Target panel
9.15. ARM Assembler ATPCS panel
9.16. ARM Assembler Options panel
9.17. ARM Assembler Predefines panel
9.18. ARM Assembler Listing Control panel
9.19. ARM Assembler Extras panel
9.20. ARM compiler Target and Source panel
9.21. ARM compiler ATPCS panel
9.22. ARM compiler Warnings panel
9.23. ARM compiler Errors panel
9.24. ARM compiler Debug and optimizationpanel
9.25. ARM compiler Preprocessor panel
9.26. ARM Compiler Code Gen panel
9.27. ARM Compiler Extras panel
9.28. ARM linker Output panel
9.29. ARM Linker Options panel
9.30. ARM Linker Layout panel
9.31. ARM Linker Listings panel
9.32. ARM Linker Extras panel
9.33. ARM fromELF panel
9.34. Custom Keywords settings panel
9.35. Choose debugger panel
9.36. Armsd1 panel
9.37. Armsd2 panel
9.38. Arguments panel
9.39. ARM Features panel
10.1. The VCS settings panel
10.2. VCS Method pop-up list.
10.3. Checkout Status Column
10.4. VCS menu
10.5. VCS drop-down menu
C.1. File mappings configuration panel
C.2. Perl configuration panel
C.3. Adding Perl source to a project
D.1. VCS menu

Proprietary Notice

Words and logos marked with ® or ™ are registered trademarks or trademarksowned by ARM Limited, except as otherwise stated below in this proprietarynotice. Other brands and names mentioned herein may be the trademarksof their respective owners.

CodeWarrior ® and Metrowerks ® are registered trademarksof Metrowerks, Inc.

Neither the whole nor any part of the information containedin, or the product described in, this document may be adapted orreproduced in any material form except with the prior written permissionof the copyright holder.

The product described in this document is subject to continuousdevelopments and improvements. All particulars of the product andits use contained in this document are given by ARM in good faith.However, all warranties implied or expressed, including but notlimited to implied warranties of merchantability, or fitness forpurpose, are excluded.

This document is intended only to assist the reader in theuse of the product. ARM Limited shall not be liable for any lossor damage arising from the use of any information in this document,or any error or omission in such information, or any incorrect useof the product.


Year 2000 Conformance

The Products provided by Metrowerks under the License agreementprocess dates only to the extent that the Products use date dataprovided by the host or target operating system for date representationsused in internal processes, such as file modifications. Any Year2000 Compliance issues resulting from the operation of the Productsare therefore necessarily subject to the Year 2000 Compliance ofthe relevant host or target operating system. Metrowerks directsyou to the relevant statements of Microsoft Corporation, Sun Microsystems,Inc., Apple Computer, Inc., and other host or target operating systemsrelating to the Year 2000 Compliance of their operating systems.Except as expressly described above, the Products, in themselves,do not process date data and therefore do not implicate Year 2000Compliance issues.

Revision History
Revision A October1999 Release 1.0
Revision B March2000 Release 1.0.1
Revision C November2000 Release 1.1
Revision D November2001 Release 1.2
Copyright © 1999-2001 ARM Limited. All rights reserved. ARM DUI 0065D