2008-09-15 Joel Sherrill <joel.sherrill@oarcorp.com>

* Makefile.am, configure.ac, include/bsp.h, startup/hw_init.c,
	startup/linkcmds, startup/linkcmds-le, startup/linkcmds-le.coff: Use
	shared bsp_get_work_area() in its own file and rely on BSP Framework
	to perform more initialization. After factoring this out, it turned
	out that all SuperH BSPs has the same bsp_start() implementation so
	this was made shared.
	* startup/bspstart.c: Removed.
This commit is contained in:
Joel Sherrill
2008-09-15 19:18:36 +00:00
parent 512d0fcba1
commit 628d804f36
9 changed files with 36 additions and 165 deletions

View File

@@ -1,3 +1,13 @@
2008-09-15 Joel Sherrill <joel.sherrill@oarcorp.com>
* Makefile.am, configure.ac, include/bsp.h, startup/hw_init.c,
startup/linkcmds, startup/linkcmds-le, startup/linkcmds-le.coff: Use
shared bsp_get_work_area() in its own file and rely on BSP Framework
to perform more initialization. After factoring this out, it turned
out that all SuperH BSPs has the same bsp_start() implementation so
this was made shared.
* startup/bspstart.c: Removed.
2008-09-10 Joel Sherrill <joel.sherrill@oarcorp.com>
* include/bsp.h: Review of all bsp_cleanup() implementations. In this

View File

@@ -35,8 +35,10 @@ dist_project_lib_DATA += startup/linkcmds startup/linkcmds-le \
startup_SOURCES = startup/hw_init.c ../../shared/bsplibc.c \
../../shared/bsppost.c ../../shared/bsppredriverhook.c \
startup/bspstart.c ../../shared/bspclean.c ../../shared/sbrk.c \
../../shared/bootcard.c ../../shared/gnatinstallhandler.c
../../shared/bsppretaskinghook.c ../shared/bspgetworkarea.c \
../shared/bspstart.c ../../shared/bspclean.c ../../shared/sbrk.c \
../../shared/bootcard.c ../../shared/gnatinstallhandler.c \
../shared/bsphwinit.c
clock_SOURCES = clock/ckinit.c
console_SOURCES = console/console.c ../../shared/dummy_printk_support.c
timer_SOURCES = timer/timer.c

View File

@@ -34,6 +34,8 @@ AC_DEFINE_UNQUOTED(
[$START_HW_INIT],
[Whether to call early_hw_init from start.S])
RTEMS_BSP_BOOTCARD_HANDLES_RAM_ALLOCATION
# Explicitly list all Makefiles here
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

View File

@@ -76,12 +76,6 @@ extern "C" {
/*
* Defined in the linker script 'linkcmds'
*/
extern uint32_t HeapStart ;
extern uint32_t HeapEnd ;
extern uint32_t WorkSpaceStart ;
extern uint32_t WorkSpaceEnd ;
extern void *CPU_Interrupt_stack_low ;
extern void *CPU_Interrupt_stack_high ;

View File

@@ -1,118 +0,0 @@
/*
* This routine starts the application. It includes application,
* board, and monitor specific initialization and configuration.
* The generic CPU dependent initialization has been performed
* before this routine is invoked.
*
* Authors: Ralf Corsepius (corsepiu@faw.uni-ulm.de) and
* Bernd Becker (becker@faw.uni-ulm.de)
*
* COPYRIGHT (c) 1997-1998, FAW Ulm, Germany
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*
* COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* $Id$
*/
#include <bsp.h>
#include <rtems/libio.h>
#include <rtems/libcsupport.h>
#include <string.h>
/*
* Driver configuration parameters
*/
uint32_t bsp_clicks_per_second;
extern void bsp_hw_init(void);
/*
* Use the shared implementations of the following routines
*/
void bsp_libc_init( void *, uint32_t, int );
/*
* Function: bsp_pretasking_hook
*
* Description:
* BSP pretasking hook. Called just before drivers are initialized.
* Used to setup libc and install any BSP extensions.
*
* NOTES:
* Must not use libc (to do io) from here, since drivers are
* not yet initialized.
*
*/
void bsp_pretasking_hook(void)
{
bsp_libc_init(&HeapStart, (char *)&HeapEnd - (char *)&HeapStart, 0);
}
/*
* bsp_start
*
* This routine does the bulk of the system initialization.
*/
void bsp_start(void)
{
/*
For real boards you need to setup the hardware
and need to copy the vector table from rom to ram.
Depending on the board this can ether be done from inside the rom
startup code, rtems startup code or here.
*/
#ifndef START_HW_INIT
/* board hardware setup here, or from 'start.S' */
bsp_hw_init();
#endif
/*
* Allocate the memory for the RTEMS Work Space. This can come from
* a variety of places: hard coded address, malloc'ed from outside
* RTEMS world (e.g. simulator or primitive memory manager), or (as
* typically done by stock BSPs) by subtracting the required amount
* of work space from the last physical address on the CPU board.
*/
/*
* Need to "allocate" the memory for the RTEMS Workspace and
* tell the RTEMS configuration where it is. This memory is
* not malloc'ed. It is just "pulled from the air".
*/
Configuration.work_space_start = (void *) &WorkSpaceStart ;
rtems_configuration_get_work_space_size() =
(uint32_t) &WorkSpaceEnd -
(uint32_t) &WorkSpaceStart ;
/*
* initialize the CPU table for this BSP
*/
#if ( CPU_ALLOCATE_INTERRUPT_STACK == FALSE )
_CPU_Interrupt_stack_low = &CPU_Interrupt_stack_low ;
_CPU_Interrupt_stack_high = &CPU_Interrupt_stack_high ;
#endif
/*
* initialize the device driver parameters
*/
bsp_clicks_per_second = CPU_CLOCK_RATE_HZ;
}

View File

@@ -41,7 +41,7 @@ extern void early_hw_init (void);
void
early_hw_init (void)
{
};
}
/* bsp_hw_init --
* Part of hardware initialization called from bspstart.c

View File

@@ -25,11 +25,11 @@ OUTPUT_FORMAT("coff-sh")
OUTPUT_ARCH(sh)
ENTRY(_start)
_HeapSize = DEFINED(_HeapSize) ? _HeapSize : (512 * 1024);
_WorkspaceSize = DEFINED(_WorkspaceSize) ? _WorkspaceSize : (1024 * 1024);
/* These assignments load code into SH7045F EVB SRAM for monitor debugging */
_RamBase = DEFINED(_RamBase) ? _RamBase : 0x00000000;
_RamSize = DEFINED(_RamSize) ? _RamSize : 0x01000000;
MEMORY
{
ram : o = 0x00000000, l = 0x01000000
@@ -84,6 +84,7 @@ SECTIONS
.plt : { *(.plt) }
.text . :
{
_start = .;
*(.text*)
*(.stub)
@@ -153,21 +154,14 @@ SECTIONS
_end = . ;
PROVIDE (end = .);
. = ALIGN(16);
_HeapStart = . ;
. = . + _HeapSize ;
PROVIDE( _HeapEnd = . );
. = ALIGN(16);
_WorkSpaceStart = . ;
. = . + _WorkspaceSize ;
PROVIDE(_WorkSpaceEnd = .);
. = ALIGN(16);
.stack . : {
. = . + 4096;
}
. = ALIGN(16);
_WorkSpaceStart = . ;
. = ALIGN(16);
_CPU_Interrupt_stack_low = . ;
_CPU_Interrupt_stack_high = _CPU_Interrupt_stack_low + 4096 ;

View File

@@ -8,8 +8,8 @@ ENTRY(_start)
/* Do we need any of these for elf?
__DYNAMIC = 0; */
_HeapSize = DEFINED(_HeapSize) ? _HeapSize : (512 * 1024);
_WorkspaceSize = DEFINED(_WorkspaceSize) ? _WorkspaceSize : (1024 * 1024);
_RamBase = DEFINED(_RamBase) ? _RamBase : 0x00000000;
_RamSize = DEFINED(_RamSize) ? _RamSize : 0x01000000;
MEMORY
{
@@ -86,6 +86,7 @@ SECTIONS
.text :
{
. = . + 16;
_start = .;
*(.text*)
*(.stub)
@@ -193,21 +194,14 @@ SECTIONS
_end = .;
PROVIDE (end = .);
. = ALIGN(16);
_HeapStart = . ;
. = . + _HeapSize ;
PROVIDE( _HeapEnd = . );
. = ALIGN(16);
_WorkSpaceStart = . ;
. = . + _WorkspaceSize ;
PROVIDE(_WorkSpaceEnd = .);
. = ALIGN(16);
.stack . : {
. = . + 4096;
}
. = ALIGN(16);
_WorkSpaceStart = . ;
. = ALIGN(16);
_CPU_Interrupt_stack_low = . ;
_CPU_Interrupt_stack_high = _CPU_Interrupt_stack_low + 4096 ;

View File

@@ -24,11 +24,11 @@ OUTPUT_FORMAT("elf32-shl")
OUTPUT_ARCH(sh)
ENTRY(_start)
_HeapSize = DEFINED(_HeapSize) ? _HeapSize : (512 * 1024);
_WorkspaceSize = DEFINED(_WorkspaceSize) ? _WorkspaceSize : (1024 * 1024);
/* These assignments load code into SH7045F EVB SRAM for monitor debugging */
_RamBase = DEFINED(_RamBase) ? _RamBase : 0x00000000;
_RamSize = DEFINED(_RamSize) ? _RamSize : 0x01000000;
MEMORY
{
ram : o = 0x00000000, l = 0x01000000
@@ -83,6 +83,7 @@ SECTIONS
.plt : { *(.plt) }
.text . :
{
_start = .;
*(.text*)
*(.stub)
@@ -152,20 +153,12 @@ SECTIONS
_end = . ;
PROVIDE (end = .);
. = ALIGN(16);
_HeapStart = . ;
. = . + _HeapSize ;
PROVIDE( _HeapEnd = . );
. = ALIGN(16);
_WorkSpaceStart = . ;
. = . + _WorkspaceSize ;
PROVIDE(_WorkSpaceEnd = .);
. = ALIGN(16);
.stack . : {
. = . + 4096;
}
. = ALIGN(16);
_WorkSpaceStart = . ;
. = ALIGN(16);
_CPU_Interrupt_stack_low = . ;