source: rtems/doc/started/nextstep.t @ 11be37d

4.115
Last change on this file since 11be37d was 11be37d, checked in by Joel Sherrill <joel.sherrill@…>, on 06/17/10 at 18:45:36

2010-06-17 Joel Sherrill <joel.sherrill@…>

  • Makefile.am, configure.ac, index.html.in, develenv/direct.t, posix_users/gen_size_report, started/nextstep.t, started_ada/buildada.t, user/conf.t, user/object.t: Remove ITRON API.
  • itron3.0/.cvsignore, itron3.0/Makefile.am, itron3.0/config.t, itron3.0/eventflags.t, itron3.0/fixedblock.t, itron3.0/gen_all, itron3.0/gen_section, itron3.0/gen_status_shell, itron3.0/interrupt.t, itron3.0/itron.texi, itron3.0/mailbox.t, itron3.0/memorypool.t, itron3.0/msgbuffer.t, itron3.0/network.t, itron3.0/preface.texi, itron3.0/rendezvous.t, itron3.0/semaphore.t, itron3.0/stamp-vti, itron3.0/status.t, itron3.0/task.t, itron3.0/tasksync.t, itron3.0/time.t, itron3.0/version.texi: Removed.
  • Property mode set to 100644
File size: 5.7 KB
Line 
1@c
2@c
3@c  COPYRIGHT (c) 1988-2002.
4@c  On-Line Applications Research Corporation (OAR).
5@c  All rights reserved.
6@c
7@c  $Id$
8@c
9
10@chapter Where To Go From Here
11
12At this point, you should have successfully installed a
13GNU Cross Compilation Tools for RTEMS on your host system
14as well as the RTEMS OS for the target host.  You should
15have successfully linked the "hello world" program. You
16may even have downloaded the executable to that target
17and run it.  What do you do next?
18
19The answer is that it depends.  You may be interested in
20writing an application that uses one of the multiple
21APIs supported by RTEMS.  You may need to investigate the
22network or filesystem support in RTEMS.  The common
23thread is that you are largely finished with this
24manual and ready to move on to others.
25
26Whether or not you decide to dive in now and write
27application code or read some documentation first,
28this chapter is for you.  The first section provides
29a quick roadmap of some of the RTEMS documentation.
30The next section provides a brief overview of the
31RTEMS application structure.
32
33@section Documentation Overview
34
35When writing RTEMS applications, you should find the
36following manuals useful because they define the
37calling interface to many of the services provided
38by RTEMS:
39
40@itemize @bullet
41@item @b{RTEMS Applications C User's Guide} describes the
42Classic RTEMS API based on the RTEID specification.
43
44@item @b{RTEMS POSIX API User's Guide} describes the
45RTEMS POSIX API that is based on the POSIX 1003.1b API.
46
47@item @b{RTEMS Network Supplement} provides information
48on the network services provided by RTEMS.
49
50@end itemize
51
52In addition, the following manuals from the GNU Cross
53Compilation Toolset include information on run-time services
54available.
55
56@itemize @bullet
57@item @b{Cygnus C Support Library} describes the Standard
58C Library functionality provided by Newlib's libc.
59
60@item @b{Cygnus C Math Library} describes the Standard
61C Math Library functionality provided by Newlib's libm.
62
63@end itemize
64
65Finally, the RTEMS FAQ and mailing list archives are available
66at @uref{@value{RTEMSHTTPURL}}.
67
68There is a wealth of documentation available for RTEMS and
69the GNU tools supporting it.  If you run into something
70that is not clear or missing, bring it to our attention.
71
72Also, some of the RTEMS documentation is still under
73construction.  If you would like to contribute to this
74effort, please contact the RTEMS Team at
75@uref{mailto:@value{RTEMSUSERS}, @value{RTEMSUSERS}}.
76If you are interested in sponsoring the development of a new
77feature, BSP, device driver, port of an existing library, etc.,
78please contact one of the RTEMS Service Providers listed
79at @uref{@value{RTEMSHTTPURL}/support.html,@value{RTEMSHTTPURL}/support.html}.
80
81@section Writing an Application
82
83From an application author's perspective, the structure of
84an RTEMS application is very familiar.  In POSIX language,
85RTEMS provides a single process, multi-threaded run-time
86environment.  However there are two important things that are
87different from a standard UNIX hosted program.
88
89First, the application developer must provide configuration
90information for RTEMS.  This configuration information
91includes limits on the maximum number of various OS resources
92available and networking configuration among other things.
93See the @b{Configuring a System} in the
94@b{RTEMS Applications C User's Guide} for more details.
95
96Second, RTEMS applications may or may not start at
97@code{main()}.  Applications begin execution at
98one or more user configurable application
99initialization tasks or threads.  It is possible
100to configure an application to start with a
101single thread that whose entry point is @code{main()}.
102
103Each API supported by RTEMS (Internal, Classic, and POSIX)
104allows the user to configure a set of one or more tasks
105that are created and started automatically
106during RTEMS initialization.  The RTEMS Automatic
107Configuration Generation (@code{confdefs.h}) scheme can be
108used to easily generate the configuration information for
109an application that starts with a single initialization task. 
110By convention, unless overridden, the default name of the
111initialization task varies based up API.
112
113@itemize @bullet
114@item @code{Init} - single Classic API Initialization Task
115
116@item @code{POSIX_Init} - single POSIX API Initialization Thread
117@end itemize
118
119Regardless of the API used, when the initialization task executes,
120all non-networking device drivers are normally initialized,
121processor interrupts are enabled, and any C++ global constructors
122have been run.  The initialization task then goes about its
123business of performing application specific initialization which
124will include initializing the networking subsystem if it is to be
125used.  The application initialization may also involve creating
126tasks and other system resources such as semaphores or message queues
127and allocating memory.  In the RTEMS examples and tests, the
128file @code{init.c} usually contains the initialization task.  Although
129not required, in most of the examples, the initialization task
130completes by deleting itself.
131
132As you begin to write RTEMS application code, you may be confused
133by the range of alternatives.  Supporting multiple tasking
134APIs can make the choices confusing.  Many application groups
135writing new code choose one of the APIs as their primary API
136and only use services from the others if nothing comparable
137is in their preferred one.  However, the support for multiple
138APIs is a powerful feature when integrating code from multiple
139sources.  You can write new code using POSIX services and
140still use services written in terms of the other APIs.
141Moreover, by adding support for yet another API, one could
142provide the infrastructure required to migrate from a
143legacy RTOS with a non-standard API to an API like POSIX.
144
145
Note: See TracBrowser for help on using the repository browser.