source: rtems/doc/started/nextstep.t @ 34e0189a

4.104.114.84.95
Last change on this file since 34e0189a was 6449498, checked in by Joel Sherrill <joel.sherrill@…>, on 01/17/02 at 21:47:47

2001-01-17 Joel Sherrill <joel@…>

  • SUPPORT, LICENSE: New files.
  • Numerous files touched as part of merging the 4.5 branch onto the mainline development trunk and ensuring that the script that cuts snapshots and releases works on the documentation.
  • Property mode set to 100644
File size: 5.0 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 C/C++ 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 ITRON 3.0 API User's Guide} describes
48the RTEMS implementation of the ITRON 3.0 API.
49
50@item @b{RTEMS Network Supplement} provides information
51on the network services provided by RTEMS.
52
53@end itemize
54
55In addition, the following manuals from the GNU C/C++ Cross
56Compilation Toolset include information on run-time services
57available.
58
59@itemize @bullet
60@item @b{Cygnus C Support Library} describes the Standard
61C Library functionality provided by Newlib's libc.
62
63@item @b{Cygnus C Math Library} describes the Standard
64C Math Library functionality provided by Newlib's libm.
65
66@end itemize
67
68Finally, the RTEMS FAQ and mailing list archives are available
69at @uref{http://www.oarcorp.com}.
70
71There is a wealth of documentation available for RTEMS and
72the GNU tools supporting it.  If you run into something
73that is not clear or missing, bring it to our attention.
74
75Also, some of the RTEMS documentation is still under
76construction.  If you would like to contribute to this
77effort, please contact the RTEMS Team at
78@uref{mailto:rtems-users@@OARcorp.com, rtems-users@@OARcorp.com}.
79If you are interested in sponsoring the development of a new
80feature, BSP, device driver, port of an existing library, etc.,
81please contact @uref{mailto:sales@@OARcorp.com, sales@@OARcorp.com}.
82
83@section Writing an Application
84
85From an application author's perspective, RTEMS applications do not
86start at @code{main()}.  They begin execution at one or more
87application initialization task or thread and @code{main()} is
88owned by the Board Support Package.   Each API supported
89by RTEMS (Classic, POSIX, and ITRON) allows the user to configure
90a set of tasks that are created and started automatically
91during RTEMS initialization.  The RTEMS Automatic
92Configuration Generation (@code{confdefs.h}) scheme can be
93used to easily generate the configuration information for
94an application that starts with a single initialization task. 
95By convention, unless overridden, the default name of the
96initialization task varies based up API.
97
98@itemize @bullet
99@item @code{Init} - single Classic API Initialization Task
100
101@item @code{POSIX_Init} - single POSIX API Initialization Thread
102
103@item @code{ITRON_Init} - single ITRON API Initialization Task
104@end itemize
105
106See the Configuring a System chapter in the C User's Guide for
107more details.
108
109Regardless of the API used, when the initialization task executes,
110all non-networking device drivers are normally initialized and
111processor interrupts are enabled.  The initialization task then
112goes about its business of performing application specific
113initialization.  This often involves creating tasks and other
114system resources such as semaphores or message queues and allocating
115memory.  In the RTEMS examples and tests, the file @code{init.c} usually
116contains the initialization task.  Although not required, in
117most of the examples, the initialization task completes by
118deleting itself.
119
120As you begin to write RTEMS application code, you may be confused
121by the range of alternatives.  Supporting multiple tasking
122APIs can make the choices confusing.  Many application groups
123writing new code choose one of the APIs as their primary API
124and only use services from the others if nothing comparable
125is in their preferred one.  However, the support for multiple
126APIs is a powerful feature when integrating code from multiple
127sources.  You can write new code using POSIX services and
128still use services written in terms of the other APIs.
129Moreover, by adding support for yet another API, one could
130provide the infrastructure required to migrate from a
131legacy RTOS with a non-standard API to an API like POSIX.
132
133
Note: See TracBrowser for help on using the repository browser.