...
- Command line is in the first and only argument
- In our system this is always a null pointer
- Disable interrupts
- Store command line
- Call
bsp_start()
- Determine RTEMS work area and heap location and size
- Initialize RTEMS data structures
- Initialize the C library
- This also installs the heap
- Call
bsp_pretasking_hook()
Wiki Markup \[Enable RTEMS debugging capabilities\]
- RTEMS initialization before loading device drivers
- Call
bsp_predriver_hook()
- Initialize device drivers
- Call
bsp_postdriver_hook()
- Start multitasking
- Thread with entry point
Init
runs - Not clear how this returns. Perhaps when the last task is deleted?
- Thread with entry point
- Call
bsp_cleanup()
- Return to the start code
- Not clear what's in the
lr
at this point, i.e., where do we return to?
- Not clear what's in the
...
bsp_start()
- Set up default character output function
- Get CPU type and revision cached
- Initialize device driver parameters
- Rate of timer source for
clock.c
bsp_timer_internal_clock
bsp_timer_average_overhead
bsp_timer_least_valid
- Rate of timer source for
- Initialize default raw exception handlers
- Call
app_bsp_start()
- Return to
boot_code()
bsp_pretasking_hook()
- Call
app_bsp_pretasking_hook()
- Return to
boot_code()
- Call
bsp_predriver_hook()
- Call
app_bsp_predriver_hook()
- Return to
boot_code()
- Call
bsp_postdriver_hook()
- Call
rtems_libio_supp_helper()
to open/dev/console
forstdin
,stdout
andstderr
, if it exists - Call
app_bsp_postdriver_hook()
- Return to
boot_code()
- Call
bsp_cleanup()
- Call
app_bsp_cleanup()
- Return to
boot_code()
- Call
RCE BSP
This is the portion of the BSP that is specific to the RCE project. It can be found in release/rce/init/src/Init.cc
.
app_bsp_start()
- This routine should set up the processor and board as needed for the task at hand, i.e., it is not generic.
- Replace the character output function with one that writes to the
syslog
- Return to
bsp_start()
app_bsp_pretasking_hook()
- Initialize
RceDebug
- Initialize
RcePic
- Return to
bsp_pretasking_hook()
- Initialize
app_bsp_predriver_hook()
- Initialize
RceEthernet
- Initialize
RceBsdnet
- Return to
bsp_predriver_hook()
- Initialize
app_bsp_postdriver_hook()
- Return to
bsp_postdriver_hook()
- Return to
app_bsp_cleanup()
- Return to
bsp_cleanup()
- Return to
RceDebug
- Set up an RTEMS extension that creates and manages the
syslog
- Return to
app_bsp_pretasking_hook()
- Return to
RcePic
- Set up a single PIC Manager
- Set up a vector of PEBs
- Set up a vector of ECDs
- Set up a vector of FLBs
- Set up a vector of PIBs
- Install a BOOK-E Critical exception handler
- Install an External Interrupt handler
- Return to
app_bsp_pretasking_hook()
- Set up a vector of PEBs
RceEthernet
- Create a single empty linked list of Ethernet drivers
- Return to
app_bsp_predriver_hook()
- Return to
RceBsdnet
- Create a single empty linked list of Ethernet handlers
- Return to
app_bsp_predriver_hook()
- Return to
Init
task
This task is automatically launched by the act of enabling multitasking in boot_card()
- Launch
init_executive()
thread task - Delete the
Init
task
init_executive()
This function runs in its own RTEMS task that was launched by Init
task. This forms the intent of the loaded executable
...
. Other possibilities exist, but generally, this will be one of the core
executables.
- Announce what's running
- Configure the network from DHCP
- Set up the dynamic linker
Wiki Markup \[Start the shell\]
Wiki Markup \[Start the debugger daemon ({{gdb}} stub)\]
- Create a
Task
- Determine what the
Task
should run- Read metadata from flash
- Read the front panel rotary switch
- Dynamically link the code
- Run the
Task