1 | @c |
---|
2 | @c COPYRIGHT (c) 1988-2002. |
---|
3 | @c On-Line Applications Research Corporation (OAR). |
---|
4 | @c All rights reserved. |
---|
5 | @c |
---|
6 | @c $Id$ |
---|
7 | @c |
---|
8 | |
---|
9 | @chapter Board Support Packages |
---|
10 | |
---|
11 | @section Introduction |
---|
12 | |
---|
13 | An RTEMS Board Support Package (BSP) must be designed |
---|
14 | to support a particular processor and target board combination. |
---|
15 | This chapter presents a discussion of XXX specific BSP |
---|
16 | issues. For more information on developing a BSP, refer to the |
---|
17 | chapter titled Board Support Packages in the RTEMS |
---|
18 | Applications User's Guide. |
---|
19 | |
---|
20 | @section System Reset |
---|
21 | |
---|
22 | An RTEMS based application is initiated or |
---|
23 | re-initiated when the XXX processor is reset. When the |
---|
24 | XXX is reset, the processor performs the following actions: |
---|
25 | |
---|
26 | @itemize @bullet |
---|
27 | @item The tracing bits of the status register are cleared to |
---|
28 | disable tracing. |
---|
29 | |
---|
30 | @item The supervisor interrupt state is entered by setting the |
---|
31 | supervisor (S) bit and clearing the master/interrupt (M) bit of |
---|
32 | the status register. |
---|
33 | |
---|
34 | @item The interrupt mask of the status register is set to |
---|
35 | level 7 to effectively disable all maskable interrupts. |
---|
36 | |
---|
37 | @item The vector base register (VBR) is set to zero. |
---|
38 | |
---|
39 | @item The cache control register (CACR) is set to zero to |
---|
40 | disable and freeze the processor cache. |
---|
41 | |
---|
42 | @item The interrupt stack pointer (ISP) is set to the value |
---|
43 | stored at vector 0 (bytes 0-3) of the exception vector table |
---|
44 | (EVT). |
---|
45 | |
---|
46 | @item The program counter (PC) is set to the value stored at |
---|
47 | vector 1 (bytes 4-7) of the EVT. |
---|
48 | |
---|
49 | @item The processor begins execution at the address stored in |
---|
50 | the PC. |
---|
51 | @end itemize |
---|
52 | |
---|
53 | @section Processor Initialization |
---|
54 | |
---|
55 | The address of the application's initialization code |
---|
56 | should be stored in the first vector of the EVT which will allow |
---|
57 | the immediate vectoring to the application code. If the |
---|
58 | application requires that the VBR be some value besides zero, |
---|
59 | then it should be set to the required value at this point. All |
---|
60 | tasks share the same XXX's VBR value. Because interrupts |
---|
61 | are enabled automatically by RTEMS as part of the initialize |
---|
62 | executive directive, the VBR MUST be set before this directive |
---|
63 | is invoked to insure correct interrupt vectoring. If processor |
---|
64 | caching is to be utilized, then it should be enabled during the |
---|
65 | reset application initialization code. |
---|
66 | |
---|
67 | In addition to the requirements described in the |
---|
68 | Board Support Packages chapter of the Applications User's |
---|
69 | Manual for the reset code which is executed before the call to |
---|
70 | initialize executive, the XXX version has the following |
---|
71 | specific requirements: |
---|
72 | |
---|
73 | @itemize @bullet |
---|
74 | @item Must leave the S bit of the status register set so that |
---|
75 | the XXX remains in the supervisor state. |
---|
76 | |
---|
77 | @item Must set the M bit of the status register to remove the |
---|
78 | XXX from the interrupt state. |
---|
79 | |
---|
80 | @item Must set the master stack pointer (MSP) such that a |
---|
81 | minimum stack size of MINIMUM_STACK_SIZE bytes is provided for |
---|
82 | the initialize executive directive. |
---|
83 | |
---|
84 | @item Must initialize the XXX's vector table. |
---|
85 | @end itemize |
---|
86 | |
---|
87 | Note that the BSP is not responsible for allocating |
---|
88 | or installing the interrupt stack. RTEMS does this |
---|
89 | automatically as part of initialization. If the BSP does not |
---|
90 | install an interrupt stack and -- for whatever reason -- an |
---|
91 | interrupt occurs before initialize_executive is invoked, then |
---|
92 | the results are unpredictable. |
---|
93 | |
---|