change log for rtems (2010-05-20)

rtems-vc at rtems.org rtems-vc at rtems.org
Thu May 20 14:10:51 UTC 2010


 *sh*:
2010-05-20	Sebastian Huber <sebastian.huber at embedded-brains.de>

	* Makefile.am, preinstall.am, include/bsp.h, startup/bspstart.c: Use
	shared output character implementation.

M   1.51  c/src/lib/libbsp/arm/lpc24xx/ChangeLog
M   1.28  c/src/lib/libbsp/arm/lpc24xx/Makefile.am
M    1.9  c/src/lib/libbsp/arm/lpc24xx/include/bsp.h
M   1.19  c/src/lib/libbsp/arm/lpc24xx/preinstall.am
M    1.9  c/src/lib/libbsp/arm/lpc24xx/startup/bspstart.c

diff -u rtems/c/src/lib/libbsp/arm/lpc24xx/ChangeLog:1.50 rtems/c/src/lib/libbsp/arm/lpc24xx/ChangeLog:1.51
--- rtems/c/src/lib/libbsp/arm/lpc24xx/ChangeLog:1.50	Thu May 20 07:59:54 2010
+++ rtems/c/src/lib/libbsp/arm/lpc24xx/ChangeLog	Thu May 20 08:10:55 2010
@@ -1,5 +1,10 @@
 2010-05-20	Sebastian Huber <sebastian.huber at embedded-brains.de>
 
+	* Makefile.am, preinstall.am, include/bsp.h, startup/bspstart.c: Use
+	shared output character implementation.
+
+2010-05-20	Sebastian Huber <sebastian.huber at embedded-brains.de>
+
 	* make/custom/lpc24xx.inc: Workaround for GCC bug 38644.
 
 2010-04-30	Sebastian Huber <sebastian.huber at embedded-brains.de>

diff -u rtems/c/src/lib/libbsp/arm/lpc24xx/Makefile.am:1.27 rtems/c/src/lib/libbsp/arm/lpc24xx/Makefile.am:1.28
--- rtems/c/src/lib/libbsp/arm/lpc24xx/Makefile.am:1.27	Fri Apr 30 08:48:14 2010
+++ rtems/c/src/lib/libbsp/arm/lpc24xx/Makefile.am	Thu May 20 08:10:56 2010
@@ -32,6 +32,7 @@
 include_bsp_HEADERS += ../../shared/include/irq-generic.h
 include_bsp_HEADERS += ../../shared/include/irq-info.h
 include_bsp_HEADERS += ../../shared/include/stackalloc.h
+include_bsp_HEADERS += ../../shared/include/uart-output-char.h
 include_bsp_HEADERS += ../../shared/tod.h
 include_bsp_HEADERS += ../shared/include/linker-symbols.h
 include_bsp_HEADERS += ../shared/include/start.h
@@ -88,6 +89,7 @@
 	../../shared/gnatinstallhandler.c \
 	../../shared/sbrk.c \
 	../../shared/src/stackalloc.c \
+	../../shared/src/uart-output-char.c \
 	../shared/abort/simple_abort.c
 
 # Startup

diff -u rtems/c/src/lib/libbsp/arm/lpc24xx/include/bsp.h:1.8 rtems/c/src/lib/libbsp/arm/lpc24xx/include/bsp.h:1.9
--- rtems/c/src/lib/libbsp/arm/lpc24xx/include/bsp.h:1.8	Tue Jan 12 09:03:21 2010
+++ rtems/c/src/lib/libbsp/arm/lpc24xx/include/bsp.h	Thu May 20 08:10:56 2010
@@ -87,6 +87,8 @@
  */
 void *bsp_idle_thread(uintptr_t ignored);
 
+#define BSP_CONSOLE_UART_BASE 0xe000c000
+
 /** @} */
 
 #endif /* ASM */

diff -u rtems/c/src/lib/libbsp/arm/lpc24xx/preinstall.am:1.18 rtems/c/src/lib/libbsp/arm/lpc24xx/preinstall.am:1.19
--- rtems/c/src/lib/libbsp/arm/lpc24xx/preinstall.am:1.18	Fri Apr 30 08:48:14 2010
+++ rtems/c/src/lib/libbsp/arm/lpc24xx/preinstall.am	Thu May 20 08:10:56 2010
@@ -74,6 +74,10 @@
 	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/stackalloc.h
 PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/stackalloc.h
 
+$(PROJECT_INCLUDE)/bsp/uart-output-char.h: ../../shared/include/uart-output-char.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
+	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/uart-output-char.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/uart-output-char.h
+
 $(PROJECT_INCLUDE)/bsp/tod.h: ../../shared/tod.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
 	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/tod.h
 PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/tod.h

diff -u rtems/c/src/lib/libbsp/arm/lpc24xx/startup/bspstart.c:1.8 rtems/c/src/lib/libbsp/arm/lpc24xx/startup/bspstart.c:1.9
--- rtems/c/src/lib/libbsp/arm/lpc24xx/startup/bspstart.c:1.8	Fri Apr  9 07:24:49 2010
+++ rtems/c/src/lib/libbsp/arm/lpc24xx/startup/bspstart.c	Thu May 20 08:10:56 2010
@@ -29,6 +29,7 @@
 #include <bsp/lpc24xx.h>
 #include <bsp/stackalloc.h>
 #include <bsp/system-clocks.h>
+#include <bsp/uart-output-char.h>
 
 #ifdef LPC24XX_HEAP_EXTEND
   LINKER_SYMBOL(lpc24xx_region_heap_0_begin);
@@ -72,13 +73,7 @@
   #ifdef LPC24XX_CONFIG_CONSOLE
     lpc24xx_module_enable(LPC24XX_MODULE_UART_0, LPC24XX_MODULE_CCLK);
     lpc24xx_io_config(LPC24XX_MODULE_UART_0, LPC24XX_CONFIG_CONSOLE);
-    U0LCR = 0;
-    U0IER = 0;
-    U0LCR = 0x80;
-    U0DLL = lpc24xx_cclk() / 16 / LPC24XX_UART_BAUD;
-    U0DLM = 0;
-    U0LCR = 0x03;
-    U0FCR = 0x07;
+    BSP_CONSOLE_UART_INIT(lpc24xx_cclk() / 16 / LPC24XX_UART_BAUD);
   #endif
 
   /* Interrupts */
@@ -111,22 +106,3 @@
     lpc24xx_io_config(LPC24XX_MODULE_UART_3, LPC24XX_CONFIG_UART_3);
   #endif
 }
-
-#define ULSR_THRE 0x00000020U
-
-static void lpc24xx_BSP_output_char(char c)
-{
-  while (IS_FLAG_CLEARED(U0LSR, ULSR_THRE)) {
-    /* Wait */
-  }
-  U0THR = c;
-
-  if (c == '\n') {
-    while (IS_FLAG_CLEARED(U0LSR, ULSR_THRE)) {
-      /* Wait */
-    }
-    U0THR = '\r';
-  }
-}
-
-BSP_output_char_function_type BSP_output_char = lpc24xx_BSP_output_char;


 *sh*:
2010-05-20	Sebastian Huber <sebastian.huber at embedded-brains.de>

	* make/custom/lpc32xx.inc, make/custom/lpc32xx_mzx_boot_int.cfg,
	startup/linkcmds.lpc32xx_mzx_boot_int: New files.
	* Makefile.am, configure.ac, preinstall.am, include/bsp.h,
	include/bspopts.h.in, include/lpc32xx.h, irq/irq.c,
	make/custom/lpc32xx_phycore.cfg, startup/bspstart.c,
	startup/bspstarthooks.c: Changes throughout.

M   1.10  c/src/lib/libbsp/arm/lpc32xx/ChangeLog
M    1.5  c/src/lib/libbsp/arm/lpc32xx/Makefile.am
M    1.4  c/src/lib/libbsp/arm/lpc32xx/configure.ac
M    1.4  c/src/lib/libbsp/arm/lpc32xx/include/bsp.h
M    1.5  c/src/lib/libbsp/arm/lpc32xx/include/bspopts.h.in
M    1.5  c/src/lib/libbsp/arm/lpc32xx/include/lpc32xx.h
M    1.5  c/src/lib/libbsp/arm/lpc32xx/irq/irq.c
A    1.1  c/src/lib/libbsp/arm/lpc32xx/make/custom/lpc32xx.inc
A    1.1  c/src/lib/libbsp/arm/lpc32xx/make/custom/lpc32xx_mzx_boot_int.cfg
M    1.5  c/src/lib/libbsp/arm/lpc32xx/make/custom/lpc32xx_phycore.cfg
M    1.5  c/src/lib/libbsp/arm/lpc32xx/preinstall.am
M    1.3  c/src/lib/libbsp/arm/lpc32xx/startup/bspstart.c
M    1.5  c/src/lib/libbsp/arm/lpc32xx/startup/bspstarthooks.c
A    1.1  c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_boot_int

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/ChangeLog:1.9 rtems/c/src/lib/libbsp/arm/lpc32xx/ChangeLog:1.10
--- rtems/c/src/lib/libbsp/arm/lpc32xx/ChangeLog:1.9	Thu May 20 08:01:14 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/ChangeLog	Thu May 20 08:15:34 2010
@@ -1,5 +1,14 @@
 2010-05-20	Sebastian Huber <sebastian.huber at embedded-brains.de>
 
+	* make/custom/lpc32xx.inc, make/custom/lpc32xx_mzx_boot_int.cfg,
+	startup/linkcmds.lpc32xx_mzx_boot_int: New files.
+	* Makefile.am, configure.ac, preinstall.am, include/bsp.h,
+	include/bspopts.h.in, include/lpc32xx.h, irq/irq.c,
+	make/custom/lpc32xx_phycore.cfg, startup/bspstart.c,
+	startup/bspstarthooks.c: Changes throughout.
+
+2010-05-20	Sebastian Huber <sebastian.huber at embedded-brains.de>
+
 	* make/custom/lpc32xx_phycore.cfg: Workaround for GCC bug 38644.
 
 2010-04-30	Sebastian Huber <sebastian.huber at embedded-brains.de>

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/Makefile.am:1.4 rtems/c/src/lib/libbsp/arm/lpc32xx/Makefile.am:1.5
--- rtems/c/src/lib/libbsp/arm/lpc32xx/Makefile.am:1.4	Fri Apr 30 08:49:15 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/Makefile.am	Thu May 20 08:15:35 2010
@@ -33,6 +33,7 @@
 include_bsp_HEADERS += ../../shared/include/irq-generic.h
 include_bsp_HEADERS += ../../shared/include/irq-info.h
 include_bsp_HEADERS += ../../shared/include/stackalloc.h
+include_bsp_HEADERS += ../../shared/include/uart-output-char.h
 include_bsp_HEADERS += ../../shared/tod.h
 include_bsp_HEADERS += ../shared/include/linker-symbols.h
 include_bsp_HEADERS += ../shared/include/start.h
@@ -60,7 +61,8 @@
 project_lib_DATA += startup/linkcmds
 project_lib_DATA += ../shared/startup/linkcmds.base
 
-EXTRA_DIST = startup/linkcmds.lpc32xx_phycore
+EXTRA_DIST = startup/linkcmds.lpc32xx_phycore \
+	startup/linkcmds.lpc32xx_mzx_boot_int
 
 ###############################################################################
 #                  LibBSP                                                     #
@@ -83,6 +85,7 @@
 	../../shared/gnatinstallhandler.c \
 	../../shared/sbrk.c \
 	../../shared/src/stackalloc.c \
+	../../shared/src/uart-output-char.c \
 	../shared/abort/simple_abort.c
 
 # Startup

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/configure.ac:1.3 rtems/c/src/lib/libbsp/arm/lpc32xx/configure.ac:1.4
--- rtems/c/src/lib/libbsp/arm/lpc32xx/configure.ac:1.3	Fri Apr  9 07:25:21 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/configure.ac	Thu May 20 08:15:35 2010
@@ -63,6 +63,10 @@
 RTEMS_BSPOPTS_SET([LPC32XX_CONFIG_UART_CLKMODE],[*],[0x00000200U])
 RTEMS_BSPOPTS_HELP([LPC32XX_CONFIG_UART_CLKMODE],[clock mode configuration for UARTs])
 
+RTEMS_BSPOPTS_SET([LPC32XX_DISABLE_MMU],[lpc32xx_boot],[1])
+RTEMS_BSPOPTS_SET([LPC32XX_DISABLE_MMU],[*],[])
+RTEMS_BSPOPTS_HELP([LPC32XX_DISABLE_MMU],[disable MMU])
+
 RTEMS_BSPOPTS_SET([LPC32XX_DISABLE_READ_WRITE_DATA_CACHE],[*],[])
 RTEMS_BSPOPTS_HELP([LPC32XX_DISABLE_READ_WRITE_DATA_CACHE],[disable cache for read-write data sections])
 

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/include/bsp.h:1.3 rtems/c/src/lib/libbsp/arm/lpc32xx/include/bsp.h:1.4
--- rtems/c/src/lib/libbsp/arm/lpc32xx/include/bsp.h:1.3	Fri Apr  9 07:25:22 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/include/bsp.h	Thu May 20 08:15:35 2010
@@ -100,6 +100,8 @@
   return timer->tc;
 }
 
+#define BSP_CONSOLE_UART_BASE 0x40090000
+
 /** @} */
 
 /**

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/include/bspopts.h.in:1.4 rtems/c/src/lib/libbsp/arm/lpc32xx/include/bspopts.h.in:1.5
--- rtems/c/src/lib/libbsp/arm/lpc32xx/include/bspopts.h.in:1.4	Fri Apr  9 07:25:22 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/include/bspopts.h.in	Thu May 20 08:15:35 2010
@@ -33,6 +33,9 @@
 /* clock mode configuration for UARTs */
 #undef LPC32XX_CONFIG_UART_CLKMODE
 
+/* disable MMU */
+#undef LPC32XX_DISABLE_MMU
+
 /* disable MMU protection of read-only sections */
 #undef LPC32XX_DISABLE_READ_ONLY_PROTECTION
 

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/include/lpc32xx.h:1.4 rtems/c/src/lib/libbsp/arm/lpc32xx/include/lpc32xx.h:1.5
--- rtems/c/src/lib/libbsp/arm/lpc32xx/include/lpc32xx.h:1.4	Fri Apr  9 07:25:22 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/include/lpc32xx.h	Thu May 20 08:15:35 2010
@@ -22,6 +22,8 @@
 #ifndef LIBBSP_ARM_LPC32XX_LPC32XX_H
 #define LIBBSP_ARM_LPC32XX_LPC32XX_H
 
+#include <stdint.h>
+
 /**
  * @defgroup lpc32xx_reg Register Definitions
  *

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/irq/irq.c:1.4 rtems/c/src/lib/libbsp/arm/lpc32xx/irq/irq.c:1.5
--- rtems/c/src/lib/libbsp/arm/lpc32xx/irq/irq.c:1.4	Fri Apr 30 08:49:15 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/irq/irq.c	Thu May 20 08:15:35 2010
@@ -308,12 +308,18 @@
 )
 {
   if ((unsigned) exception < MAX_EXCEPTIONS) {
-    uint32_t *table = (uint32_t *) bsp_section_vector_begin + MAX_EXCEPTIONS;
+    #ifndef LPC32XX_DISABLE_MMU
+      uint32_t *table = (uint32_t *) bsp_section_vector_begin + MAX_EXCEPTIONS;
+    #else
+      uint32_t *table = (uint32_t *) bsp_section_start_begin + MAX_EXCEPTIONS;
+    #endif
 
     table [exception] = (uint32_t) handler;
 
-    rtems_cache_flush_multiple_data_lines(NULL, 64);
-    rtems_cache_invalidate_multiple_data_lines(NULL, 64);
+    #ifndef LPC32XX_DISABLE_MMU
+      rtems_cache_flush_multiple_data_lines(table, 64);
+      rtems_cache_invalidate_multiple_instruction_lines(NULL, 64);
+    #endif
   }
 }
 

diff -u /dev/null rtems/c/src/lib/libbsp/arm/lpc32xx/make/custom/lpc32xx.inc:1.1
--- /dev/null	Thu May 20 09:10:51 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/make/custom/lpc32xx.inc	Thu May 20 08:15:35 2010
@@ -0,0 +1,14 @@
+#
+#  Config file for LPC32XX.
+#
+#  $Id$
+#
+
+include $(RTEMS_ROOT)/make/custom/default.cfg
+
+RTEMS_CPU = arm
+
+CPU_CFLAGS = -mstructure-size-boundary=8 -mcpu=arm926ej-s -mfpu=vfp -mfloat-abi=soft -mthumb \
+	-fno-schedule-insns2
+
+CFLAGS_OPTIMIZE_V = -Os -g

diff -u /dev/null rtems/c/src/lib/libbsp/arm/lpc32xx/make/custom/lpc32xx_mzx_boot_int.cfg:1.1
--- /dev/null	Thu May 20 09:10:51 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/make/custom/lpc32xx_mzx_boot_int.cfg	Thu May 20 08:15:35 2010
@@ -0,0 +1,7 @@
+#
+#  Config file for boot loader.
+#
+#  $Id$
+#
+
+include $(RTEMS_ROOT)/make/custom/lpc32xx.inc

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/make/custom/lpc32xx_phycore.cfg:1.4 rtems/c/src/lib/libbsp/arm/lpc32xx/make/custom/lpc32xx_phycore.cfg:1.5
--- rtems/c/src/lib/libbsp/arm/lpc32xx/make/custom/lpc32xx_phycore.cfg:1.4	Thu May 20 08:01:14 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/make/custom/lpc32xx_phycore.cfg	Thu May 20 08:15:35 2010
@@ -4,11 +4,4 @@
 #  $Id$
 #
 
-include $(RTEMS_ROOT)/make/custom/default.cfg
-
-RTEMS_CPU = arm
-
-CPU_CFLAGS = -mstructure-size-boundary=8 -mcpu=arm926ej-s -mfpu=vfp -mfloat-abi=soft -mthumb \
-	-fno-schedule-insns2
-
-CFLAGS_OPTIMIZE_V = -Os -g
+include $(RTEMS_ROOT)/make/custom/lpc32xx.inc

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/preinstall.am:1.4 rtems/c/src/lib/libbsp/arm/lpc32xx/preinstall.am:1.5
--- rtems/c/src/lib/libbsp/arm/lpc32xx/preinstall.am:1.4	Fri Apr 30 08:49:15 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/preinstall.am	Thu May 20 08:15:35 2010
@@ -78,6 +78,10 @@
 	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/stackalloc.h
 PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/stackalloc.h
 
+$(PROJECT_INCLUDE)/bsp/uart-output-char.h: ../../shared/include/uart-output-char.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
+	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/uart-output-char.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/uart-output-char.h
+
 $(PROJECT_INCLUDE)/bsp/tod.h: ../../shared/tod.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
 	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/tod.h
 PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/tod.h

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/startup/bspstart.c:1.2 rtems/c/src/lib/libbsp/arm/lpc32xx/startup/bspstart.c:1.3
--- rtems/c/src/lib/libbsp/arm/lpc32xx/startup/bspstart.c:1.2	Fri Apr  9 07:25:22 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/startup/bspstart.c	Thu May 20 08:15:35 2010
@@ -7,7 +7,7 @@
  */
 
 /*
- * Copyright (c) 2009
+ * Copyright (c) 2009, 2010
  * embedded brains GmbH
  * Obere Lagerstr. 30
  * D-82178 Puchheim
@@ -27,22 +27,6 @@
 #include <bsp/stackalloc.h>
 #include <bsp/lpc32xx.h>
 
-/* FIXME */
-#define CONSOLE_RBR (*(volatile uint32_t *) (LPC32XX_BASE_UART_5 + 0x00))
-#define CONSOLE_THR (*(volatile uint32_t *) (LPC32XX_BASE_UART_5 + 0x00))
-#define CONSOLE_DLL (*(volatile uint32_t *) (LPC32XX_BASE_UART_5 + 0x00))
-#define CONSOLE_DLM (*(volatile uint32_t *) (LPC32XX_BASE_UART_5 + 0x04))
-#define CONSOLE_IER (*(volatile uint32_t *) (LPC32XX_BASE_UART_5 + 0x04))
-#define CONSOLE_IIR (*(volatile uint32_t *) (LPC32XX_BASE_UART_5 + 0x08))
-#define CONSOLE_FCR (*(volatile uint32_t *) (LPC32XX_BASE_UART_5 + 0x08))
-#define CONSOLE_LCR (*(volatile uint32_t *) (LPC32XX_BASE_UART_5 + 0x0C))
-#define CONSOLE_LSR (*(volatile uint32_t *) (LPC32XX_BASE_UART_5 + 0x14))
-#define CONSOLE_SCR (*(volatile uint32_t *) (LPC32XX_BASE_UART_5 + 0x1C))
-#define CONSOLE_ACR (*(volatile uint32_t *) (LPC32XX_BASE_UART_5 + 0x20))
-#define CONSOLE_ICR (*(volatile uint32_t *) (LPC32XX_BASE_UART_5 + 0x24))
-#define CONSOLE_FDR (*(volatile uint32_t *) (LPC32XX_BASE_UART_5 + 0x28))
-#define CONSOLE_TER (*(volatile uint32_t *) (LPC32XX_BASE_UART_5 + 0x30))
-
 static void lpc32xx_timer_initialize(void)
 {
   volatile lpc_timer *timer = LPC32XX_STANDARD_TIMER;
@@ -60,42 +44,6 @@
 
 void bsp_start(void)
 {
-  uint32_t uartclk_ctrl = 0;
-
-  #ifdef LPC32XX_CONFIG_U3CLK
-    uartclk_ctrl |= 1U << 0;
-    LPC32XX_U3CLK = LPC32XX_CONFIG_U3CLK;
-  #endif
-  #ifdef LPC32XX_CONFIG_U4CLK
-    uartclk_ctrl |= 1U << 1;
-    LPC32XX_U4CLK = LPC32XX_CONFIG_U4CLK;
-  #endif
-  #ifdef LPC32XX_CONFIG_U5CLK
-    uartclk_ctrl |= 1U << 2;
-    LPC32XX_U5CLK = LPC32XX_CONFIG_U5CLK;
-  #endif
-  #ifdef LPC32XX_CONFIG_U6CLK
-    uartclk_ctrl |= 1U << 3;
-    LPC32XX_U6CLK = LPC32XX_CONFIG_U6CLK;
-  #endif
-
-  #ifdef LPC32XX_CONFIG_UART_CLKMODE
-    LPC32XX_UART_CLKMODE = LPC32XX_CONFIG_UART_CLKMODE;
-  #endif
-
-  LPC32XX_UARTCLK_CTRL = uartclk_ctrl;
-  LPC32XX_UART_CTRL = 0x0;
-  LPC32XX_UART_LOOP = 0x0;
-
-  /* FIXME */
-  CONSOLE_LCR = 0x0;
-  CONSOLE_IER = 0x0;
-  CONSOLE_LCR = 0x80;
-  CONSOLE_DLL = 0x1; /* Clock is already set in LPC32XX_U5CLK */
-  CONSOLE_DLM = 0x0;
-  CONSOLE_LCR = 0x3;
-  CONSOLE_FCR = 0x7;
-
   if (bsp_interrupt_initialize() != RTEMS_SUCCESSFUL) {
     _CPU_Fatal_halt(0xe);
   }
@@ -107,27 +55,3 @@
 
   lpc32xx_timer_initialize();
 }
-
-#define UART_LSR_THRE 0x00000020U
-
-static void lpc32xx_console_wait(void)
-{
-  while ((CONSOLE_LSR & UART_LSR_THRE) == 0) {
-    /* Wait */
-  }
-}
-
-static void lpc32xx_BSP_output_char(char c)
-{
-  lpc32xx_console_wait();
-
-  CONSOLE_THR = c;
-
-  if (c == '\n') {
-    lpc32xx_console_wait();
-
-    CONSOLE_THR = '\r';
-  }
-}
-
-BSP_output_char_function_type BSP_output_char = lpc32xx_BSP_output_char;

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/startup/bspstarthooks.c:1.4 rtems/c/src/lib/libbsp/arm/lpc32xx/startup/bspstarthooks.c:1.5
--- rtems/c/src/lib/libbsp/arm/lpc32xx/startup/bspstarthooks.c:1.4	Fri Apr  9 07:25:22 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/startup/bspstarthooks.c	Thu May 20 08:15:35 2010
@@ -26,6 +26,7 @@
 #include <bsp/lpc32xx.h>
 #include <bsp/mmu.h>
 #include <bsp/linker-symbols.h>
+#include <bsp/uart-output-char.h>
 
 #ifdef LPC32XX_DISABLE_READ_WRITE_DATA_CACHE
   #define LPC32XX_MMU_READ_WRITE_DATA LPC32XX_MMU_READ_WRITE
@@ -56,94 +57,118 @@
   }
 }
 
-typedef struct {
-  uint32_t begin;
-  uint32_t end;
-  uint32_t flags;
-} lpc32xx_mmu_config;
+#ifndef LPC32XX_DISABLE_MMU
+  typedef struct {
+    uint32_t begin;
+    uint32_t end;
+    uint32_t flags;
+  } lpc32xx_mmu_config;
+
+  static const BSP_START_DATA_SECTION lpc32xx_mmu_config
+    lpc32xx_mmu_config_table [] = {
+    {
+      .begin = (uint32_t) bsp_section_start_begin,
+      .end = (uint32_t) bsp_section_start_end,
+      .flags = LPC32XX_MMU_CODE
+    }, {
+      .begin = (uint32_t) bsp_section_vector_begin,
+      .end = (uint32_t) bsp_section_vector_end,
+      .flags = LPC32XX_MMU_READ_WRITE_CACHED
+    }, {
+      .begin = (uint32_t) bsp_section_text_begin,
+      .end = (uint32_t) bsp_section_text_end,
+      .flags = LPC32XX_MMU_CODE
+    }, {
+      .begin = (uint32_t) bsp_section_rodata_begin,
+      .end = (uint32_t) bsp_section_rodata_end,
+      .flags = LPC32XX_MMU_READ_ONLY_DATA
+    }, {
+      .begin = (uint32_t) bsp_section_data_begin,
+      .end = (uint32_t) bsp_section_data_end,
+      .flags = LPC32XX_MMU_READ_WRITE_DATA
+    }, {
+      .begin = (uint32_t) bsp_section_fast_begin,
+      .end = (uint32_t) bsp_section_fast_end,
+      .flags = LPC32XX_MMU_CODE
+    }, {
+      .begin = (uint32_t) bsp_section_bss_begin,
+      .end = (uint32_t) bsp_section_bss_end,
+      .flags = LPC32XX_MMU_READ_WRITE_DATA
+    }, {
+      .begin = (uint32_t) bsp_section_work_begin,
+      .end = (uint32_t) bsp_section_work_end,
+      .flags = LPC32XX_MMU_READ_WRITE_DATA
+    }, {
+      .begin = (uint32_t) bsp_section_stack_begin,
+      .end = (uint32_t) bsp_section_stack_end,
+      .flags = LPC32XX_MMU_READ_WRITE_DATA
+    }, {
+      .begin = 0x0U,
+      .end = 0x100000U,
+      .flags = LPC32XX_MMU_READ_ONLY_CACHED
+    }, {
+      .begin = 0x20000000U,
+      .end = 0x200c0000U,
+      .flags = LPC32XX_MMU_READ_WRITE
+    }, {
+      .begin = 0x30000000U,
+      .end = 0x32000000U,
+      .flags = LPC32XX_MMU_READ_WRITE
+    }, {
+      .begin = 0x40000000U,
+      .end = 0x40100000U,
+      .flags = LPC32XX_MMU_READ_WRITE
+    }
+  };
 
-static const BSP_START_DATA_SECTION lpc32xx_mmu_config
-  lpc32xx_mmu_config_table [] = {
+  static void BSP_START_SECTION lpc32xx_mmu_set_entries(
+    uint32_t *ttb,
+    const lpc32xx_mmu_config *config
+  )
   {
-    .begin = (uint32_t) bsp_section_start_begin,
-    .end = (uint32_t) bsp_section_start_end,
-    .flags = LPC32XX_MMU_CODE
-  }, {
-    .begin = (uint32_t) bsp_section_vector_begin,
-    .end = (uint32_t) bsp_section_vector_end,
-    .flags = LPC32XX_MMU_READ_WRITE_CACHED
-  }, {
-    .begin = (uint32_t) bsp_section_text_begin,
-    .end = (uint32_t) bsp_section_text_end,
-    .flags = LPC32XX_MMU_CODE
-  }, {
-    .begin = (uint32_t) bsp_section_rodata_begin,
-    .end = (uint32_t) bsp_section_rodata_end,
-    .flags = LPC32XX_MMU_READ_ONLY_DATA
-  }, {
-    .begin = (uint32_t) bsp_section_data_begin,
-    .end = (uint32_t) bsp_section_data_end,
-    .flags = LPC32XX_MMU_READ_WRITE_DATA
-  }, {
-    .begin = (uint32_t) bsp_section_fast_begin,
-    .end = (uint32_t) bsp_section_fast_end,
-    .flags = LPC32XX_MMU_CODE
-  }, {
-    .begin = (uint32_t) bsp_section_bss_begin,
-    .end = (uint32_t) bsp_section_bss_end,
-    .flags = LPC32XX_MMU_READ_WRITE_DATA
-  }, {
-    .begin = (uint32_t) bsp_section_work_begin,
-    .end = (uint32_t) bsp_section_work_end,
-    .flags = LPC32XX_MMU_READ_WRITE_DATA
-  }, {
-    .begin = (uint32_t) bsp_section_stack_begin,
-    .end = (uint32_t) bsp_section_stack_end,
-    .flags = LPC32XX_MMU_READ_WRITE_DATA
-  }, {
-    .begin = 0x0U,
-    .end = 0x100000U,
-    .flags = LPC32XX_MMU_READ_ONLY_CACHED
-  }, {
-    .begin = 0x20000000U,
-    .end = 0x200c0000U,
-    .flags = LPC32XX_MMU_READ_WRITE
-  }, {
-    .begin = 0x30000000U,
-    .end = 0x32000000U,
-    .flags = LPC32XX_MMU_READ_WRITE
-  }, {
-    .begin = 0x40000000U,
-    .end = 0x40100000U,
-    .flags = LPC32XX_MMU_READ_WRITE
+    uint32_t i = ARM_MMU_SECT_GET_INDEX(config->begin);
+    uint32_t iend =
+      ARM_MMU_SECT_GET_INDEX(ARM_MMU_SECT_MVA_ALIGN_UP(config->end));
+
+    if (config->begin != config->end) {
+      while (i < iend) {
+        ttb [i] = (i << ARM_MMU_SECT_BASE_SHIFT) | config->flags;
+        ++i;
+      }
+    }
   }
-};
 
-static void BSP_START_SECTION lpc32xx_mmu_set_entries(
-  uint32_t *ttb,
-  const lpc32xx_mmu_config *config
-)
-{
-  uint32_t i = ARM_MMU_SECT_GET_INDEX(config->begin);
-  uint32_t iend = ARM_MMU_SECT_GET_INDEX(ARM_MMU_SECT_MVA_ALIGN_UP(config->end));
+  static void BSP_START_SECTION
+    lpc32xx_setup_translation_table_and_enable_mmu(uint32_t ctrl)
+  {
+    uint32_t const dac =
+      ARM_CP15_DAC_DOMAIN(LPC32XX_MMU_CLIENT_DOMAIN, ARM_CP15_DAC_CLIENT);
+    uint32_t *const ttb = (uint32_t *) bsp_section_work_end;
+    size_t const config_entry_count =
+      sizeof(lpc32xx_mmu_config_table) / sizeof(lpc32xx_mmu_config_table [0]);
+    size_t i = 0;
+
+    arm_cp15_set_domain_access_control(dac);
+    arm_cp15_set_translation_table_base(ttb);
+
+    /* Initialize translation table with invalid entries */
+    for (i = 0; i < ARM_MMU_TRANSLATION_TABLE_ENTRY_COUNT; ++i) {
+      ttb [i] = 0;
+    }
 
-  if (config->begin != config->end) {
-    while (i < iend) {
-      ttb [i] = (i << ARM_MMU_SECT_BASE_SHIFT) | config->flags;
-      ++i;
+    for (i = 0; i < config_entry_count; ++i) {
+      lpc32xx_mmu_set_entries(ttb, &lpc32xx_mmu_config_table [i]);
     }
+
+    /* Enable MMU and cache */
+    ctrl |= ARM_CP15_CTRL_I | ARM_CP15_CTRL_C | ARM_CP15_CTRL_M;
+    arm_cp15_set_control(ctrl);
   }
-}
+#endif
 
 static void BSP_START_SECTION lpc32xx_mmu_and_cache_setup(void)
 {
-  uint32_t const dac =
-    ARM_CP15_DAC_DOMAIN(LPC32XX_MMU_CLIENT_DOMAIN, ARM_CP15_DAC_CLIENT);
   uint32_t ctrl = 0;
-  uint32_t *const ttb = (uint32_t *) bsp_section_work_end;
-  size_t const config_entry_count =
-    sizeof(lpc32xx_mmu_config_table) / sizeof(lpc32xx_mmu_config_table [0]);
-  size_t i = 0;
 
   /* Disable MMU and cache, basic settings */
   ctrl = arm_cp15_get_control();
@@ -155,21 +180,9 @@
   arm_cp15_cache_invalidate();
   arm_cp15_tlb_invalidate();
 
-  arm_cp15_set_domain_access_control(dac);
-  arm_cp15_set_translation_table_base(ttb);
-
-  /* Initialize translation table with invalid entries */
-  for (i = 0; i < ARM_MMU_TRANSLATION_TABLE_ENTRY_COUNT; ++i) {
-    ttb [i] = 0;
-  }
-
-  for (i = 0; i < config_entry_count; ++i) {
-    lpc32xx_mmu_set_entries(ttb, &lpc32xx_mmu_config_table [i]);
-  }
-
-  /* Enable MMU and cache */
-  ctrl |= ARM_CP15_CTRL_I | ARM_CP15_CTRL_C | ARM_CP15_CTRL_M;
-  arm_cp15_set_control(ctrl);
+  #ifndef LPC32XX_DISABLE_MMU
+    lpc32xx_setup_translation_table_and_enable_mmu(ctrl);
+  #endif
 }
 
 void BSP_START_SECTION bsp_start_hook_0(void)
@@ -177,9 +190,44 @@
   lpc32xx_mmu_and_cache_setup();
 }
 
+static void BSP_START_SECTION bsp_start_config_uarts(void)
+{
+  uint32_t uartclk_ctrl = 0;
+
+  #ifdef LPC32XX_CONFIG_U3CLK
+    uartclk_ctrl |= 1U << 0;
+    LPC32XX_U3CLK = LPC32XX_CONFIG_U3CLK;
+  #endif
+  #ifdef LPC32XX_CONFIG_U4CLK
+    uartclk_ctrl |= 1U << 1;
+    LPC32XX_U4CLK = LPC32XX_CONFIG_U4CLK;
+  #endif
+  #ifdef LPC32XX_CONFIG_U5CLK
+    uartclk_ctrl |= 1U << 2;
+    LPC32XX_U5CLK = LPC32XX_CONFIG_U5CLK;
+  #endif
+  #ifdef LPC32XX_CONFIG_U6CLK
+    uartclk_ctrl |= 1U << 3;
+    LPC32XX_U6CLK = LPC32XX_CONFIG_U6CLK;
+  #endif
+
+  #ifdef LPC32XX_CONFIG_UART_CLKMODE
+    LPC32XX_UART_CLKMODE = LPC32XX_CONFIG_UART_CLKMODE;
+  #endif
+
+  LPC32XX_UARTCLK_CTRL = uartclk_ctrl;
+  LPC32XX_UART_CTRL = 0x0;
+  LPC32XX_UART_LOOP = 0x0;
+
+  #ifdef LPC32XX_CONFIG_U5CLK
+    /* Clock is already set in LPC32XX_U5CLK */
+    BSP_CONSOLE_UART_INIT(0x01);
+  #endif
+}
+
 void BSP_START_SECTION bsp_start_hook_1(void)
 {
-  /* TODO */
+  bsp_start_config_uarts();
 
   /* Copy .text section */
   arm_cp15_instruction_cache_invalidate();

diff -u /dev/null rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_boot_int:1.1
--- /dev/null	Thu May 20 09:10:51 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_boot_int	Thu May 20 08:15:35 2010
@@ -0,0 +1,57 @@
+/**
+ * @file
+ *
+ * @ingroup lpc32xx_linker_boot
+ *
+ * @brief Memory map.
+ */
+
+/**
+ * @defgroup lpc32xx_linker_boot Boot Memory Map
+ *
+ * @ingroup bsp_linker
+ *
+ * @brief Boot memory map.
+ *
+ * <table>
+ *   <tr><th>Region Name</th><th>Region Begin</th><th>Region Size</th></tr>
+ *   <tr><td>RAM_INT</td><td>0x08000000</td><td>256k</td></tr>
+ * </table>
+ *
+ * <table>
+ *   <tr><th>Section Name</th><th>Section Runtime Region</th><th>Section Load Region</th></tr>
+ *   <tr><td>.start</td><td>RAM_INT</td><td></td></tr>
+ *   <tr><td>.vector</td><td>RAM_INT</td><td></td></tr>
+ *   <tr><td>.text</td><td>RAM_INT</td><td>RAM_INT</td></tr>
+ *   <tr><td>.rodata</td><td>RAM_INT</td><td>RAM_INT</td></tr>
+ *   <tr><td>.data</td><td>RAM_INT</td><td>RAM_INT</td></tr>
+ *   <tr><td>.fast</td><td>RAM_INT</td><td>RAM_INT</td></tr>
+ *   <tr><td>.bss</td><td>RAM_INT</td><td></td></tr>
+ *   <tr><td>.work</td><td>RAM_INT</td><td></td></tr>
+ *   <tr><td>.stack</td><td>RAM_INT</td><td></td></tr>
+ * </table>
+ */
+
+MEMORY {
+        RAM_INT (AIW) : ORIGIN = 0x08000000, LENGTH = 256k
+        NIRVANA : ORIGIN = 0, LENGTH = 0
+}
+
+REGION_ALIAS ("REGION_START", RAM_INT);
+REGION_ALIAS ("REGION_VECTOR", RAM_INT);
+REGION_ALIAS ("REGION_TEXT", RAM_INT);
+REGION_ALIAS ("REGION_TEXT_LOAD", RAM_INT);
+REGION_ALIAS ("REGION_RODATA", RAM_INT);
+REGION_ALIAS ("REGION_RODATA_LOAD", RAM_INT);
+REGION_ALIAS ("REGION_DATA", RAM_INT);
+REGION_ALIAS ("REGION_DATA_LOAD", RAM_INT);
+REGION_ALIAS ("REGION_FAST", RAM_INT);
+REGION_ALIAS ("REGION_FAST_LOAD", RAM_INT);
+REGION_ALIAS ("REGION_BSS", RAM_INT);
+REGION_ALIAS ("REGION_WORK", RAM_INT);
+REGION_ALIAS ("REGION_STACK", RAM_INT);
+
+bsp_stack_irq_size = DEFINED (bsp_stack_irq_size) ? bsp_stack_irq_size : 4096;
+bsp_stack_abt_size = DEFINED (bsp_stack_abt_size) ? bsp_stack_abt_size : 1024;
+
+INCLUDE linkcmds.base



--

Generated by Deluxe Loginfo [http://www.codewiz.org/projects/index.html#loginfo] 2.122 by Bernardo Innocenti <bernie at develer.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/vc/attachments/20100520/d2a91968/attachment.html>


More information about the vc mailing list