Patch from Aleksey (Quality Quorum <qqi@world.std.com>) to

increase ease of application configuration of the pc386 BSP.  This
patch allows switching the printk console to a serial port and
overriding bsp_start by making it a weak alias.
This commit is contained in:
Joel Sherrill
1999-10-27 20:50:57 +00:00
parent e4487b6cd8
commit 45544f0d01
2 changed files with 36 additions and 19 deletions

View File

@@ -49,16 +49,17 @@ void __assert (const char *file, int line, const char *msg);
* BSP_CONSOLE_PORT_CONSOLE * BSP_CONSOLE_PORT_CONSOLE
* BSP_UART_COM1 * BSP_UART_COM1
* BSP_UART_COM2 * BSP_UART_COM2
*/ *
* Note:
/* * 1. Currently BSPPrintkPort, cannot be assigned to COM2,
* Possible value for console input/output : * it will be fixed soon.
* BSP_CONSOLE_PORT_CONSOLE *
* BSP_UART_COM1 * 2. If both BSPConsolePort and BSPPrintkport are assigned
* BSP_UART_COM2 * to same serial device it does not work that great
*/ */
int BSPConsolePort = BSP_CONSOLE_PORT_CONSOLE; int BSPConsolePort = BSP_CONSOLE_PORT_CONSOLE;
int BSPPrintkPort = BSP_CONSOLE_PORT_CONSOLE;
/* int BSPConsolePort = BSP_UART_COM2; */ /* int BSPConsolePort = BSP_UART_COM2; */
int BSPBaseBaud = 115200; int BSPBaseBaud = 115200;
@@ -231,17 +232,26 @@ console_initialize(rtems_device_major_number major,
{ {
printk("Initialized console on port COM2 9600-8-N-1\n\n"); printk("Initialized console on port COM2 9600-8-N-1\n\n");
} }
#define PRINTK_ON_SERIAL
#ifdef PRINTK_ON_SERIAL if(BSPPrintkPort == BSP_UART_COM1)
/* {
* You can remove the follwoing tree lines if you want to have printk printk("Warning : This will be the last message on console\n");
* using the video console for output while printf use serial line.
* This may be convenient to debug the serial line driver itself... /*
*/ * FIXME: cast below defeats the very idea of having
/* printk("Warning : This will be the last message displayed on console\n");*/ * function pointer types defined
BSP_output_char = (BSP_output_char_function_type) BSP_output_char_via_serial; */
BSP_poll_char = (BSP_polling_getchar_function_type) BSP_poll_char_via_serial; BSP_output_char = (BSP_output_char_function_type)
#endif BSP_output_char_via_serial;
BSP_poll_char = (BSP_polling_getchar_function_type)
BSP_poll_char_via_serial;
}
else if(BSPPrintkPort != BSP_CONSOLE_PORT_CONSOLE)
{
printk("illegal assignement of projtk channel");
rtems_fatal_error_occurred (status);
}
} }
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} /* console_initialize */ } /* console_initialize */

View File

@@ -136,7 +136,7 @@ void bsp_pretasking_hook(void)
| Arguments: None. | Arguments: None.
| Returns: Nothing. | Returns: Nothing.
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
void bsp_start( void ) void bsp_start_default( void )
{ {
/* /*
* Calibrate variable for 1ms-loop (see timer.c) * Calibrate variable for 1ms-loop (see timer.c)
@@ -207,3 +207,10 @@ void bsp_start( void )
printk( "work_space_size = 0x%x\n", BSP_Configuration.work_space_size ); printk( "work_space_size = 0x%x\n", BSP_Configuration.work_space_size );
#endif #endif
} /* bsp_start */ } /* bsp_start */
/*
* By making this a weak alias for bsp_start_default, a brave soul
* can override the actual bsp_start routine used.
*/
void bsp_start (void) __attribute__ ((weak, alias("bsp_start_default")));