forked from Imagelibrary/rtems
2008-05-12 Joel Sherrill <joel.sherrill@OARcorp.com>
* bootcard.c: Refactored and renamed initialization routines to rtems_initialize_data_structures, rtems_initialize_before_drivers, rtems_initialize_device_drivers, and rtems_initialize_start_multitasking. This opened the sequence up so that bootcard() could provide a more robust and flexible framework which is easier to explain and understand. This also lays the groundwork for sharing the division of available memory between the RTEMS workspace and heap and the C library initialization across all BSPs.
This commit is contained in:
@@ -1,3 +1,15 @@
|
||||
2008-05-12 Joel Sherrill <joel.sherrill@OARcorp.com>
|
||||
|
||||
* bootcard.c: Refactored and renamed initialization routines to
|
||||
rtems_initialize_data_structures, rtems_initialize_before_drivers,
|
||||
rtems_initialize_device_drivers, and
|
||||
rtems_initialize_start_multitasking. This opened the sequence up so
|
||||
that bootcard() could provide a more robust and flexible framework
|
||||
which is easier to explain and understand. This also lays the
|
||||
groundwork for sharing the division of available memory between the
|
||||
RTEMS workspace and heap and the C library initialization across all
|
||||
BSPs.
|
||||
|
||||
2008-05-06 Joel Sherrill <joel.sherrill@OARcorp.com>
|
||||
|
||||
* bootcard.c: Improve formatting and comments.
|
||||
|
||||
@@ -7,9 +7,14 @@
|
||||
* + start.S: basic CPU setup (stack, zero BSS)
|
||||
* + boot_card
|
||||
* + bspstart.c: bsp_start - more advanced initialization
|
||||
* + rtems_initialize_executive_early
|
||||
* + rtems_initialize_data_structures
|
||||
* + bsp_pretasking_hook
|
||||
* + rtems_initialize_before_drivers
|
||||
* + bsp_predriver_hook
|
||||
* + rtems_initialize_device_drivers
|
||||
* + all device drivers
|
||||
* + rtems_initialize_executive_late
|
||||
* + bsp_postdriver_hook
|
||||
* + rtems_initialize_start_multitasking
|
||||
* + 1st task executes C++ global constructors
|
||||
* .... appplication runs ...
|
||||
* + exit
|
||||
@@ -35,6 +40,9 @@
|
||||
|
||||
extern void bsp_start( void );
|
||||
extern void bsp_cleanup( void );
|
||||
extern void bsp_pretasking_hook(void);
|
||||
extern void bsp_predriver_hook(void);
|
||||
extern void bsp_postdriver_hook(void);
|
||||
|
||||
/*
|
||||
* Since there is a forward reference
|
||||
@@ -57,7 +65,6 @@ int boot_card(
|
||||
/*
|
||||
* Make sure interrupts are disabled.
|
||||
*/
|
||||
|
||||
rtems_interrupt_disable( bsp_isr_level );
|
||||
|
||||
/*
|
||||
@@ -66,17 +73,12 @@ int boot_card(
|
||||
* Somehow we need to eventually make this available to
|
||||
* a real main() in user land. :)
|
||||
*/
|
||||
|
||||
if ( argv )
|
||||
argv_p = argv;
|
||||
|
||||
if ( envp )
|
||||
envp_p = envp;
|
||||
if ( argv ) argv_p = argv;
|
||||
if ( envp ) envp_p = envp;
|
||||
|
||||
/*
|
||||
* Set the program name in case some application cares.
|
||||
*/
|
||||
|
||||
if ((argc > 0) && argv && argv[0])
|
||||
rtems_progname = argv[0];
|
||||
else
|
||||
@@ -85,21 +87,53 @@ int boot_card(
|
||||
/*
|
||||
* Invoke Board Support Package initialization routine written in C.
|
||||
*/
|
||||
|
||||
bsp_start();
|
||||
|
||||
/*
|
||||
* Initialize RTEMS but do NOT start multitasking.
|
||||
* Initialize RTEMS data structures
|
||||
*/
|
||||
rtems_initialize_data_structures( &Configuration );
|
||||
|
||||
rtems_initialize_executive_early( &Configuration );
|
||||
/*
|
||||
* All BSP to do any required initialization now that RTEMS
|
||||
* data structures are initialized. This is the typical
|
||||
* time when the C Library is initialized so malloc()
|
||||
* can be called by device drivers.
|
||||
*/
|
||||
bsp_pretasking_hook();
|
||||
|
||||
/*
|
||||
* Let RTEMS perform initialization it requires before drivers
|
||||
* are allowed to be initialized.
|
||||
*/
|
||||
rtems_initialize_before_drivers();
|
||||
|
||||
/*
|
||||
* Execute BSP specific pre-driver hook. Drivers haven't gotten
|
||||
* to initialize yet so this is a good chance to initialize
|
||||
* buses, spurious interrupt handlers, etc..
|
||||
*
|
||||
* NOTE: Many BSPs do not require this handler and use the
|
||||
* shared stub.
|
||||
*/
|
||||
bsp_predriver_hook();
|
||||
|
||||
/*
|
||||
* Initialize all device drivers.
|
||||
*/
|
||||
rtems_initialize_device_drivers();
|
||||
|
||||
/*
|
||||
* Invoke the postdriver hook. This normally opens /dev/console
|
||||
* for use as stdin, stdout, and stderr.
|
||||
*/
|
||||
bsp_postdriver_hook();
|
||||
|
||||
/*
|
||||
* Complete initialization of RTEMS and switch to the first task.
|
||||
* Global C++ constructors will be executed in the context of that task.
|
||||
*/
|
||||
|
||||
rtems_initialize_executive_late( bsp_isr_level );
|
||||
rtems_initialize_start_multitasking();
|
||||
|
||||
/***************************************************************
|
||||
***************************************************************
|
||||
@@ -111,7 +145,6 @@ int boot_card(
|
||||
/*
|
||||
* Perform any BSP specific shutdown actions which are written in C.
|
||||
*/
|
||||
|
||||
bsp_cleanup();
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user