various changes

This commit is contained in:
Thomas Doerfler
2009-10-06 19:56:07 +00:00
parent 63e99db572
commit 133bffb9be
7 changed files with 52 additions and 24 deletions

View File

@@ -1,3 +1,19 @@
2009-10-06 Thomas Doerfler <Thomas.Doerfler@embedded-brains.de>
* Makefile.am:
do not use shared/timerstub
* include/bsp.h:
add macro to convert Decrementer value
* startup/bspstart.c:
set clock frequency to suitable value
* startup/bsppanic.c:
issue a reset after panic
* startup/linkcmds:
add space for stacks
2009-10-03 Thomas Doerfler <Thomas.Doerfler@embedded-brains.de> 2009-10-03 Thomas Doerfler <Thomas.Doerfler@embedded-brains.de>
* startup/bspstart.c: * startup/bspstart.c:
add missing file add missing file

View File

@@ -38,11 +38,10 @@ startup_SOURCES = ../../shared/bspclean.c ../../shared/bsplibc.c \
../../shared/gnatinstallhandler.c \ ../../shared/gnatinstallhandler.c \
startup/cmain.c startup/bspstart.c startup/bsppanic.c startup/cmain.c startup/bspstart.c startup/bsppanic.c
# pclock # pclock
clock_SOURCES = ../../shared/clock_driver_simidle.c # clock_SOURCES = ../../shared/clock_driver_simidle.c
clock_SOURCES = ../shared/clock/clock.c
# console # console
console_SOURCES = ../../shared/console-polled.c console/console-io.c console_SOURCES = ../../shared/console-polled.c console/console-io.c
#timer
timer_SOURCES = ../../shared/timerstub.c
# irq # irq
include_bsp_HEADERS = irq/irq.h \ include_bsp_HEADERS = irq/irq.h \

View File

@@ -28,9 +28,18 @@ extern "C" {
#define BSP_SMALL_MEMORY 1 #define BSP_SMALL_MEMORY 1
/*
* Convert decrementer value to tenths of microseconds (used by shared timer
* driver).
*/
#define BSP_Convert_decrementer( _value ) \
((int) (((_value) * 10) / bsp_clicks_per_usec))
#if 0
/* support for simulated clock tick */ /* support for simulated clock tick */
Thread clock_driver_sim_idle_body(uintptr_t); Thread clock_driver_sim_idle_body(uintptr_t);
#define BSP_IDLE_TASK_BODY clock_driver_sim_idle_body #define BSP_IDLE_TASK_BODY clock_driver_sim_idle_body
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@@ -1,14 +1,20 @@
#include <rtems.h> #include <rtems.h>
#include <rtems/bspIo.h> #include <rtems/bspIo.h>
static void
__outb(int port, unsigned char v)
{
*((volatile unsigned char *)(0x80000000 + port)) = v;
}
void BSP_panic(char *s) void BSP_panic(char *s)
{ {
printk("%s PANIC %s\n",_RTEMS_version, s); printk("%s PANIC %s\n",_RTEMS_version, s);
while(1){}; __outb (0x92, 0x01);
} }
void _BSP_Fatal_error(unsigned int v) void _BSP_Fatal_error(unsigned int v)
{ {
printk("%s PANIC ERROR %x\n",_RTEMS_version, v); printk("%s PANIC ERROR %x\n",_RTEMS_version, v);
while(1){}; __outb (0x92, 0x01);
} }

View File

@@ -49,11 +49,6 @@ extern char bsp_interrupt_stack_end[];
extern char bsp_interrupt_stack_size[]; extern char bsp_interrupt_stack_size[];
uint32_t BSP_mem_size = (uint32_t)RamSize; uint32_t BSP_mem_size = (uint32_t)RamSize;
/*
* Time base divisior (how many tick for 1 second).
*/
unsigned int BSP_time_base_divisor;
/* Default decrementer exception handler */ /* Default decrementer exception handler */
static int default_decrementer_exception_handler( BSP_Exception_frame *frame, unsigned number) static int default_decrementer_exception_handler( BSP_Exception_frame *frame, unsigned number)
{ {
@@ -74,7 +69,6 @@ void bsp_start( void )
uint32_t intrStackSize; uint32_t intrStackSize;
int rv = 0; int rv = 0;
rtems_status_code sc; rtems_status_code sc;
/* /*
* Note we can not get CPU identification dynamically, so * Note we can not get CPU identification dynamically, so
* force current_ppc_cpu. * force current_ppc_cpu.
@@ -83,10 +77,11 @@ void bsp_start( void )
/* /*
* initialize the device driver parameters * initialize the device driver parameters
* assume we are running with 20MHz bus
* this should speed up some tests :-)
*/ */
/* BSP_bus_frequency = (unsigned int)&PSIM_INSTRUCTIONS_PER_MICROSECOND; */ BSP_bus_frequency = 20;
/* bsp_clicks_per_usec = BSP_bus_frequency; */ bsp_clicks_per_usec = BSP_bus_frequency;
/* BSP_time_base_divisor = 1; */
/* /*
* Initialize the interrupt related settings. * Initialize the interrupt related settings.

View File

@@ -1,5 +1,4 @@
#if 1
static void static void
__outb(int port, unsigned char v) __outb(int port, unsigned char v)
{ {
@@ -11,7 +10,6 @@ __inb(int port)
{ {
return *((volatile unsigned char *)(0x80000000 + port)); return *((volatile unsigned char *)(0x80000000 + port));
} }
#endif
static void static void
__memcpy (unsigned char *d, unsigned char *s, int len) __memcpy (unsigned char *d, unsigned char *s, int len)
@@ -43,12 +41,12 @@ void cmain (void)
* init variable sections * init variable sections
*/ */
__memcpy (__sdata2_start, __sdata2_load, __sdata2_end - __sdata2_start); __memcpy (__sdata2_start, __sdata2_load, __sdata2_end - __sdata2_start);
__memcpy (__sdata_start, __sdata_load, __sdata_end - __sdata_start); __memcpy (__sdata_start , __sdata_load , __sdata_end - __sdata_start);
__memcpy (__data_start, __data_load, __data_end - __data_start); __memcpy (__data_start , __data_load , __data_end - __data_start);
__bzero (__sbss2_start, __sbss2_end - __sbss2_start); __bzero (__sbss2_start , __sbss2_end - __sbss2_start);
__bzero (__sbss_start, __sbss_end - __sbss_start); __bzero (__sbss_start , __sbss_end - __sbss_start);
__bzero (__bss_start, __bss_end - __bss_start); __bzero (__bss_start , __bss_end - __bss_start);
printk( "hello #\n"); printk( "start of BSP\n");
boot_card(0); boot_card(0);
printk( "end of BSP\n"); printk( "end of BSP\n");
__outb (0x92, 0x01); __outb (0x92, 0x01);

View File

@@ -84,7 +84,11 @@ SECTIONS
__rodata_end = .; __rodata_end = .;
} >ROM =0 } >ROM =0
. = 0x1000; .vectors :
{
. = . + 0x2000; /* skip vector area */
} >RAM
__sdata2_load = __rodata_end; __sdata2_load = __rodata_end;
.sdata2 : AT (__sdata2_load) .sdata2 : AT (__sdata2_load)
{ {
@@ -165,7 +169,8 @@ SECTIONS
bsp_interrupt_stack_end = bsp_interrupt_stack_start + 32k; bsp_interrupt_stack_end = bsp_interrupt_stack_start + 32k;
bsp_interrupt_stack_size = bsp_interrupt_stack_end - bsp_interrupt_stack_start; bsp_interrupt_stack_size = bsp_interrupt_stack_end - bsp_interrupt_stack_start;
WorkAreaBase = .; bsp_work_area_start = bsp_interrupt_stack_end;
WorkAreaBase = bsp_work_area_start;
. = RamBase + RamSize; . = RamBase + RamSize;
.reset : .reset :