summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/bfin
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2008-09-10 20:32:27 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2008-09-10 20:32:27 +0000
commit018e3821cc0c85913d68855f8770231be760cb9a (patch)
tree479c8eab826bda441380411f04198cf11941a091 /c/src/lib/libbsp/bfin
parentRemove. (diff)
downloadrtems-018e3821cc0c85913d68855f8770231be760cb9a.tar.bz2
2008-09-10 Joel Sherrill <joel.sherrill@oarcorp.com>
* Makefile.am, configure.ac, startup/bspstart.c, startup/linkcmds: Split out bsp_get_work_area() into its own file and user BSP Framework to perform more initialization.
Diffstat (limited to 'c/src/lib/libbsp/bfin')
-rw-r--r--c/src/lib/libbsp/bfin/bf537Stamp/ChangeLog6
-rw-r--r--c/src/lib/libbsp/bfin/bf537Stamp/Makefile.am3
-rw-r--r--c/src/lib/libbsp/bfin/bf537Stamp/configure.ac2
-rw-r--r--c/src/lib/libbsp/bfin/bf537Stamp/startup/bspstart.c60
-rw-r--r--c/src/lib/libbsp/bfin/bf537Stamp/startup/linkcmds10
-rw-r--r--c/src/lib/libbsp/bfin/eZKit533/ChangeLog6
-rw-r--r--c/src/lib/libbsp/bfin/eZKit533/Makefile.am3
-rw-r--r--c/src/lib/libbsp/bfin/eZKit533/configure.ac2
-rw-r--r--c/src/lib/libbsp/bfin/eZKit533/startup/bspstart.c169
-rw-r--r--c/src/lib/libbsp/bfin/eZKit533/startup/linkcmds7
10 files changed, 89 insertions, 179 deletions
diff --git a/c/src/lib/libbsp/bfin/bf537Stamp/ChangeLog b/c/src/lib/libbsp/bfin/bf537Stamp/ChangeLog
index d08f1a70f1..deb5002ae0 100644
--- a/c/src/lib/libbsp/bfin/bf537Stamp/ChangeLog
+++ b/c/src/lib/libbsp/bfin/bf537Stamp/ChangeLog
@@ -1,3 +1,9 @@
+2008-09-10 Joel Sherrill <joel.sherrill@oarcorp.com>
+
+ * Makefile.am, configure.ac, startup/bspstart.c, startup/linkcmds:
+ Split out bsp_get_work_area() into its own file and user BSP
+ Framework to perform more initialization.
+
2008-08-15 Allan Hessenflow <allanh@kallisti.com>
* ChangeLog, Makefile.am, README, bsp_specs, configure.ac,
diff --git a/c/src/lib/libbsp/bfin/bf537Stamp/Makefile.am b/c/src/lib/libbsp/bfin/bf537Stamp/Makefile.am
index 8d2c667e04..c3c98c0ace 100644
--- a/c/src/lib/libbsp/bfin/bf537Stamp/Makefile.am
+++ b/c/src/lib/libbsp/bfin/bf537Stamp/Makefile.am
@@ -30,7 +30,8 @@ noinst_PROGRAMS += startup.rel
startup_rel_SOURCES = ../../shared/bsplibc.c ../../shared/bsppost.c \
../../shared/bsppredriverhook.c startup/bspstart.c \
../../shared/bspclean.c ../../shared/sbrk.c ../../shared/setvec.c \
- ../../shared/bootcard.c ../../shared/gnatinstallhandler.c
+ ../../shared/bootcard.c ../../shared/gnatinstallhandler.c \
+ ../shared/bspgetworkarea.c
startup_rel_CPPFLAGS = $(AM_CPPFLAGS)
startup_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
diff --git a/c/src/lib/libbsp/bfin/bf537Stamp/configure.ac b/c/src/lib/libbsp/bfin/bf537Stamp/configure.ac
index 37c5e05c0d..438ce8eeec 100644
--- a/c/src/lib/libbsp/bfin/bf537Stamp/configure.ac
+++ b/c/src/lib/libbsp/bfin/bf537Stamp/configure.ac
@@ -24,6 +24,8 @@ RTEMS_BSPOPTS_SET([CONSOLE_USE_INTERRUPTS],[*],[0])
RTEMS_BSPOPTS_HELP([CONSOLE_USE_INTERRUPTS],
[The console driver can operate in either polled or interrupt mode.])
+RTEMS_BSP_BOOTCARD_HANDLES_RAM_ALLOCATION
+
# Explicitly list all Makefiles here
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
diff --git a/c/src/lib/libbsp/bfin/bf537Stamp/startup/bspstart.c b/c/src/lib/libbsp/bfin/bf537Stamp/startup/bspstart.c
index 46c3ecb241..489d4d405a 100644
--- a/c/src/lib/libbsp/bfin/bf537Stamp/startup/bspstart.c
+++ b/c/src/lib/libbsp/bfin/bf537Stamp/startup/bspstart.c
@@ -33,11 +33,6 @@ static bfin_mmu_region_t mmuRegions[] = {
};
#endif
-/*
- * Use the shared implementations of the following routines
- */
-
-void bsp_postdriver_hook(void);
void bsp_libc_init(void *, uint32_t, int);
void Init_RTC(void);
@@ -47,46 +42,20 @@ static void initEBIU(void);
static void initGPIO(void);
/*
- * Function: bsp_pretasking_hook
- * Created: 95/03/10
- *
- * 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.
- *
+ * BSP pretasking hook.
*/
-
-void bsp_pretasking_hook(void) {
- extern int HeapBase;
- extern int RamBase;
- extern int RamSize;
- unsigned long heapSize;
- void *heapStart;
-
+void bsp_pretasking_hook(void)
+{
bfin_interrupt_init();
-
- heapStart = &HeapBase;
- heapSize = (unsigned long) &RamBase;
- heapSize += (unsigned long) &RamSize;
- heapSize -= (unsigned long) &HeapBase;
-
- bsp_libc_init(heapStart, heapSize, 0);
-
}
/*
* bsp_start
*
- * This routine does the bulk of the system initialization.
+ * This routine does the bulk of the BSP initialization.
*/
-void bsp_start(void) {
-
- extern void *_WorkspaceBase;
-
+void bsp_start(void)
+{
/* BSP Hardware Initialization*/
/*bfin_mmu_init(sizeof(mmuRegions) / sizeof(mmuRegions[0]), mmuRegions);*/
@@ -96,23 +65,6 @@ void bsp_start(void) {
initPLL(); /* PLL initialization */
initEBIU(); /* EBIU initialization */
initGPIO(); /* GPIO initialization */
-
- /*
- * 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 *) &_WorkspaceBase;
-
}
/*
diff --git a/c/src/lib/libbsp/bfin/bf537Stamp/startup/linkcmds b/c/src/lib/libbsp/bfin/bf537Stamp/startup/linkcmds
index 3902df4c64..efec1bcbd5 100644
--- a/c/src/lib/libbsp/bfin/bf537Stamp/startup/linkcmds
+++ b/c/src/lib/libbsp/bfin/bf537Stamp/startup/linkcmds
@@ -13,7 +13,6 @@ ENTRY(__start)
*/
_RamBase = DEFINED(_RamBase) ? _RamBase : 0x0;
_RamSize = DEFINED(_RamSize) ? _RamSize : 0x04000000;
-/*_HeapSize = DEFINED(_HeapSize) ? _HeapSize : 0x0200000;*/
_StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;
MEMORY
@@ -112,12 +111,7 @@ SECTIONS
_stack_init = .;
. += _StackSize;
_clear_end = .;
- _WorkspaceBase = .;
- . += 512K; /* reserve some memory for workspace */
- _HeapBase = .;
-/*
- . += _HeapSize;
-*/
+ _WorkArea = .;
_end = .;
__end = .;
} > sdram
@@ -164,7 +158,5 @@ SECTIONS
__RamBase = _RamBase;
__RamSize = _RamSize;
__HeapBase = _HeapBase;
-/*__HeapSize = _HeapSize;*/
-__WorkspaceBase = _WorkspaceBase;
__edata = _edata;
__etext = _etext;
diff --git a/c/src/lib/libbsp/bfin/eZKit533/ChangeLog b/c/src/lib/libbsp/bfin/eZKit533/ChangeLog
index 17904a24ef..5a7257e607 100644
--- a/c/src/lib/libbsp/bfin/eZKit533/ChangeLog
+++ b/c/src/lib/libbsp/bfin/eZKit533/ChangeLog
@@ -1,3 +1,9 @@
+2008-09-10 Joel Sherrill <joel.sherrill@oarcorp.com>
+
+ * Makefile.am, configure.ac, startup/bspstart.c, startup/linkcmds:
+ Split out bsp_get_work_area() into its own file and user BSP
+ Framework to perform more initialization.
+
2008-08-18 Allan Hessenflow <allanh@kallisti.com>
* Makefile.am, console/console-io.c, startup/bspstart.c: Update to use
diff --git a/c/src/lib/libbsp/bfin/eZKit533/Makefile.am b/c/src/lib/libbsp/bfin/eZKit533/Makefile.am
index 7cbefeb94c..f6234c5795 100644
--- a/c/src/lib/libbsp/bfin/eZKit533/Makefile.am
+++ b/c/src/lib/libbsp/bfin/eZKit533/Makefile.am
@@ -31,7 +31,8 @@ noinst_PROGRAMS += startup.rel
startup_rel_SOURCES = ../../shared/bsplibc.c ../../shared/bsppost.c \
../../shared/bsppredriverhook.c startup/bspstart.c \
../../shared/bspclean.c ../../shared/sbrk.c ../../shared/setvec.c \
- ../../shared/bootcard.c ../../shared/gnatinstallhandler.c
+ ../../shared/bootcard.c ../../shared/gnatinstallhandler.c \
+ ../shared/bspgetworkarea.c
startup_rel_CPPFLAGS = $(AM_CPPFLAGS)
startup_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
diff --git a/c/src/lib/libbsp/bfin/eZKit533/configure.ac b/c/src/lib/libbsp/bfin/eZKit533/configure.ac
index 4fda293190..95f1eb0dec 100644
--- a/c/src/lib/libbsp/bfin/eZKit533/configure.ac
+++ b/c/src/lib/libbsp/bfin/eZKit533/configure.ac
@@ -20,6 +20,8 @@ RTEMS_BSPOPTS_SET([CONSOLE_USE_INTERRUPTS],[*],[0])
RTEMS_BSPOPTS_HELP([CONSOLE_USE_INTERRUPTS],
[The console driver can operate in either polled or interrupt mode.])
+RTEMS_BSP_BOOTCARD_HANDLES_RAM_ALLOCATION
+
# Explicitly list all Makefiles here
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
diff --git a/c/src/lib/libbsp/bfin/eZKit533/startup/bspstart.c b/c/src/lib/libbsp/bfin/eZKit533/startup/bspstart.c
index 2da422b9ed..57ebb4138b 100644
--- a/c/src/lib/libbsp/bfin/eZKit533/startup/bspstart.c
+++ b/c/src/lib/libbsp/bfin/eZKit533/startup/bspstart.c
@@ -26,56 +26,49 @@
#include <libcpu/interrupt.h>
const unsigned int dcplbs_table[16][2] = {
- { 0xFFA00000, (PAGE_SIZE_1MB | CPLB_D_PAGE_MGMT | CPLB_WT) },
- { 0xFF900000, (PAGE_SIZE_1MB | CPLB_D_PAGE_MGMT | CPLB_WT) }, /* L1 Data B */
- { 0xFF800000, (PAGE_SIZE_1MB | CPLB_D_PAGE_MGMT | CPLB_WT) }, /* L1 Data A */
- { 0xFFB00000, (PAGE_SIZE_1MB | CPLB_DNOCACHE) },
-
- { 0x20300000, (PAGE_SIZE_1MB | CPLB_DNOCACHE) }, /* Async Memory Bank 3 */
- { 0x20200000, (PAGE_SIZE_1MB | CPLB_DNOCACHE) }, /* Async Memory Bank 2 (Secnd) */
- { 0x20100000, (PAGE_SIZE_1MB | CPLB_DNOCACHE) }, /* Async Memory Bank 1 (Prim B) */
- { 0x20000000, (PAGE_SIZE_1MB | CPLB_DNOCACHE) }, /* Async Memory Bank 0 (Prim A) */
-
- { 0x02400000, (PAGE_SIZE_4MB | CPLB_DNOCACHE) },
- { 0x02000000, (PAGE_SIZE_4MB | CPLB_DNOCACHE) },
- { 0x00C00000, (PAGE_SIZE_4MB | CPLB_DNOCACHE) },
- { 0x00800000, (PAGE_SIZE_4MB | CPLB_DNOCACHE) },
- { 0x00400000, (PAGE_SIZE_4MB | CPLB_DNOCACHE) },
- { 0x00000000, (PAGE_SIZE_4MB | CPLB_DNOCACHE) },
-
- { 0xffffffff, 0xffffffff } /* end of section - termination */
-
- }
-;
+ { 0xFFA00000, (PAGE_SIZE_1MB | CPLB_D_PAGE_MGMT | CPLB_WT) },
+ { 0xFF900000, (PAGE_SIZE_1MB | CPLB_D_PAGE_MGMT | CPLB_WT) }, /* L1 Data B */
+ { 0xFF800000, (PAGE_SIZE_1MB | CPLB_D_PAGE_MGMT | CPLB_WT) }, /* L1 Data A */
+ { 0xFFB00000, (PAGE_SIZE_1MB | CPLB_DNOCACHE) },
+ { 0x20300000, (PAGE_SIZE_1MB | CPLB_DNOCACHE) }, /* Async Memory Bank 3 */
+ { 0x20200000, (PAGE_SIZE_1MB | CPLB_DNOCACHE) }, /* Async Memory Bank 2 (Secnd) */
+ { 0x20100000, (PAGE_SIZE_1MB | CPLB_DNOCACHE) }, /* Async Memory Bank 1 (Prim B) */
+ { 0x20000000, (PAGE_SIZE_1MB | CPLB_DNOCACHE) }, /* Async Memory Bank 0 (Prim A) */
+
+ { 0x02400000, (PAGE_SIZE_4MB | CPLB_DNOCACHE) },
+ { 0x02000000, (PAGE_SIZE_4MB | CPLB_DNOCACHE) },
+ { 0x00C00000, (PAGE_SIZE_4MB | CPLB_DNOCACHE) },
+ { 0x00800000, (PAGE_SIZE_4MB | CPLB_DNOCACHE) },
+ { 0x00400000, (PAGE_SIZE_4MB | CPLB_DNOCACHE) },
+ { 0x00000000, (PAGE_SIZE_4MB | CPLB_DNOCACHE) },
+ { 0xffffffff, 0xffffffff } /* end of section - termination */
+
+};
const unsigned int _icplbs_table[16][2] = {
- { 0xFFA00000, (PAGE_SIZE_1MB | CPLB_I_PAGE_MGMT | CPLB_I_PAGE_MGMT | 0x4) }, /* L1 Code */
- { 0xEF000000, (PAGE_SIZE_1MB | CPLB_INOCACHE) }, /* AREA DE BOOT */
- { 0xFFB00000, (PAGE_SIZE_1MB | CPLB_INOCACHE) },
-
- { 0x20300000, (PAGE_SIZE_1MB | CPLB_INOCACHE) }, /* Async Memory Bank 3 */
- { 0x20200000, (PAGE_SIZE_1MB | CPLB_INOCACHE) }, /* Async Memory Bank 2 (Secnd) */
- { 0x20100000, (PAGE_SIZE_1MB | CPLB_INOCACHE) }, /* Async Memory Bank 1 (Prim B) */
- { 0x20000000, (PAGE_SIZE_1MB | CPLB_INOCACHE) }, /* Async Memory Bank 0 (Prim A) */
-
- { 0x02400000, (PAGE_SIZE_4MB | CPLB_INOCACHE) },
- { 0x02000000, (PAGE_SIZE_4MB | CPLB_INOCACHE) },
- { 0x00C00000, (PAGE_SIZE_4MB | CPLB_INOCACHE) },
- { 0x00800000, (PAGE_SIZE_4MB | CPLB_INOCACHE) },
- { 0x00400000, (PAGE_SIZE_4MB | CPLB_INOCACHE) },
- { 0x00000000, (PAGE_SIZE_4MB | CPLB_INOCACHE) },
-
- { 0xffffffff, 0xffffffff } /* end of section - termination */
-
- }
-;
+ { 0xFFA00000, (PAGE_SIZE_1MB | CPLB_I_PAGE_MGMT | CPLB_I_PAGE_MGMT | 0x4) }, /* L1 Code */
+ { 0xEF000000, (PAGE_SIZE_1MB | CPLB_INOCACHE) }, /* AREA DE BOOT */
+ { 0xFFB00000, (PAGE_SIZE_1MB | CPLB_INOCACHE) },
+ { 0x20300000, (PAGE_SIZE_1MB | CPLB_INOCACHE) }, /* Async Memory Bank 3 */
+ { 0x20200000, (PAGE_SIZE_1MB | CPLB_INOCACHE) }, /* Async Memory Bank 2 (Secnd) */
+ { 0x20100000, (PAGE_SIZE_1MB | CPLB_INOCACHE) }, /* Async Memory Bank 1 (Prim B) */
+ { 0x20000000, (PAGE_SIZE_1MB | CPLB_INOCACHE) }, /* Async Memory Bank 0 (Prim A) */
+
+ { 0x02400000, (PAGE_SIZE_4MB | CPLB_INOCACHE) },
+ { 0x02000000, (PAGE_SIZE_4MB | CPLB_INOCACHE) },
+ { 0x00C00000, (PAGE_SIZE_4MB | CPLB_INOCACHE) },
+ { 0x00800000, (PAGE_SIZE_4MB | CPLB_INOCACHE) },
+ { 0x00400000, (PAGE_SIZE_4MB | CPLB_INOCACHE) },
+ { 0x00000000, (PAGE_SIZE_4MB | CPLB_INOCACHE) },
+ { 0xffffffff, 0xffffffff } /* end of section - termination */
+
+};
/*
* Use the shared implementations of the following routines
*/
-void bsp_libc_init( void *, uint32_t, int );
void Init_PLL (void);
void Init_EBIU (void);
void Init_Flags(void);
@@ -84,29 +77,13 @@ void Init_RTC (void);
void null_isr(void);
/*
- * Function: bsp_pretasking_hook
- * Created: 95/03/10
- *
- * 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)
{
- extern int HeapBase;
- extern int HeapSize;
- void *heapStart = &HeapBase;
- unsigned long heapSize = (unsigned long)&HeapSize;
-
- bfin_interrupt_init();
-
- bsp_libc_init(heapStart, heapSize, 0);
+ bfin_interrupt_init();
}
/*
@@ -117,48 +94,26 @@ void bsp_pretasking_hook(void)
void bsp_start( void )
{
-
- extern void * _WorkspaceBase;
-
/* BSP Hardware Initialization*/
Init_RTC(); /* Blackfin Real Time Clock initialization */
Init_PLL(); /* PLL initialization */
Init_EBIU(); /* EBIU initialization */
Init_Flags(); /* GPIO initialization */
- /*
- * 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 *) &_WorkspaceBase;
-
int i=0;
for (i=5;i<16;i++) {
set_vector((rtems_isr_entry)null_isr, i, 1);
}
-
}
- /*
- * Init_PLL
- *
- * Routine to initialize the PLL. The Ezkit uses a 27 Mhz XTAL.
- * See "../eZKit533/include/bsp.h" for more information.
- */
-
+/*
+ * Init_PLL
+ *
+ * Routine to initialize the PLL. The Ezkit uses a 27 Mhz XTAL.
+ * See "../eZKit533/include/bsp.h" for more information.
+ */
void Init_PLL (void)
{
-
unsigned int n;
/* Configure PLL registers */
@@ -173,7 +128,6 @@ void Init_PLL (void)
/* Delay for PLL stabilization */
for (n=0; n<200; n++) {}
-
}
/*
@@ -196,11 +150,11 @@ void Init_EBIU (void)
*/
}
- /*
- * Init_Flags
- *
- * Enable LEDs port
- */
+/*
+ * Init_Flags
+ *
+ * Enable LEDs port
+ */
void Init_Flags(void)
{
*((uint16_t*)FIO_INEN) = 0x0100;
@@ -229,20 +183,19 @@ uint8_t getLED (void)
return *((uint8_t*)FlashA_PortB_Data);
}
-void initCPLB() {
-
- int i = 0;
- unsigned int *addr;
- unsigned int *data;
+void initCPLB()
+{
+ int i = 0;
+ unsigned int *addr;
+ unsigned int *data;
- addr = (unsigned int *)0xffe00100;
- data = (unsigned int *)0xffe00200;
-
- while ( dcplbs_table[i][0] != 0xffffffff ) {
- *addr = dcplbs_table[i][0];
- *data = dcplbs_table[i][1];
-
- addr++;
- data++;
- }
+ addr = (unsigned int *)0xffe00100;
+ data = (unsigned int *)0xffe00200;
+
+ while ( dcplbs_table[i][0] != 0xffffffff ) {
+ *addr = dcplbs_table[i][0];
+ *data = dcplbs_table[i][1];
+ addr++;
+ data++;
+ }
}
diff --git a/c/src/lib/libbsp/bfin/eZKit533/startup/linkcmds b/c/src/lib/libbsp/bfin/eZKit533/startup/linkcmds
index 8d75e03aea..8d233307cb 100644
--- a/c/src/lib/libbsp/bfin/eZKit533/startup/linkcmds
+++ b/c/src/lib/libbsp/bfin/eZKit533/startup/linkcmds
@@ -101,10 +101,7 @@ SECTIONS
_stack_init = .;
. += _StackSize;
_clear_end = .;
- _WorkspaceBase = .;
- . += 512K; /* reserve some memory for workspace */
- _HeapBase = .;
- . += _HeapSize; /* reserve some memory for heap */
+ _WorkArea = .;
_end = .;
__end = .;
} > sdram
@@ -148,8 +145,6 @@ SECTIONS
/* These must appear regardless of . */
}
-__HeapBase = _HeapBase;
__HeapSize = _HeapSize;
-__WorkspaceBase = _WorkspaceBase;
__edata = _edata;
__etext = _etext;