Note that in this description, time advances down along the page. |
Bear in mind as well that this description applies to the Gen 1 design. |
Items in square brackets ([]) are optional. |
0xfffffffc
b
or ba
; 26 bit range) to some boot code is loaded here
bram
) at 0xffffff00
download_entry
(but I'm not sure how)sc
(system call) instruction could be loaded here? Any advantage to this?
ivor
register (PPC 440) is not loaded yetivor
registers, so it would continue executing at the system call vectordlEntry.s
(download_entry()
)This file is considered part of an RTEMS BSP and can be found in ${RTEMS_ROOT}/src/c/src/lib/libbsp/powerpc/virtex5/dlentry
. What's written here is written for the PPC 440 found in Xilinx Virtex 5 parts. The Virtex 4 version is similar.
startup
start
, download_entry
and __rtems_entry_point
r2
)r1
)boot_card()
boot_card()
While the RTEMS structure provides for allowing this function to be supplied by the RTEMS BSP, we use the version that the distribution comes with. It is found in the ${RTEMS_ROOT}/src/c/src/lib/libbsp/shared
directory called bootcard.c
.
In the following, functions prefixed with bsp_
are supplied by the RTEMS BSP.
bsp_start()
bsp_pretasking_hook()
bsp_predriver_hook()
bsp_postdriver_hook()
Init
runsbsp_cleanup()
lr
at this point, i.e., where do we return to?This constitutes our contributions to RTEMS. The code here sets up the processor and board for generic use. Files related to it can be found in ${RTEMS_ROOT}/src/c/src/lib/libbsp/powerpc/virtex5/...
.
The functions prefixed with app_
are supplied by the RTEMS application, i.e., the RCE project, in our case.
bsp_start()
clock.c
bsp_timer_internal_clock
bsp_timer_average_overhead
bsp_timer_least_valid
app_bsp_start()
boot_code()
bsp_pretasking_hook()
app_bsp_pretasking_hook()
boot_code()
bsp_predriver_hook()
app_bsp_predriver_hook()
boot_code()
bsp_postdriver_hook()
rtems_libio_supp_helper()
to open /dev/console
for stdin
, stdout
and stderr
, if it existsapp_bsp_postdriver_hook()
boot_code()
bsp_cleanup()
app_bsp_cleanup()
boot_code()
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()
syslog
bsp_start()
app_bsp_pretasking_hook()
RceDebug
RcePic
bsp_pretasking_hook()
app_bsp_predriver_hook()
RceEthernet
RceBsdnet
bsp_predriver_hook()
app_bsp_postdriver_hook()
bsp_postdriver_hook()
app_bsp_cleanup()
bsp_cleanup()
RceDebug
syslog
app_bsp_pretasking_hook()
RcePic
app_bsp_pretasking_hook()
RceEthernet
app_bsp_predriver_hook()
RceBsdnet
app_bsp_predriver_hook()
Init
taskThis task is automatically launched by the act of enabling multitasking in boot_card()
init_executive()
taskInit
taskinit_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.
gdb
stub)]Task
Task
should run
Task