Changeset bb4b574 in rtems
- Timestamp:
- 04/25/00 13:15:14 (23 years ago)
- Branches:
- 4.10, 4.11, 4.8, 4.9, 5, master
- Children:
- 2ba8875
- Parents:
- 0765f9b
- Location:
- doc
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/Make.config
r0765f9b rbb4b574 5 5 # 6 6 7 RTEMS_VERSION=4.5-beta 1b7 RTEMS_VERSION=4.5-beta2 8 8 #DOC_INSTALL_BASE=/usr1/rtems/tmp/rtemsdoc-$(RTEMS_VERSION) 9 9 DOC_INSTALL_BASE=/home/httpd/html/rtems/rtemsdoc-$(RTEMS_VERSION) 10 10 # DOC_INSTALL_BASE=/home/httpd/html/rtems/doc/rtems 11 11 12 SRCDIR=/usr1/rtems/ rtemsdoc-work12 SRCDIR=/usr1/rtems/4.5-work/rtems-doc 13 13 14 14 BMENU=$(SRCDIR)/tools/bmenu/bmenu -
doc/common/setup.texi
r0765f9b rbb4b574 11 11 @c 12 12 13 @set RTEMS-RELEASE 4.5-beta 1b13 @set RTEMS-RELEASE 4.5-beta2 14 14 @set RTEMS-EDITION 1 15 @set RTEMS-VERSION 4.5-beta 1b16 @set RTEMS-UPDATE-DATE February 23 200017 @set RTEMS-UPDATE-MONTH February200015 @set RTEMS-VERSION 4.5-beta2 16 @set RTEMS-UPDATE-DATE April 13 2000 17 @set RTEMS-UPDATE-MONTH April 2000 18 18 19 19 @c -
doc/porting/interrupts.t
r0765f9b rbb4b574 194 194 @end example 195 195 196 If the CPU_HAS_SOFTWARE_INTERRUPT_STACK macro is set to TRUE, then RTEMS automatically allocates the stack memory in the initialization of the Interrupt Manager and the switch to that stack is performed in _ISR_Handleron the outermost interrupt. The _CPU_Interrupt_stack_low and _CPU_Interrupt_stack_high variables contain the addresses of the the lowest and highest addresses of the memory allocated for the interrupt stack. Although technically only one of these addresses is required to switch to the interrupt stack, by always providing both addresses, the port has more options avaialble to it without requiring modifications to the portable parts of the executive. Whether the stack grows up or down, this give the CPU dependent code the option of picking the version it wants to use.196 If the CPU_HAS_SOFTWARE_INTERRUPT_STACK macro is set to TRUE, then RTEMS automatically allocates the stack memory in the initialization of the Interrupt Manager and the switch to that stack is performed in @code{_ISR_Handler} on the outermost interrupt. The _CPU_Interrupt_stack_low and _CPU_Interrupt_stack_high variables contain the addresses of the the lowest and highest addresses of the memory allocated for the interrupt stack. Although technically only one of these addresses is required to switch to the interrupt stack, by always providing both addresses, the port has more options avaialble to it without requiring modifications to the portable parts of the executive. Whether the stack grows up or down, this give the CPU dependent code the option of picking the version it wants to use. 197 197 198 198 @example … … 284 284 285 285 We put the actual user ISR address in _ISR_vector_table. This will be 286 used by the _ISR_Handlerso the user gets control.286 used by the @code{_ISR_Handler} so the user gets control. 287 287 288 288 @example … … 313 313 @subsection Interrupt Dispatching 314 314 315 The _ISR_Handlerroutine provides the RTEMS interrupt management.315 The @code{_ISR_Handler} routine provides the RTEMS interrupt management. 316 316 317 317 @example … … 327 327 328 328 Also note that the exact order is to a large extent flexible. Hardware 329 will dictate a sequence for a certain subset of _ISR_Handlerwhile329 will dictate a sequence for a certain subset of @code{_ISR_Handler} while 330 330 requirements for setting the RTEMS state variables that indicate the 331 interrupt nest level (XX) and dispatching disable level (XXX) will also 331 interrupt nest level (@code{_ISR_Nest_level}) and dispatching disable 332 level (@code{_Thread_Dispatch_disable_level}) will also 332 333 restrict the allowable order. 333 334 334 Upon entry to the "common" _ISR_Handler, the vector number must be 335 Upon entry to @code{_ISR_Handler}, @code{_Thread_Dispatch_disable_level} is 336 zero if the interrupt occurred while outside an RTEMS service call. 337 Conversely, it will be non-zero if interrupting an RTEMS service 338 call. Thus, @code{_Thread_Dispatch_disable_level} will always be 339 greater than or equal to @code{_ISR_Nest_level} and not strictly 340 equal. 341 342 Upon entry to the "common" @code{_ISR_Handler}, the vector number must be 335 343 available. On some CPUs the hardware puts either the vector number or the 336 344 offset into the vector table for this ISR in a known place. If the … … 338 346 RTEMS for this port will contain a set of distinct interrupt entry points 339 347 which somehow place the vector number in a known place (which is safe if 340 another interrupt nests this one) and branches to _ISR_Handler.348 another interrupt nests this one) and branches to @code{_ISR_Handler}. 341 349 342 350 @example … … 362 370 363 371 if ( !_ISR_Signals_to_thread_executing ) 364 _ISR_Signals_to_thread_executing = FALSE;365 372 goto the label "exit interrupt (simple case)" 373 374 _ISR_Signals_to_thread_executing = FALSE; 366 375 367 376 call _Thread_Dispatch() or prepare to return to _ISR_Dispatch … … 373 382 return from interrupt 374 383 @end example 384 385 Some ports have the special routine @code{_ISR_Dispatch} because 386 the CPU has a special "interrupt mode" and RTEMS must switch back 387 to the task stack and/or non-interrupt mode before invoking 388 @code{_Thread_Dispatch}. For example, consider the MC68020 where 389 upon return from the outermost interrupt, the CPU must switch 390 from the interrupt stack to the master stack before invoking 391 @code{_Thread_Dispatch}. @code{_ISR_Dispatch} is the special port 392 specific wrapper for @code{_Thread_Dispatch} used in this case. 375 393 376 394 @subsection ISR Invoked with Frame Pointer -
doc/porting/prioritybitmap.t
r0765f9b rbb4b574 28 28 routines is used to maintain and search the bit map array. 29 29 30 When manipulating the bitmap array, RTEMS internally divides the 31 8 bits of the task priority into "major" and "minor" components. 32 The most significant 4 bits are the major component, while the least 33 significant are the minor component. The major component of a priority 34 value is used to determine which 16-bit wide entry in the 35 @code{_Priority_Bit_map} array is associated with this priority. 36 Each element in the @code{_Priority_Bit_map} array has a bit 37 in the @code{_Priority_Major_bit_map} associated with it. 38 That bit is cleared when all of the bits in a particular 39 @code{_Priority_Bit_map} array entry are zero. 40 41 The minor component of a priority is used to determine 42 specifically which bit in @code{_Priority_Bit_map[major]} 43 indicates whether or not there is a ready to execute task 44 at the priority. 45 46 30 47 @section _Priority_Bit_map_control Type 31 48 32 The _Priority_Bit_map_Controltype is the fundamental data type of the49 The @code{_Priority_Bit_map_Control} type is the fundamental data type of the 33 50 priority bit map array used to determine which priorities have ready 34 51 tasks. This type may be either 16 or 32 bits wide although only the 16 … … 42 59 43 60 The _CPU_Bitfield_Find_first_bit routine sets _output to the bit number of 44 the first bit set in _value. _valueis of CPU dependent type45 Priority_Bit_map_control. A stub version of this routine is as follows:61 the first bit set in @code{_value}. @code{_value} is of CPU dependent type 62 @code{Priority_Bit_map_control}. A stub version of this routine is as follows: 46 63 47 64 @example … … 51 68 @} 52 69 @end example 70 71 53 72 54 73 There are a number of variables in using a "find first bit" type … … 70 89 Cases (2),(3), (4) are handled by the macros _CPU_Priority_mask() and 71 90 _CPU_Priority_bits_index(). These three form a set of routines which must 72 logically operate together. Bits in the _valueare set and cleared based91 logically operate together. Bits in the @code{_value} are set and cleared based 73 92 on masks built by CPU_Priority_mask(). The basic major and minor values 74 93 calculated by _Priority_Major() and _Priority_Minor() are "massaged" by … … 155 174 @section Bit Scan Support 156 175 157 The _CPU_Priority_bits_index routine translates the bit numbers returned by _CPU_Bitfield_Find_first_bit() into something suitable for use as a major or minor component of a priority. For example, the find first bit routine may number the bits in a way that is difficult to map into the major and minor components of the priority. This routine allows that unwieldy form to be converted into something easier to process. See the discussion of that routine for more details. 176 The @code{_CPU_Priority_bits_index} routine translates the bit numbers 177 returned by @code{_CPU_Bitfield_Find_first_bit()} into something 178 suitable for use as a major or minor component of a priority. 179 The find first bit routine may number the bits in a 180 way that is difficult to map into the major and minor components 181 of the priority. For example, when finding the first bit set in 182 the value 0x8000, a CPU may indicate that bit 15 or 16 is set 183 based on whether the least significant bit is "zero" or "one". 184 Similarly, a CPU may only scan 32-bit values and consider the 185 most significant bit to be bit zero or one. In this case, this 186 would be bit 16 or 17. 187 188 This routine allows that unwieldy form to be converted 189 into a normalized form that is easier to process and use 190 as an index. 158 191 159 192 @example -
doc/porting/taskcontext.t
r0765f9b rbb4b574 170 170 @end example 171 171 172 Th is is_fpparameter is TRUE if the thread is to be a floating point172 The @code{is_fp} parameter is TRUE if the thread is to be a floating point 173 173 thread. This is typically only used on CPUs where the FPU may be easily 174 174 disabled by software such as on the SPARC where the PSR contains an enable … … 177 177 a deferred floating point context switch is safe. 178 178 179 The @code{_stack_base} parameter is the base address of the memory area 180 allocated for use as the task stack. It is critical to understand that 181 @code{_stack_base} may not be the starting stack pointer for this task. 182 On CPU families where the stack grows from high addresses to lower ones, 183 (i.e. @code{CPU_STACK_GROWS_UP} is FALSE) the starting stack point 184 will be near the end of the stack memory area or close to 185 @code{_stack_base} + @code{_size}. Even on CPU families where the stack 186 grows from low to higher addresses, there may be some required 187 outermost stack frame that must be put at the address @code{_stack_base}. 188 189 The @code{_size} parameter is the requested size in bytes of the stack for 190 this task. It is assumed that the memory area @code{_stack_base} 191 is of this size. 192 179 193 XXX explain other parameters and check prototype 180 194 … … 189 203 Context_Control *heir 190 204 ); 205 @end example 206 207 This routine begins by saving the current state of the 208 CPU (i.e. the context) in the context area at @code{run}. 209 Then the routine should load the CPU context pointed to 210 by @code{heir}. Loading the new context will cause a 211 branch to its task code, so the task that invoked 212 @code{_CPU_Context_switch} will not run for a while. 213 When, eventually, a context switch is made to load 214 context from @code{*run} again, this task will resume 215 and @code{_CPU_Context_switch} will return to its caller. 216 217 Care should be exercise when writing this routine. All 218 registers assumed to be preserved across subroutine calls 219 must be preserved. These registers may be saved in 220 the task's context area or on its stack. However, the 221 stack pointer and address to resume executing the task 222 at must be included in the context (normally the subroutine 223 return address to the caller of @code{_Thread_Dispatch}. 224 The decision of where to store the task's context is based 225 on numerous factors including the capabilities of 226 the CPU architecture itself and simplicity as well 227 as external considerations such as debuggers wishing 228 to examine a task's context. In this case, it is 229 often simpler to save all data in the context area. 230 231 Also there may be special considerations 232 when loading the stack pointers or interrupt level of the 233 incoming task. Independent of CPU specific considerations, 234 if some context is saved on the task stack, then the porter 235 must ensure that the stack pointer is adjusted @b{BEFORE} 236 to make room for this context information before the 237 information is written. Otherwise, an interrupt could 238 occur writing over the context data. The following is 239 an example of an @b{INCORRECT} sequence: 240 241 @example 242 save part of context beyond current top of stack 243 interrupt pushes context -- overwriting written context 244 interrupt returns 245 adjust stack pointer 191 246 @end example 192 247 -
doc/started/gdb.t
r0765f9b rbb4b574 67 67 If any files are found with the .rej extension, a patch has been rejected. 68 68 This should not happen with a good patch file. 69 70 To see the files that have been modified use the sequence:71 72 @example73 cd tools/@value{GDB-UNTAR}74 find . -name "*.orig" -print75 @end example76 77 The files that are found, have been modified by the patch file.78 69 79 70 @end ifset -
doc/started/intro.t
r0765f9b rbb4b574 128 128 @subsection RTEMS Mailing List 129 129 130 rtems- list@@OARcorp.com130 rtems-users@@OARcorp.com 131 131 132 This mailing list is dedicated to discussion of issues related 133 to RTEMS. If you have questions about RTEMS, wish to make 134 suggestions, or just want to pick up hints, this is a good 135 list to subscribe to. Subscribe by sending a message with 136 the one line "subscribe" to rtems-list-request@@OARcorp.com. 132 This mailing list is dedicated to the discussion of issues related 133 to RTEMS, including GNAT/RTEMS. If you have questions about RTEMS, 134 wish to make suggestions, or just want to pick up hints, this is a 135 good list to subscribe to. Subscribe by sending an empty mail 136 message to rtems-users-subscribe@@OARcorp.com. Messages sent 137 to rtems-users@@OARcorp.com are posted to the list. 137 138 138 139 @subsection CrossGCC Mailing List -
doc/started/sample.t
r0765f9b rbb4b574 37 37 @example 38 38 cd tools/hello_world_c 39 gmake39 make 40 40 @end example 41 42 NOTE: GNU make is the preferred @code{make} utility. Other @code{make} 43 implementations may work but all testing is done with GNU make. 41 44 42 45 If no errors are detected during the sample application build, it is … … 51 54 52 55 @example 53 tools/hello_world_c/o- <BOARD_SUPPORT_PACKAGE>/<filename>.exe56 tools/hello_world_c/o-optimize/<filename>.exe 54 57 @end example 55 58 -
doc/started_ada/intro.t
r0765f9b rbb4b574 128 128 @subsection RTEMS Mailing List 129 129 130 rtems- list@@OARcorp.com130 rtems-users@@OARcorp.com 131 131 132 This mailing list is dedicated to discussion of issues related 133 to RTEMS. If you have questions about RTEMS, wish to make 134 suggestions, or just want to pick up hints, this is a good 135 list to subscribe to. Subscribe by sending a message with 136 the one line "subscribe" to rtems-list-request@@OARcorp.com. 132 This mailing list is dedicated to the discussion of issues related 133 to RTEMS, including GNAT/RTEMS. If you have questions about RTEMS, 134 wish to make suggestions, or just want to pick up hints, this is a 135 good list to subscribe to. Subscribe by sending an empty mail 136 message to rtems-users-subscribe@@OARcorp.com. Messages sent 137 to rtems-users@@OARcorp.com are posted to the list. 137 138 138 139 @subsection CrossGCC Mailing List -
doc/started_ada/sample.t
r0765f9b rbb4b574 33 33 @example 34 34 cd tools/hello_world_ada 35 gmake -f Makefile.<BOARD_SUPPORT_PACKAGE>35 make -f Makefile.<BOARD_SUPPORT_PACKAGE> 36 36 @end example 37 38 NOTE: GNU make is the preferred @code{make} utility. Other @code{make} 39 implementations may work but all testing is done with GNU make. 37 40 38 41 If the BSP specific modifications to the Makefile were correct and … … 48 51 49 52 @example 50 tools/hello_world_ada/o- <BOARD_SUPPORT_PACKAGE>/<filename>.exe53 tools/hello_world_ada/o-optimize/<filename>.exe 51 54 @end example 52 55 -
doc/user/sem.t
r0765f9b rbb4b574 194 194 195 195 @item @code{@value{RPREFIX}SIMPLE_BINARY_SEMAPHORE} - restrict values to 196 0 and 1 and do not allow nested access.196 0 and 1, do not allow nested access, allow deletion of locked semaphore. 197 197 198 198 @item @code{@value{RPREFIX}NO_INHERIT_PRIORITY} - do not use priority … … 453 453 454 454 @item @code{@value{RPREFIX}SIMPLE_BINARY_SEMAPHORE} - restrict values to 455 0 and 1 and do not allow nested access.455 0 and 1, block on nested access, allow deletion of locked semaphore. 456 456 457 457 @item @code{@value{RPREFIX}NO_INHERIT_PRIORITY} - do not use priority
Note: See TracChangeset
for help on using the changeset viewer.