Olimex LPC-MT platform

Thomas Schrein thomas@schrein.com
Fri Nov 19 12:25:00 GMT 2004


A lot of  thanx for your effort porting eCos to the lpc-chip-set.

Best regards
Thomas Schrein


Jani Monoses wrote:

> Basic support for another Olimex board.
>
>------------------------------------------------------------------------
>
>--- orig/packages/ecos.db
>+++ mod/packages/ecos.db
>@@ -2459,6 +2459,15 @@
>         LPC-2106 evaluation board from Olimex."
> }
> 
>+package CYGPKG_HAL_ARM_LPC2XXX_LPCMT {
>+	alias		{ "Olimex evaluation board LPC-MT " hal_lpcmt_arm }
>+	directory	hal/arm/lpc2xxx/lpcmt
>+	script		hal_arm_lpc2xxx_lpcmt.cdl
>+	hardware
>+	description "
>+	The lpcmt HAL package provides the support needed to run eCos on an the 
>+	LPC-MT evaluation board from Olimex."
>+}
> package CYGPKG_HAL_ARM_EBSA285 {
> 	alias		{ "Intel EBSA285 StrongARM board" hal_arm_ebsa285 arm_ebsa285_hal }
> 	directory	hal/arm/ebsa285
>@@ -4106,6 +4115,20 @@
>         LPC-P2106 evaluation board from Olimex."
> }
> 
>+target lpcmt {
>+	alias { "Olimex evaluation board LPC-LPCMT" lpcmt }
>+	packages { CYGPKG_HAL_ARM
>+                   CYGPKG_HAL_ARM_LPC2XXX
>+                   CYGPKG_HAL_ARM_LPC2XXX_LPCMT
>+                   CYGPKG_IO_SERIAL_GENERIC_16X5X
>+                   CYGPKG_IO_SERIAL_ARM_LPC2XXX
>+                   CYGPKG_DEVICES_WATCHDOG_ARM_LPC2XXX
>+        }
>+        description "
>+        The lpcmt target provides the packages needed to run eCos on the
>+        LPC-LPCMT evaluation board from Olimex."
>+}
>+
> target ebsa285 {
> 	alias { "Intel EBSA285 StrongARM board" ebsa }
> 	packages { CYGPKG_HAL_ARM
>
>
>
>* added files
>
>--- /dev/null
>+++ mod/packages/hal/arm/lpc2xxx/lpcmt/current/ChangeLog
>@@ -0,0 +1,45 @@
>+2004-11-19  Jani Monoses <jani@iv.ro>
>+
>+	* cdl/hal_arm_lpc2xxx_lpcmt.cdl: 
>+	* include/plf_io.h: 
>+	* include/hal_platform_setup.h: 
>+	* include/pkgconf/mlt_arm_lpc2xxx_lpcmt_rom.ldi: 
>+	* include/pkgconf/mlt_arm_lpc2xxx_lpcmt_rom.h: 
>+	* include/pkgconf/mlt_arm_lpc2xxx_lpcmt_ram.ldi: 
>+	* include/pkgconf/mlt_arm_lpc2xxx_lpcmt_ram.h: 
>+	* src/lpcmt_misc.c: 
>+	New HAL platform added to support the Olimex LPC-MT board.
>+
>+//===========================================================================
>+//####ECOSGPLCOPYRIGHTBEGIN####
>+// -------------------------------------------
>+// This file is part of eCos, the Embedded Configurable Operating System.
>+// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
>+// Copyright (C) 2003 Nick Garnett <nickg@calivar.com>
>+// Copyright (C) 2004 eCosCentric Limited 
>+//
>+// eCos is free software; you can redistribute it and/or modify it under
>+// the terms of the GNU General Public License as published by the Free
>+// Software Foundation; either version 2 or (at your option) any later version.
>+//
>+// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
>+// WARRANTY; without even the implied warranty of MERCHANTABILITY or
>+// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
>+// for more details.
>+//
>+// You should have received a copy of the GNU General Public License along
>+// with eCos; if not, write to the Free Software Foundation, Inc.,
>+// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
>+//
>+// As a special exception, if other files instantiate templates or use macros
>+// or inline functions from this file, or you compile this file and link it
>+// with other works to produce a work based on this file, this file does not
>+// by itself cause the resulting work to be covered by the GNU General Public
>+// License. However the source code for this file must still be made available
>+// in accordance with section (3) of the GNU General Public License.
>+//
>+// This exception does not invalidate any other reasons why a work based on
>+// this file might be covered by the GNU General Public License.
>+// -------------------------------------------
>+//####ECOSGPLCOPYRIGHTEND####
>+//===========================================================================
>--- /dev/null
>+++ mod/packages/hal/arm/lpc2xxx/lpcmt/current/cdl/hal_arm_lpc2xxx_lpcmt.cdl
>@@ -0,0 +1,279 @@
>+# ====================================================================
>+#
>+#      hal_arm_lpc2xxx_lpcmt.cdl
>+#
>+#      ARM LPC2XXX LPCMT HAL package configuration data
>+#
>+# ====================================================================
>+#####ECOSGPLCOPYRIGHTBEGIN####
>+## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
>+## Copyright (C) 2003 Nick Garnett <nickg@calivar.com>
>+## Copyright (C) 2004 eCosCentric Limited 
>+##
>+## eCos is free software; you can redistribute it and/or modify it under
>+## the terms of the GNU General Public License as published by the Free
>+## Software Foundation; either version 2 or (at your option) any later version.
>+##
>+## eCos is distributed in the hope that it will be useful, but WITHOUT ANY
>+## WARRANTY; without even the implied warranty of MERCHANTABILITY or
>+## FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
>+## for more details.
>+##
>+## You should have received a copy of the GNU General Public License along
>+## with eCos; if not, write to the Free Software Foundation, Inc.,
>+## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
>+##
>+## As a special exception, if other files instantiate templates or use macros
>+## or inline functions from this file, or you compile this file and link it
>+## with other works to produce a work based on this file, this file does not
>+## by itself cause the resulting work to be covered by the GNU General Public
>+## License. However the source code for this file must still be made available
>+## in accordance with section (3) of the GNU General Public License.
>+##
>+## This exception does not invalidate any other reasons why a work based on
>+## this file might be covered by the GNU General Public License.
>+## -------------------------------------------
>+#####ECOSGPLCOPYRIGHTEND####
>+# ====================================================================
>+######DESCRIPTIONBEGIN####
>+#
>+# Author(s):      jani 
>+# Contributors:   gthomas, tkoeller, nickg
>+# Date:           2004-10-14
>+#
>+#####DESCRIPTIONEND####
>+#
>+# ====================================================================
>+
>+cdl_package CYGPKG_HAL_ARM_LPC2XXX_LPCMT {
>+    display       "Olimex LPCMT eval board HAL"
>+    parent        CYGPKG_HAL_ARM_LPC2XXX
>+    define_header hal_arm_lpc2xxx_lpcmt.h
>+    include_dir   cyg/hal
>+    hardware
>+    description   "
>+        The LPCMT HAL package provides the support needed to run
>+        eCos on an Olimex LPCMT eval board."
>+
>+    compile       lpcmt_misc.c
>+
>+    requires      { CYGHWR_HAL_ARM_LPC2XXX == "LPC210x" }
>+
>+    define_proc {
>+        puts $::cdl_system_header "#define CYGBLD_HAL_TARGET_H   <pkgconf/hal_arm.h>"
>+        puts $::cdl_system_header "#define CYGBLD_HAL_VARIANT_H  <pkgconf/hal_arm_lpc2xxx.h>"
>+        puts $::cdl_system_header "#define CYGBLD_HAL_PLATFORM_H <pkgconf/hal_arm_lpc2xxx_lpcmt.h>"
>+        puts $::cdl_system_header "#define CYGBLD_HAL_ARM_VAR_IO_H"
>+        puts $::cdl_header "#define HAL_PLATFORM_CPU    \"ARM7TDMI-S\""
>+        puts $::cdl_header "#define HAL_PLATFORM_BOARD  \"Olimex LPC2XXX/LPCMT\""
>+        puts $::cdl_header "#define HAL_PLATFORM_EXTRA  \"\""
>+    }
>+    
>+    cdl_component CYG_HAL_STARTUP {
>+        display       "Startup type"
>+        flavor        data
>+        default_value {"ROM"}
>+        legal_values  {"ROM" "RAM"}
>+	no_define
>+	define -file system.h CYG_HAL_STARTUP
>+        description   "
>+            Chose ROM or RAM startup type."
>+    }
>+    
>+    cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS {
>+        display      "Number of communication channels on the board"
>+        flavor       data
>+        calculated   1
>+    }
>+ 
>+    cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL {
>+        display          "Debug serial port"
>+        active_if        CYGPRI_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_CONFIGURABLE
>+        flavor data
>+        legal_values     0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
>+        default_value    0
>+        description      "
>+            The LPCMT board has one serial port."
>+     }
>+ 
>+     cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL {
>+         display          "Diagnostic serial port"
>+         active_if        CYGPRI_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_CONFIGURABLE
>+         flavor data
>+         legal_values     0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
>+         default_value    0
>+         description      "
>+            The LPCMT board has one serial port."
>+     }
>+     
>+     cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD {
>+        display       "Diagnostic serial port baud rate"
>+        flavor        data
>+        legal_values  9600 19200 38400 57600 115200
>+        default_value 38400
>+        description   "
>+            This option selects the baud rate used for the diagnostic port."
>+    }
>+ 
>+    cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_BAUD {
>+         display       "GDB serial port baud rate"
>+         flavor        data
>+         legal_values  9600 19200 38400 57600 115200
>+         default_value 38400
>+         description   "
>+            This option controls the baud rate used for the GDB connection."
>+     }
>+    
>+    # Real-time clock/counter specifics
>+    cdl_option CYGNUM_HAL_ARM_LPC2XXX_XTAL_FREQ {
>+        display       "CPU clock speed"
>+        flavor        data
>+        default_value {14745600}
>+    }
>+
>+    cdl_option CYGNUM_HAL_ARM_LPC2XXX_PLL_MUL {
>+        display       "CPU clock speed"
>+        flavor        data
>+        default_value {4}
>+    }
>+ 
>+    # Real-time clock/counter specifics
>+    cdl_option CYGNUM_HAL_ARM_LPC2XXX_CLOCK_SPEED {
>+        display       "CPU clock speed"
>+        flavor        data
>+        calculated { CYGNUM_HAL_ARM_LPC2XXX_PLL_MUL * CYGNUM_HAL_ARM_LPC2XXX_XTAL_FREQ }
>+    }
>+    
>+    cdl_component CYGBLD_GLOBAL_OPTIONS {
>+        display "Global build options"
>+        flavor  none
>+        parent  CYGPKG_NONE
>+        description   "
>+	    Global build options including control over
>+	    compiler flags, linker flags and choice of toolchain."
>+
>+
>+        cdl_option CYGBLD_GLOBAL_COMMAND_PREFIX {
>+            display "Global command prefix"
>+            flavor  data
>+            no_define
>+            default_value { "arm-elf" }
>+            description "
>+                This option specifies the command prefix used when
>+                invoking the build tools."
>+        }
>+
>+        cdl_option CYGBLD_GLOBAL_CFLAGS {
>+            display "Global compiler flags"
>+            flavor  data
>+            no_define
>+            default_value { (CYGHWR_THUMB ? "-mthumb " : "") . (CYGBLD_ARM_ENABLE_THUMB_INTERWORK ? "-mthumb-interwork " : "") . "-mcpu=arm7tdmi -mno-short-load-words -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" }
>+            description   "
>+                This option controls the global compiler flags which are used to
>+                compile all packages by default. Individual packages may define
>+                options which override these global flags."
>+        }
>+
>+        cdl_option CYGBLD_GLOBAL_LDFLAGS {
>+            display "Global linker flags"
>+            flavor  data
>+            no_define
>+            default_value { (CYGHWR_THUMB ? "-mthumb " : "") . (CYGBLD_ARM_ENABLE_THUMB_INTERWORK ? "-mthumb-interwork " : "") . "-mcpu=arm7tdmi -mno-short-load-words -Wl,--gc-sections -Wl,-static -g -nostdlib" }
>+            description   "
>+                This option controls the global linker flags. Individual
>+                packages may define options which override these global flags."
>+        }
>+    }
>+
>+    cdl_option CYGSEM_HAL_ROM_MONITOR {
>+        display       "Behave as a ROM monitor"
>+        flavor        bool
>+        default_value 0
>+        parent        CYGPKG_HAL_ROM_MONITOR
>+        requires      { CYG_HAL_STARTUP == "ROM" || CYG_HAL_STARTUP == "ROMRAM" }
>+        description   "
>+            Enable this option if this program is to be used as a ROM monitor,
>+            i.e. applications will be loaded into RAM on the board, and this
>+            ROM monitor may process exceptions or interrupts generated from the
>+            application. This enables features such as utilizing a separate
>+            interrupt stack when exceptions are generated."
>+    }
>+
>+    cdl_option CYGSEM_HAL_USE_ROM_MONITOR {
>+         display       "Work with a ROM monitor"
>+         flavor        booldata
>+         legal_values  { "Generic" "GDB_stubs" }
>+         default_value { CYG_HAL_STARTUP == "RAM" ? "GDB_stubs" : 0 }
>+         parent        CYGPKG_HAL_ROM_MONITOR
>+         requires      { CYG_HAL_STARTUP == "RAM" }
>+         description   "
>+             Support can be enabled for different varieties of ROM monitor.
>+             This support changes various eCos semantics such as the encoding
>+             of diagnostic output, or the overriding of hardware interrupt
>+             vectors.
>+             Firstly there is \"Generic\" support which prevents the HAL
>+             from overriding the hardware vectors that it does not use, to
>+             instead allow an installed ROM monitor to handle them. This is
>+             the most basic support which is likely to be common to most
>+             implementations of ROM monitor.
>+             \"GDB_stubs\" provides support when GDB stubs are included in
>+             the ROM monitor or boot ROM."
>+     }
>+
>+    cdl_component CYGPKG_REDBOOT_HAL_OPTIONS {
>+        display       "Redboot HAL options"
>+        flavor        none
>+        no_define
>+        parent        CYGPKG_REDBOOT
>+        active_if     CYGPKG_REDBOOT
>+        description   "
>+            This option lists the target's requirements for a valid Redboot
>+            configuration."
>+
>+        cdl_option CYGBLD_BUILD_REDBOOT_BIN {
>+            display       "Build Redboot ROM binary image"
>+            active_if     CYGBLD_BUILD_REDBOOT
>+            default_value 1
>+            no_define
>+            description "This option enables the conversion of the Redboot ELF
>+                         image to a binary image suitable for ROM programming."
>+    
>+            make -priority 325 {
>+                <PREFIX>/bin/redboot.bin : <PREFIX>/bin/redboot.elf
>+                $(OBJCOPY) --strip-debug $< $(@:.bin=.img) 
>+                $(OBJCOPY) -O srec $< $(@:.bin=.srec)
>+                $(OBJCOPY) -O binary $< $@
>+            }
>+
>+        }
>+    }
>+
>+
>+    cdl_component CYGHWR_MEMORY_LAYOUT {
>+        display "Memory layout"
>+        flavor data
>+        no_define
>+	calculated { (CYG_HAL_STARTUP == "RAM") ? "arm_lpc2xxx_lpcmt_ram":
>+                                                  "arm_lpc2xxx_lpcmt_rom"}
>+
>+        cdl_option CYGHWR_MEMORY_LAYOUT_LDI {
>+            display "Memory layout linker script fragment"
>+            flavor data
>+            no_define
>+            define -file system.h CYGHWR_MEMORY_LAYOUT_LDI
>+	    calculated { (CYG_HAL_STARTUP == "RAM") ? "<pkgconf/mlt_arm_lpc2xxx_lpcmt_ram.ldi>": 
>+                                                      "<pkgconf/mlt_arm_lpc2xxx_lpcmt_rom.ldi>"} 
>+        }
>+
>+        cdl_option CYGHWR_MEMORY_LAYOUT_H {
>+            display "Memory layout header file"
>+            flavor data
>+            no_define
>+            define -file system.h CYGHWR_MEMORY_LAYOUT_H
>+	    calculated { (CYG_HAL_STARTUP == "RAM") ?
>+	    			"<pkgconf/mlt_arm_lpc2xxx_lpcmt_ram.h>":
>+	                        "<pkgconf/mlt_arm_lpc2xxx_lpcmt_rom.h>"}
>+        }
>+    }
>+
>+}
>--- /dev/null
>+++ mod/packages/hal/arm/lpc2xxx/lpcmt/current/include/hal_platform_setup.h
>@@ -0,0 +1,162 @@
>+#ifndef CYGONCE_HAL_PLATFORM_SETUP_H
>+#define CYGONCE_HAL_PLATFORM_SETUP_H
>+
>+/*=============================================================================
>+//
>+//      hal_platform_setup.h
>+//
>+//      Platform specific support for HAL (assembly code)
>+//
>+//=============================================================================
>+//####ECOSGPLCOPYRIGHTBEGIN####
>+// -------------------------------------------
>+// This file is part of eCos, the Embedded Configurable Operating System.
>+// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
>+// Copyright (C) 2003 Nick Garnett <nickg@calivar.com>
>+// Copyright (C) 2004 eCosCentric Limited 
>+//
>+// eCos is free software; you can redistribute it and/or modify it under
>+// the terms of the GNU General Public License as published by the Free
>+// Software Foundation; either version 2 or (at your option) any later version.
>+//
>+// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
>+// WARRANTY; without even the implied warranty of MERCHANTABILITY or
>+// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
>+// for more details.
>+//
>+// You should have received a copy of the GNU General Public License along
>+// with eCos; if not, write to the Free Software Foundation, Inc.,
>+// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
>+//
>+// As a special exception, if other files instantiate templates or use macros
>+// or inline functions from this file, or you compile this file and link it
>+// with other works to produce a work based on this file, this file does not
>+// by itself cause the resulting work to be covered by the GNU General Public
>+// License. However the source code for this file must still be made available
>+// in accordance with section (3) of the GNU General Public License.
>+//
>+// This exception does not invalidate any other reasons why a work based on
>+// this file might be covered by the GNU General Public License.
>+// -------------------------------------------
>+//####ECOSGPLCOPYRIGHTEND####
>+//=============================================================================
>+//#####DESCRIPTIONBEGIN####
>+//
>+// Author(s):   jani 
>+// Contributors:
>+// Date:        2004-09-12
>+// Purpose:     LPC2XXX/LPCMT platform specific support routines
>+// Description:
>+// Usage:       #include <cyg/hal/hal_platform_setup.h>
>+//
>+//####DESCRIPTIONEND####
>+//
>+//===========================================================================*/
>+
>+#include <pkgconf/system.h>
>+#include <cyg/hal/var_io.h>
>+
>+//===========================================================================*/
>+
>+	.macro  _led_init
>+        ldr r0,=CYGARC_HAL_LPC2XXX_REG_IO_BASE
>+	ldr r1,=(1<<12)	// GPIO0 pin 12 is LED output
>+	str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_IODIR]
>+        .endm
>+
>+        .macro _led x
>+	ldr r0,=CYGARC_HAL_LPC2XXX_REG_IO_BASE
>+	ldr r1,=(1<<12)
>+	str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_IOCLR]
>+	ldr r1,=((\x & 1)<<12)
>+	str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_IOSET]
>+	.endm
>+	
>+	.macro _pll_init
>+	ldr r0,=CYGARC_HAL_LPC2XXX_REG_SCB_BASE
>+
>+	mov r2,#0xAA
>+	mov r3,#0x55
>+	
>+	mov r1,#1			// enable PLL	
>+	str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_PLLCON]
>+	
>+	mov r1,#(0x20 | (CYGNUM_HAL_ARM_LPC2XXX_PLL_MUL - 1))
>+	str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_PLLCFG]	
>+	
>+	str r2,[r0,#CYGARC_HAL_LPC2XXX_REG_PLLFEED]	// update PLL registers
>+	str r3,[r0,#CYGARC_HAL_LPC2XXX_REG_PLLFEED]
>+
>+1:
>+	ldr r1,[r0,#CYGARC_HAL_LPC2XXX_REG_PLLSTAT]	// wait for it to lock
>+	ands r1,r1,#(1<<10)
>+	beq 1b
>+	
>+	mov r1,#3			// connect PLL
>+	str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_PLLCON]
>+
>+	str r2,[r0,#CYGARC_HAL_LPC2XXX_REG_PLLFEED]	// update PLL registers
>+	str r3,[r0,#CYGARC_HAL_LPC2XXX_REG_PLLFEED]
>+	
>+	.endm
>+	
>+	.macro _mem_init
>+	mov r0,#0			// copy first 64 bytes of flash to RAM
>+	mov r1,#0x40000000
>+	mov r2,#0x40
>+1:
>+	ldr r3,[r0,#4]!
>+	str r3,[r1,#4]!
>+	cmps r0,r2
>+	bne 1b
>+
>+	ldr r0,=CYGARC_HAL_LPC2XXX_REG_SCB_BASE
>+	mov r1,#2
>+	str r1, [r0,#CYGARC_HAL_LPC2XXX_REG_MEMMAP]	// interrupt vector table is mapped to flash (1) or RAM(2)	
>+	mov r1,#4
>+	str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_MAMTIM]	// flash timings
>+	mov r1,#2
>+	str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_MAMCR]	// enable full MAM
>+	.endm
>+		
>+        .macro _gpio_init
>+	ldr r0,=CYGARC_HAL_LPC2XXX_REG_PIN_BASE	// enable  RX and TX on UART0
>+	ldr r1,=0x00000005
>+	str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_PINSEL0]
>+	.endm
>+	
>+#define CYGHWR_LED_MACRO _led \x 
>+
>+//===========================================================================*/
>+                        
>+#if defined(CYG_HAL_STARTUP_ROM)
>+
>+
>+                        
>+        .macro  _setup
>+	
>+	_pll_init
>+	
>+	_mem_init
>+	
>+	_gpio_init
>+	
>+	_led_init
>+	
>+        .endm
>+
>+#define CYGSEM_HAL_ROM_RESET_USES_JUMP
>+
>+#else
>+
>+        .macro  _setup
>+        .endm
>+        
>+#endif
>+
>+#define PLATFORM_SETUP1     _setup
>+
>+        
>+//-----------------------------------------------------------------------------
>+// end of hal_platform_setup.h
>+#endif // CYGONCE_HAL_PLATFORM_SETUP_H
>--- /dev/null
>+++ mod/packages/hal/arm/lpc2xxx/lpcmt/current/include/pkgconf/mlt_arm_lpc2xxx_lpcmt_ram.h
>@@ -0,0 +1,17 @@
>+// eCos memory layout - Wed Apr 11 13:49:55 2001
>+
>+// This is a generated file - do not edit
>+
>+#ifndef __ASSEMBLER__
>+#include <cyg/infra/cyg_type.h>
>+#include <stddef.h>
>+
>+#endif
>+#define CYGMEM_REGION_ram (0x40000000)
>+#define CYGMEM_REGION_ram_SIZE (0x00010000)
>+#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
>+#ifndef __ASSEMBLER__
>+extern char CYG_LABEL_NAME (__heap1) [];
>+#endif
>+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
>+#define CYGMEM_SECTION_heap1_SIZE (0x40010000 - (size_t) CYG_LABEL_NAME (__heap1))
>--- /dev/null
>+++ mod/packages/hal/arm/lpc2xxx/lpcmt/current/include/pkgconf/mlt_arm_lpc2xxx_lpcmt_ram.ldi
>@@ -0,0 +1,27 @@
>+// eCos memory layout - Wed Apr 11 13:49:55 2001
>+
>+// This is a generated file - do not edit
>+
>+#include <cyg/infra/cyg_type.inc>
>+
>+MEMORY
>+{
>+    ram  : ORIGIN = 0x40000000, LENGTH = 0x10000
>+}
>+
>+SECTIONS
>+{
>+    SECTIONS_BEGIN
>+    SECTION_fixed_vectors (ram, 0x40000400, LMA_EQ_VMA)
>+    SECTION_rom_vectors (ram, 0x40006000, LMA_EQ_VMA)
>+    SECTION_text (ram, ALIGN(0x4), LMA_EQ_VMA)
>+    SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
>+    SECTION_rodata (ram, ALIGN (0x4), LMA_EQ_VMA)
>+    SECTION_rodata1 (ram, ALIGN (0x4), LMA_EQ_VMA)
>+    SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
>+    SECTION_gcc_except_table (ram, ALIGN (0x4), LMA_EQ_VMA)
>+    SECTION_data (ram, ALIGN(0x4), FOLLOWING(.gcc_except_table))
>+    SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
>+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
>+    SECTIONS_END
>+}
>--- /dev/null
>+++ mod/packages/hal/arm/lpc2xxx/lpcmt/current/include/pkgconf/mlt_arm_lpc2xxx_lpcmt_rom.h
>@@ -0,0 +1,20 @@
>+// eCos memory layout - Wed Apr 11 13:49:55 2001
>+
>+// This is a generated file - do not edit
>+
>+#ifndef __ASSEMBLER__
>+#include <cyg/infra/cyg_type.h>
>+#include <stddef.h>
>+
>+#endif
>+#define CYGMEM_REGION_ram (0x40000000)
>+#define CYGMEM_REGION_ram_SIZE (0x00010000)
>+#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
>+#define CYGMEM_REGION_rom (0x00000000)
>+#define CYGMEM_REGION_rom_SIZE (0x00020000)
>+#define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
>+#ifndef __ASSEMBLER__
>+extern char CYG_LABEL_NAME (__heap1) [];
>+#endif
>+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
>+#define CYGMEM_SECTION_heap1_SIZE (0x40010000 - (size_t) CYG_LABEL_NAME (__heap1))
>--- /dev/null
>+++ mod/packages/hal/arm/lpc2xxx/lpcmt/current/include/pkgconf/mlt_arm_lpc2xxx_lpcmt_rom.ldi
>@@ -0,0 +1,28 @@
>+// eCos memory layout - Wed Apr 11 13:49:55 2001
>+
>+// This is a generated file - do not edit
>+
>+#include <cyg/infra/cyg_type.inc>
>+
>+MEMORY
>+{
>+    ram  : ORIGIN = 0x40000000, LENGTH = 0x10000
>+    rom  : ORIGIN = 0x00000000, LENGTH = 0x20000
>+}
>+
>+SECTIONS
>+{
>+    SECTIONS_BEGIN
>+    SECTION_rom_vectors (rom, 0x00000000, LMA_EQ_VMA)
>+    SECTION_text (rom, ALIGN (0x1), LMA_EQ_VMA)
>+    SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
>+    SECTION_rodata (rom, ALIGN (0x4), LMA_EQ_VMA)
>+    SECTION_rodata1 (rom, ALIGN (0x4), LMA_EQ_VMA)
>+    SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
>+    SECTION_gcc_except_table (rom, ALIGN (0x4), LMA_EQ_VMA)
>+    SECTION_fixed_vectors (ram, 0x40000400, LMA_EQ_VMA)
>+    SECTION_data (ram, ALIGN(0x4), FOLLOWING(.gcc_except_table))
>+    SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
>+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
>+    SECTIONS_END
>+}
>--- /dev/null
>+++ mod/packages/hal/arm/lpc2xxx/lpcmt/current/include/plf_io.h
>@@ -0,0 +1,59 @@
>+#ifndef CYGONCE_HAL_PLF_IO_H
>+#define CYGONCE_HAL_PLF_IO_H
>+//=============================================================================
>+//
>+//      plf_io.h
>+//
>+//      MCB2100 board specific registers
>+//
>+//=============================================================================
>+//####ECOSGPLCOPYRIGHTBEGIN####
>+// -------------------------------------------
>+// This file is part of eCos, the Embedded Configurable Operating System.
>+// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
>+// Copyright (C) 2003 Nick Garnett <nickg@calivar.com>
>+// Copyright (C) 2004 eCosCentric Limited 
>+//
>+// eCos is free software; you can redistribute it and/or modify it under
>+// the terms of the GNU General Public License as published by the Free
>+// Software Foundation; either version 2 or (at your option) any later version.
>+//
>+// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
>+// WARRANTY; without even the implied warranty of MERCHANTABILITY or
>+// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
>+// for more details.
>+//
>+// You should have received a copy of the GNU General Public License along
>+// with eCos; if not, write to the Free Software Foundation, Inc.,
>+// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
>+//
>+// As a special exception, if other files instantiate templates or use macros
>+// or inline functions from this file, or you compile this file and link it
>+// with other works to produce a work based on this file, this file does not
>+// by itself cause the resulting work to be covered by the GNU General Public
>+// License. However the source code for this file must still be made available
>+// in accordance with section (3) of the GNU General Public License.
>+//
>+// This exception does not invalidate any other reasons why a work based on
>+// this file might be covered by the GNU General Public License.
>+// -------------------------------------------
>+//####ECOSGPLCOPYRIGHTEND####
>+//=============================================================================
>+//#####DESCRIPTIONBEGIN####
>+//
>+// Author(s):   jani
>+// Contributors:
>+// Date:        2004-09-12
>+// Purpose:     Olimex LPCMT board specific registers
>+// Description:
>+// Usage:       #include <cyg/hal/plf_io.h>
>+//
>+//####DESCRIPTIONEND####
>+//
>+//=============================================================================
>+// On-chip device base addresses
>+
>+
>+//-----------------------------------------------------------------------------
>+// end of plf_io.h
>+#endif // CYGONCE_HAL_PLF_IO_H
>--- /dev/null
>+++ mod/packages/hal/arm/lpc2xxx/lpcmt/current/src/lpcmt_misc.c
>@@ -0,0 +1,81 @@
>+/*==========================================================================
>+//
>+//      lpc_misc.c
>+//
>+//      HAL misc board support code for Olimex LPCMT 
>+//
>+//==========================================================================
>+//####ECOSGPLCOPYRIGHTBEGIN####
>+// -------------------------------------------
>+// This file is part of eCos, the Embedded Configurable Operating System.
>+// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
>+// Copyright (C) 2003 Nick Garnett <nickg@calivar.com>
>+// Copyright (C) 2004 eCosCentric Limited 
>+//
>+// eCos is free software; you can redistribute it and/or modify it under
>+// the terms of the GNU General Public License as published by the Free
>+// Software Foundation; either version 2 or (at your option) any later version.
>+//
>+// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
>+// WARRANTY; without even the implied warranty of MERCHANTABILITY or
>+// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
>+// for more details.
>+//
>+// You should have received a copy of the GNU General Public License along
>+// with eCos; if not, write to the Free Software Foundation, Inc.,
>+// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
>+//
>+// As a special exception, if other files instantiate templates or use macros
>+// or inline functions from this file, or you compile this file and link it
>+// with other works to produce a work based on this file, this file does not
>+// by itself cause the resulting work to be covered by the GNU General Public
>+// License. However the source code for this file must still be made available
>+// in accordance with section (3) of the GNU General Public License.
>+//
>+// This exception does not invalidate any other reasons why a work based on
>+// this file might be covered by the GNU General Public License.
>+// -------------------------------------------
>+//####ECOSGPLCOPYRIGHTEND####
>+//==========================================================================
>+//#####DESCRIPTIONBEGIN####
>+//
>+// Author(s):    jani 
>+// Contributors: 
>+// Date:         2004-09-12
>+// Purpose:      HAL board support
>+// Description:  Implementations of HAL board interfaces
>+//
>+//####DESCRIPTIONEND####
>+//
>+//========================================================================*/
>+#include <pkgconf/hal.h>
>+#include <cyg/hal/hal_io.h>             // IO macros
>+
>+#include <cyg/infra/cyg_type.h>         // base types
>+#include <cyg/hal/var_io.h>
>+
>+extern void cyg_hal_plf_serial_init(void);
>+// Low bit of mask determines the on/off status of the LED.
>+// 0 means ON and 1 is OFF!
>+void hal_lpc2xxx_set_leds(int mask)
>+{
>+    HAL_WRITE_UINT32(CYGARC_HAL_LPC2XXX_REG_IO_BASE +
>+		     CYGARC_HAL_LPC2XXX_REG_IOSET, (1<<12));
>+    if (mask & 1)	
>+        HAL_WRITE_UINT32(CYGARC_HAL_LPC2XXX_REG_IO_BASE +
>+		     CYGARC_HAL_LPC2XXX_REG_IOCLR, (1<<12));
>+}
>+
>+void
>+cyg_hal_plf_comms_init(void)
>+{
>+    static int initialized = 0;
>+	
>+    if (initialized)
>+        return;
>+    initialized = 1;
>+
>+    cyg_hal_plf_serial_init();
>+}
>+//--------------------------------------------------------------------------
>+// EOF lpcmt_misc.c
>
>  
>



More information about the Ecos-patches mailing list