[417fcc73] | 1 | @c |
---|
[6449498] | 2 | @c COPYRIGHT (c) 1988-2002. |
---|
[417fcc73] | 3 | @c On-Line Applications Research Corporation (OAR). |
---|
| 4 | @c All rights reserved. |
---|
| 5 | @c |
---|
| 6 | @c $Id$ |
---|
| 7 | @c |
---|
| 8 | |
---|
| 9 | @chapter Introduction |
---|
| 10 | |
---|
[bdec2709] | 11 | The purpose of this document is to guide you through the process of |
---|
| 12 | installing a GNU cross development environment to use with RTEMS. |
---|
| 13 | |
---|
[417fcc73] | 14 | If you are already familiar with the concepts behind a cross compiler and |
---|
[00be3747] | 15 | have a background in Unix, these instructions should provide the bare |
---|
[417fcc73] | 16 | essentials for performing a setup of the following items: |
---|
| 17 | |
---|
[6113b3a] | 18 | @itemize @bullet |
---|
[48cd0b8e] | 19 | @item GNU Cross Compilation Tools for RTEMS on your build-host system |
---|
[6449498] | 20 | @item RTEMS OS for the target |
---|
[6113b3a] | 21 | @item GDB Debugger |
---|
| 22 | @end itemize |
---|
[417fcc73] | 23 | |
---|
[5741c94] | 24 | The remainder of this chapter provides background information on real-time |
---|
[fdd6a26] | 25 | embedded systems and cross development and an overview of other |
---|
| 26 | resources of interest on the Internet. If you are not familiar with |
---|
[00be3747] | 27 | real-time embedded systems or the other areas, please read those sections. |
---|
[fdd6a26] | 28 | These sections will help familiarize you with the |
---|
[5741c94] | 29 | types of systems RTEMS is designed to be used in and the cross development |
---|
| 30 | process used when developing RTEMS applications. |
---|
| 31 | |
---|
| 32 | @section Real-Time Embedded Systems |
---|
| 33 | |
---|
| 34 | Real-time embedded systems are found in practically every facet of our |
---|
| 35 | everyday lives. Today's systems range from the common telephone, automobile |
---|
| 36 | control systems, and kitchen appliances to complex air traffic control |
---|
[6449498] | 37 | systems, military weapon systems, and production line control including |
---|
[5741c94] | 38 | robotics and automation. However, in the current climate of rapidly changing |
---|
| 39 | technology, it is difficult to reach a consensus on the definition of a |
---|
| 40 | real-time embedded system. Hardware costs are continuing to rapidly decline |
---|
| 41 | while at the same time the hardware is increasing in power and functionality. |
---|
| 42 | As a result, embedded systems that were not considered viable two years ago |
---|
| 43 | are suddenly a cost effective solution. In this domain, it is not uncommon |
---|
| 44 | for a single hardware configuration to employ a variety of architectures and |
---|
| 45 | technologies. Therefore, we shall define an embedded system as any computer |
---|
| 46 | system that is built into a larger system consisting of multiple technologies |
---|
| 47 | such as digital and analog electronics, mechanical devices, and sensors. |
---|
| 48 | |
---|
| 49 | Even as hardware platforms become more powerful, most embedded systems are |
---|
| 50 | critically dependent on the real-time software embedded in the systems |
---|
| 51 | themselves. Regardless of how efficiently the hardware operates, the |
---|
| 52 | performance of the embedded real-time software determines the success of the |
---|
| 53 | system. As the complexity of the embedded hardware platform grows, so does |
---|
| 54 | the size and complexity of the embedded software. Software systems must |
---|
| 55 | routinely perform activities which were only dreamed of a short time ago. |
---|
| 56 | These large, complex, real-time embedded applications now commonly contain |
---|
| 57 | one million lines of code or more. |
---|
| 58 | |
---|
| 59 | Real-time embedded systems have a complex set of characteristics that |
---|
| 60 | distinguish them from other software applications. Real-time embedded |
---|
| 61 | systems are driven by and must respond to real world events while adhering to |
---|
| 62 | rigorous requirements imposed by the environment with which they interact. |
---|
| 63 | The correctness of the system depends not only on the results of |
---|
| 64 | computations, but also on the time at which the results are produced. The |
---|
| 65 | most important and complex characteristic of real-time application systems is |
---|
| 66 | that they must receive and respond to a set of external stimuli within rigid |
---|
| 67 | and critical time constraints. |
---|
| 68 | |
---|
| 69 | A single real-time application can be composed of both soft and hard |
---|
| 70 | real-time components. A typical example of a hard real-time system is a |
---|
| 71 | nuclear reactor control system that must not only detect failures, but must |
---|
| 72 | also respond quickly enough to prevent a meltdown. This application also has |
---|
| 73 | soft real-time requirements because it may involve a man-machine interface. |
---|
| 74 | Providing an interactive input to the control system is not as critical as |
---|
[6449498] | 75 | setting off an alarm to indicate a failure condition. However, the |
---|
[5741c94] | 76 | interactive system component must respond within an acceptable time limit to |
---|
| 77 | allow the operator to interact efficiently with the control system. |
---|
| 78 | |
---|
| 79 | @section Cross Development |
---|
| 80 | |
---|
| 81 | Today almost all real-time embedded software systems are developed in a |
---|
| 82 | @b{cross development} environment using cross development tools. In the cross |
---|
| 83 | development environment, software development activities are typically |
---|
[6449498] | 84 | performed on one computer system, the @b{build-host} system, while the result of the |
---|
[5741c94] | 85 | development effort (produced by the cross tools) is a software system that |
---|
| 86 | executes on the @b{target} platform. The requirements for the target platform are |
---|
| 87 | usually incompatible and quite often in direct conflict with the requirements |
---|
[6449498] | 88 | for the build-host. Moreover, the target hardware is often custom designed for a |
---|
[5741c94] | 89 | particular project. This means that the cross development toolset must allow |
---|
| 90 | the developer to customize the tools to address target specific run-time |
---|
| 91 | issues. The toolset must have provisions for board dependent initialization |
---|
| 92 | code, device drivers, and error handling code. |
---|
| 93 | |
---|
[6449498] | 94 | The build-host computer is optimized to support the code development cycle with |
---|
[5741c94] | 95 | support for code editors, compilers, and linkers requiring large disk drives, |
---|
[6449498] | 96 | user development windows, and multiple developer connections. Thus the build-host |
---|
| 97 | computer is typically a traditional UNIX workstation such as those available |
---|
[5741c94] | 98 | from SUN or Silicon Graphics, or a PC running either a version of MS-Windows |
---|
[6449498] | 99 | or UNIX. The build-host system may also be required to execute |
---|
| 100 | office productivity applications to allow the software developer |
---|
| 101 | to write documentation, make presentations, or track the project's |
---|
| 102 | progress using a project management tool. This necessitates that the |
---|
| 103 | build-host computer be general purpose with resources such as a |
---|
| 104 | thirty-two or sixty-four bit processor, large amounts of |
---|
[5741c94] | 105 | RAM, a monitor, mouse, keyboard, hard and floppy disk drives, CD-ROM drive, |
---|
| 106 | and a graphics card. It is likely that the system will be multimedia capable |
---|
| 107 | and have some networking capability. |
---|
| 108 | |
---|
| 109 | Conversely, the target platform generally has limited traditional computer |
---|
| 110 | resources. The hardware is designed for the particular functionality and |
---|
| 111 | requirements of the embedded system and optimized to perform those tasks |
---|
[6449498] | 112 | effectively. Instead of hard drives and keyboards, it is composed of |
---|
[5741c94] | 113 | sensors, relays, and stepper motors. The per-unit cost of the target platform |
---|
| 114 | is typically a critical concern. No hardware component is included without |
---|
| 115 | being cost justified. As a result, the processor of the target system is |
---|
[6449498] | 116 | often from a different processor family than that of the build-host system and |
---|
[5741c94] | 117 | usually has lower performance. In addition to the processor families |
---|
[6449498] | 118 | designed only for use in embedded systems, there are versions of nearly every |
---|
| 119 | general-purpose processor specifically tailored for real-time embedded |
---|
[5741c94] | 120 | systems. For example, many of the processors targeting the embedded market |
---|
| 121 | do not include hardware floating point units, but do include peripherals such |
---|
| 122 | as timers, serial controllers, or network interfaces. |
---|
| 123 | |
---|
[fdd6a26] | 124 | @section Resources on the Internet |
---|
[5741c94] | 125 | |
---|
[fdd6a26] | 126 | This section describes various resources on the Internet which are of |
---|
| 127 | use to RTEMS users. |
---|
| 128 | |
---|
[6449498] | 129 | @c |
---|
| 130 | @c Online Tool Documentation |
---|
| 131 | @c |
---|
| 132 | |
---|
| 133 | @subsection Online Tool Documentation |
---|
| 134 | |
---|
| 135 | Each of the tools in the GNU development suite comes with documentation. |
---|
| 136 | It is in the reader's and tool maintainers' interest that one read the |
---|
| 137 | documentation before posting a problem to a mailing list or news group. |
---|
| 138 | The RTEMS Project provides formatted documentation for the primary |
---|
| 139 | tools in the cross development toolset including BINUTILS, GCC, |
---|
| 140 | NEWLIB, and GDB at |
---|
| 141 | @uref{http://www.oarcorp.com/rtemsdoc-4.5.0, http://www.oarcorp.com/rtemsdoc-4.5.0}. |
---|
| 142 | |
---|
| 143 | Much of the documentation is available at other sites on the Internet. |
---|
| 144 | The following is a list of URLs where one can find HTML versions of |
---|
| 145 | the GNU manuals: |
---|
| 146 | |
---|
| 147 | @table @b |
---|
| 148 | |
---|
| 149 | @item Free Software Foundation |
---|
| 150 | @uref{http://www.gnu.org/manual/manual.html, http://www.gnu.org/manual/manual.html} |
---|
| 151 | |
---|
| 152 | @item Delorie Software |
---|
| 153 | @uref{http://www.delorie.com/gnu/docs, http://www.delorie.com/gnu/docs} |
---|
| 154 | |
---|
| 155 | @end table |
---|
| 156 | |
---|
| 157 | |
---|
[fdd6a26] | 158 | @subsection RTEMS Mailing List |
---|
| 159 | |
---|
[bf31efd] | 160 | @uref{mailto:@value{RTEMSUSERS},@value{RTEMSUSERS}} |
---|
[bb4b574] | 161 | |
---|
| 162 | This mailing list is dedicated to the discussion of issues related |
---|
| 163 | to RTEMS, including GNAT/RTEMS. If you have questions about RTEMS, |
---|
| 164 | wish to make suggestions, or just want to pick up hints, this is a |
---|
[6449498] | 165 | good list to monitor. Subscribe by sending an empty mail message to |
---|
[bf31efd] | 166 | @uref{mailto:@value{RTEMSUSERSSUBSCRIBE},@value{RTEMSUSERSSUBSCRIBE}}. |
---|
| 167 | Messages sent to @uref{mailto:@value{RTEMSUSERS},@value{RTEMSUSERS}} |
---|
[6449498] | 168 | are posted to the list. |
---|
[fdd6a26] | 169 | |
---|
| 170 | @subsection CrossGCC Mailing List |
---|
| 171 | |
---|
[6449498] | 172 | @uref{mailto:crossgcc@@sources.redhat.com,crossgcc@@sources.redhat.com} |
---|
[fdd6a26] | 173 | |
---|
| 174 | This mailing list is dedicated to the use of the GNU tools in |
---|
| 175 | cross development environments. Most of the discussions |
---|
[6449498] | 176 | focus on embedded issues. Information on subscribing |
---|
| 177 | to this mailing list is included in the |
---|
| 178 | @uref{http://www.objsw.com/CrossGCC/,CrossGCC FAQ}. |
---|
[fdd6a26] | 179 | |
---|
[6449498] | 180 | The CrossGCC FAQ as well as a number of patches and utilities |
---|
[fdd6a26] | 181 | of interest to cross development system users are available |
---|
[6449498] | 182 | at @uref{ftp://ftp.cygnus.com/pub/embedded/crossgcc}. |
---|
[fdd6a26] | 183 | |
---|
[adee5979] | 184 | @subsection GCC Mailing Lists |
---|
[fdd6a26] | 185 | |
---|
| 186 | |
---|
[6449498] | 187 | The GCC Project is hosted at @uref{http://gcc.gnu.org,http://gcc.gnu.org}. |
---|
| 188 | They maintain multiple mailing lists that are described at the web site |
---|
| 189 | along with subscription information. |
---|
[417fcc73] | 190 | |
---|