From 241f70de7a2f37d3129dc3ca7786909ce1a437c2 Mon Sep 17 00:00:00 2001 From: patacongo Date: Wed, 30 Jan 2008 00:59:17 +0000 Subject: [PATCH] Added low-level console driver git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@585 42af7a65-404d-4744-a932-0658087f49c3 --- arch/z16/src/common/up_initialize.c | 6 ++++++ arch/z16/src/common/up_internal.h | 20 +++++++++++++++---- arch/z16/src/z16f/z16f_head.S | 14 +++++++++----- arch/z16/src/z16f/z16f_lowuart.S | 6 +++--- arch/z16/src/z16f/z16f_serial.c | 30 +++++++++++++++++++++-------- 5 files changed, 56 insertions(+), 20 deletions(-) diff --git a/arch/z16/src/common/up_initialize.c b/arch/z16/src/common/up_initialize.c index 8a30d33ad1..b7fc643d23 100644 --- a/arch/z16/src/common/up_initialize.c +++ b/arch/z16/src/common/up_initialize.c @@ -160,7 +160,13 @@ void up_initialize(void) /* Initialize the serial device driver */ +#ifdef CONFIG_USE_SERIALDRIVER up_serialinit(); +#endif + +#ifdef CONFIG_USE_LOWCONSOLE + lowconsole_init(); +#endif /* Initialize the netwok */ diff --git a/arch/z16/src/common/up_internal.h b/arch/z16/src/common/up_internal.h index f6acb97a68..144fee7542 100644 --- a/arch/z16/src/common/up_internal.h +++ b/arch/z16/src/common/up_internal.h @@ -58,6 +58,17 @@ #undef CONFIG_SUPPRESS_UART_CONFIG /* Do not reconfig UART */ #undef CONFIG_DUMP_ON_EXIT /* Dump task state on exit */ +/* Determine which (if any) console driver to use */ + +#if defined(CONFIG_ARCH_LOWPUTC) || defined(CONFIG_ARCH_LOWGETC) || \ + CONFIG_NFILE_DESCRIPTORS == 0 || defined(CONFIG_DEV_LOWCONSOLE) +# define CONFIG_USE_LOWCONSOLE 1 +# define CONFIG_USE_LOWUARTINIT 1 +#elif defined(CONFIG_DEV_CONSOLE) && CONFIG_NFILE_DESCRIPTORS > 0 +# define CONFIG_USE_SERIALDRIVER 1 +# define CONFIG_USE_EARLYSERIALINIT 1 +#endif + /* Macros for portability */ #define IN_INTERRUPT (current_regs != NULL) @@ -118,12 +129,13 @@ void up_addregion(void); /* Defined in up_serial.c */ -#if CONFIG_NFILE_DESCRIPTORS > 0 +#ifdef CONFIG_USE_SERIALDRIVER extern void up_earlyserialinit(void); extern void up_serialinit(void); -#else -# define up_earlyserialinit() -# define up_serialinit() +#endif + +#ifdef CONFIG_USE_LOWCONSOLE +extern void lowconsole_init(void); #endif /* Defined in up_timerisr.c */ diff --git a/arch/z16/src/z16f/z16f_head.S b/arch/z16/src/z16f/z16f_head.S index f6108c250a..88b9ca5bb2 100755 --- a/arch/z16/src/z16f/z16f_head.S +++ b/arch/z16/src/z16f/z16f_head.S @@ -40,6 +40,11 @@ #include #include +#include "common/up_internal.h" + +/************************************************************************** + * Definitions + **************************************************************************/ /************************************************************************** * External References / External Definitions @@ -50,10 +55,9 @@ #ifdef CONFIG_ARCH_LEDS xref _up_ledinit:EROM #endif -#if defined(CONFIG_ARCH_LOWPUTC) || defined(CONFIG_ARCH_LOWGETC) || CONFIG_NFILE_DESCRIPTORS == 0 +#if defined(CONFIG_USE_LOWUARTINIT) xref _z16f_lowuartinit:EROM -#endif -#if defined(CONFIG_DEV_CONSOLE) && CONFIG_NFILE_DESCRIPTORS > 0 +#elif defined(CONFIG_USE_EARLYSERIALINIT) xref _up_earlyserialinit:EROM #endif xref _os_start:EROM @@ -157,7 +161,7 @@ _z16f_reset: #endif /* Perform VERY early UART initialization so that we can use it here */ -#if defined(CONFIG_ARCH_LOWPUTC) || defined(CONFIG_ARCH_LOWGETC) || CONFIG_NFILE_DESCRIPTORS == 0 +#ifdef CONFIG_USE_LOWUARTINIT call _z16f_lowuartinit /* Initialize the UART for debugging */ #endif /* Initialize the hardware stack overflow register */ @@ -210,7 +214,7 @@ _z16f_reset8: call _z16f_lowinit /* Perform low-level hardware initialization */ -#if defined(CONFIG_DEV_CONSOLE) && CONFIG_NFILE_DESCRIPTORS > 0 +#ifdef CONFIG_USE_EARLYSERIALINIT /* Perform early serial initialization */ call _up_earlyserialinit diff --git a/arch/z16/src/z16f/z16f_lowuart.S b/arch/z16/src/z16f/z16f_lowuart.S index bea5f25fc5..1dedf16b3c 100755 --- a/arch/z16/src/z16f/z16f_lowuart.S +++ b/arch/z16/src/z16f/z16f_lowuart.S @@ -40,8 +40,9 @@ #include #include "chip/chip.h" +#include "common/up_internal.h" -#if defined(CONFIG_ARCH_LOWPUTC) || defined(CONFIG_ARCH_LOWGETC) || CONFIG_NFILE_DESCRIPTORS == 0 +#ifdef CONFIG_USE_LOWUARTINIT /************************************************************************* * External References / External Definitions @@ -120,6 +121,7 @@ _z16f_lowuartinit: ld.b Z16F_UART0_CTL0, r0 /* Z16F_UART0_CTL0 = %c0 */ #endif ret /* Return */ +#endif /* CONFIG_USE_LOWUARTINIT */ /************************************************************************* * Name: _up_lowputc @@ -222,7 +224,5 @@ _up_lowgetc3: /* Return value in r0 */ ret /* Return */ #endif -#endif /* CONFIG_ARCH_LOWPUTC || CONFIG_ARCH_LOWGETC */ - end diff --git a/arch/z16/src/z16f/z16f_serial.c b/arch/z16/src/z16f/z16f_serial.c index ce40a497f5..1446c5c578 100644 --- a/arch/z16/src/z16f/z16f_serial.c +++ b/arch/z16/src/z16f/z16f_serial.c @@ -55,14 +55,12 @@ #include "os_internal.h" #include "up_internal.h" -#if CONFIG_NFILE_DESCRIPTORS > 0 +#ifdef CONFIG_USE_SERIALDRIVER /**************************************************************************** * Definitions ****************************************************************************/ -#define BASE_BAUD 115200 - /* System clock frequency value from ZDS target settings */ extern _Erom unsigned long SYS_CLK_FREQ; @@ -737,7 +735,7 @@ int up_putc(int ch) return ch; } -#else /* CONFIG_NFILE_DESCRIPTORS > 0 */ +#else /* CONFIG_USE_SERIALDRIVER */ /**************************************************************************** * Definitions @@ -755,11 +753,23 @@ int up_putc(int ch) putreg8((ubyte)(ch), Z16F_UART0_TXD) #endif +/**************************************************************************** + * Private Function Prototypes + ****************************************************************************/ + +/**************************************************************************** + * Private Variables + ****************************************************************************/ + /**************************************************************************** * Private Functions ****************************************************************************/ -static void _up_putc(int ch) +/**************************************************************************** + * Name: z16f_putc + ****************************************************************************/ + +static void z16f_putc(int ch) { int tmp; for (tmp = 1000 ; tmp > 0 && !z16f_contrde(); tmp--); @@ -770,6 +780,10 @@ static void _up_putc(int ch) * Public Functions ****************************************************************************/ +/**************************************************************************** + * Name: up_putc + ****************************************************************************/ + int up_putc(int ch) { /* Check for LF */ @@ -778,13 +792,13 @@ int up_putc(int ch) { /* Output CR before LF */ - _up_putc('\r'); + z16f_putc('\r'); } /* Output character */ - _up_putc(ch); + z16f_putc(ch); return ch; } -#endif /* CONFIG_NFILE_DESCRIPTORS > 0 */ +#endif /* CONFIG_USE_SERIALDRIVER */