Basic support for yet another Olimex board:
http://www.olimex.com/dev/lpc-h2294.html.

--- orig/packages/ecos.db
+++ mod/packages/ecos.db
@@ -5828,3 +5828,39 @@
        description     "Lightweight TCP/IP stack: lwIP"
 }

+package CYGPKG_HAL_ARM_LPC2XXX_LPCH2294 {
+       alias           { "Olimex header board LPC-H2294" hal_lpch2294_arm }
+       directory       hal/arm/lpc2xxx/lpch2294
+       script          hal_arm_lpc2xxx_lpch2294.cdl
+       hardware
+       description "
+ The lpch2294 HAL package provides the support needed to run eCos on an the + LPC-H2294 header board from Olimex."
+}
+
+package CYGPKG_DEVS_FLASH_ARM_LPCH2294 {
+       alias           { "Support for the external flash memory on the Olimex 
LPC-H2294 board" flash_lpch2294 }
+       directory       devs/flash/arm/lpch2294
+       script          flash_lpch2294.cdl
+       hardware
+        description "
+            This package contains hardware support for flash memory
+            on the Olimex LPC-H2294 platform."
+}
+
+target lpch2294 {
+       alias { "Olimex header board LPC-H2294" lpch }
+       packages { CYGPKG_HAL_ARM
+                   CYGPKG_HAL_ARM_LPC2XXX
+                   CYGPKG_HAL_ARM_LPC2XXX_LPCH2294
+                   CYGPKG_DEVS_FLASH_INTEL_28FXXX
+                   CYGPKG_DEVS_FLASH_ARM_LPCH2294
+                   CYGPKG_IO_SERIAL_GENERIC_16X5X
+                   CYGPKG_IO_SERIAL_ARM_LPC2XXX
+                   CYGPKG_DEVICES_WATCHDOG_ARM_LPC2XXX
+        }
+        description "
+            The lpch2294 target provides the packages needed to run eCos on the
+            LPC-H2294 header board from Olimex."
+}
+
--- /dev/null
+++ mod/packages/devs/flash/arm/lpch2294/current/cdl/flash_lpch2294.cdl
@@ -0,0 +1,62 @@
+# ====================================================================
+#
+#      flash_lpch2294.cdl
+#
+#      FLASH memory - Hardware support on Olimex LPC-H2294
+#
+# ====================================================================
+#####ECOSGPLCOPYRIGHTBEGIN####
+## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+## Copyright (C) 2006 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):      sg
+# Contributors: +# Date: 2006-02-08
+#
+#####DESCRIPTIONEND####
+#
+# ====================================================================
+
+cdl_package CYGPKG_DEVS_FLASH_ARM_LPCH2294 {
+    display       "ARM LPCH2294 FLASH memory support"
+
+    parent        CYGPKG_IO_FLASH
+    active_if     CYGPKG_IO_FLASH
+    requires      CYGPKG_HAL_ARM_LPC2XXX_LPCH2294
+    implements    CYGHWR_IO_FLASH_DEVICE
+
+    compile       arm_lpch2294_flash.c
+
+    cdl_interface CYGINT_DEVS_FLASH_INTEL_28FXXX_REQUIRED {
+        display   "Generic Intel FlashFile driver required"
+    }
+    implements    CYGINT_DEVS_FLASH_INTEL_28FXXX_REQUIRED
+    requires      CYGHWR_DEVS_FLASH_INTEL_28F320C3
+}
--- /dev/null
+++ mod/packages/devs/flash/arm/lpch2294/current/src/arm_lpch2294_flash.c
@@ -0,0 +1,71 @@
+//==========================================================================
+//
+//      arm_lpch2294_flash.c
+//
+//      Flash programming for Intel FlashFile devices on the LPC-H2294
+//
+//==========================================================================
+//####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+// Copyright (C) 2006 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):    sg
+// Contributors: +// Date: 2006-02-08 +// Purpose: +// Description: +//
+//####DESCRIPTIONEND####
+//
+//========================================================================*/
+
+// The Olimex LPC-H2294 has one Intel 28F320C3 flash memory part.
+
+#define CYGNUM_FLASH_INTERLEAVE (1)
+#define CYGNUM_FLASH_SERIES     (1)
+#define CYGNUM_FLASH_WIDTH      (16)
+#define CYGNUM_FLASH_BASE       (0x80000000)
+
+#define CYGHWR_FLASH_WRITE_ENABLE()         \
+        {                                   \
+        }
+
+#define CYGHWR_FLASH_WRITE_DISABLE()        \
+        {                                   \
+        }
+
+//--------------------------------------------------------------------------
+// Now include the driver code.
+#include "cyg/io/flash_28fxxx.inl"
+
+// ------------------------------------------------------------------------
+// EOF arm_lpch2294_flash.c
--- /dev/null
+++ 
mod/packages/hal/arm/lpc2xxx/lpch2294/current/cdl/hal_arm_lpc2xxx_lpch2294.cdl
@@ -0,0 +1,288 @@
+# ====================================================================
+#
+#      hal_arm_lpc2xxx_lpch2294.cdl
+#
+#      ARM LPC2XXX LPCH2294 HAL package configuration data
+#
+# ====================================================================
+#####ECOSGPLCOPYRIGHTBEGIN####
+## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+## Copyright (C) 2006 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):      sg
+# Contributors: +# Date: 2006-02-08
+#
+#####DESCRIPTIONEND####
+#
+# ====================================================================
+
+cdl_package CYGPKG_HAL_ARM_LPC2XXX_LPCH2294 {
+    display       "Olimex LPC-H2294 board HAL"
+    parent        CYGPKG_HAL_ARM_LPC2XXX
+    define_header hal_arm_lpc2xxx_lpch2294.h
+    include_dir   cyg/hal
+    hardware
+    description   "
+        The LPCH2294 HAL package provides the support needed to run
+        eCos on an Olimex LPC-H2294 header board."
+
+    compile       lpch2294_misc.c
+
+    requires      { CYGHWR_HAL_ARM_LPC2XXX == "LPC2214" }
+
+    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_lpch2294.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  \"Philips LPC2XXX/Olimex 
LPC-H2294\""
+        puts $::cdl_header "#define HAL_PLATFORM_EXTRA  \"\""
+    }
+ + cdl_component CYG_HAL_STARTUP {
+        display       "Startup type"
+        flavor        data
+        default_value {"RAM"}
+        legal_values  {"RAM" "ROM"}
+        no_define
+        define -file system.h CYG_HAL_STARTUP
+        description   "
+        Choose RAM or ROM startup type."
+    }
+ + cdl_option CYGHWR_HAL_ARM_LPCH2294_DIAG_LEDS {
+        display          "Enable use of P0.30 LED"
+        default_value    1
+        description      "
+            The LPC-H2294 board has one P0.30 led labelled LED. Those
+            can be controlled by eCos.
+
+            Enabling this option causes eCos to flash the LED during
+            early board initialization. See vectors.S for details. Before
+            calling cyg_start, P0.30 is switched on.  The application
+            code can use the function hal_lpc2xxx_set_leds() to control
+            the LED after this point."
+   }
+
+    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 LPC-H2294 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 LPC-H2294 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}
+    }
+
+    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"}
+        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_lpch2294_ram" :
+                                                  "arm_lpc2xxx_lpch2294_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_lpch2294_ram.ldi>" :
+                                                      
"<pkgconf/mlt_arm_lpc2xxx_lpch2294_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_lpch2294_ram.h>" :
+                                                      
"<pkgconf/mlt_arm_lpc2xxx_lpch2294_rom.h>" }
+        }
+    }
+}
--- /dev/null
+++ mod/packages/hal/arm/lpc2xxx/lpch2294/current/doc/README.usbserial
@@ -0,0 +1,42 @@
+The Olimex LPC-H2294 board has an USB to serial converter (FT232BM) from Future
+Technology Devices International (FTDI). The devive serves the LPC2294 UART0
+serial port.  So, you need to have same driver for your host operation system.
+Official FTDI drivers for windows you can obtain from the vendor's web site:
+http://www.ftdichip.com.
+
+RedBoot, GDB works pretty well with that usb to serial converter with latest
+Linux kernels. Keep it in your mind.
+
+I've got a Slackware 10.2 distro with ide-2.4.31/test-2.6.13 kernels. Both of
+them has an ftdi_sio kernel module to support the USB to serial converter from
+FTDI. So, your linux kernel should has same kernel module. Connect the board to
+some PC usb port and check it
+
+$ /sbin/lsusb
+Bus 002 Device 002: ID 0403:6001 Future Technology Devices International, Ltd 
8-bit FIFO
+
+$ /sbin/lsmod | grep ftdi
+ftdi_sio               26372  0
+usbserial              26472  1 ftdi_sio
+
+
+If you see no usbserial/ftdi_sio modules, try to load usbserial module manualy
+(as root):
+
+$ /sbin/modprobe usbserial
+
+On success, check/fix the permission for the devices /dev/ttyUSB* certainly.
+
+Note: a reset circuit on the board let us to do reset via DTR pinout. It's very
+useful for an ISP program.
+
+A sample initial proc in Tcl for that device (I use it in own isp program):
+
+set fh [open /dev/ttyUSB0 r+]
+fconfigure $fh -mode 115200,n,8,1
+fconfigure $fh -ttycontrol {dtr 1}
+after 200
+fconfigure $fh -ttycontrol {dtr 0}
+...
+
+$Id: README.usbserial,v 1.1 2006/02/06 08:22:04 sg Exp sg $
--- /dev/null
+++ 
mod/packages/hal/arm/lpc2xxx/lpch2294/current/include/pkgconf/mlt_arm_lpc2xxx_lpch2294_ram.h
@@ -0,0 +1,15 @@
+/* $Id: mlt_arm_lpc2xxx_lpch2294_ram.h,v 1.1 2006/02/06 08:22:04 sg Exp sg $ */
+
+#ifndef __ASSEMBLER__
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+
+#endif
+#define CYGMEM_REGION_ram (0x81000000)
+#define CYGMEM_REGION_ram_SIZE (0x00100000)
+#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 (0x81100000 - (size_t) CYG_LABEL_NAME 
(__heap1))
--- /dev/null
+++ 
mod/packages/hal/arm/lpc2xxx/lpch2294/current/include/pkgconf/mlt_arm_lpc2xxx_lpch2294_ram.ldi
@@ -0,0 +1,26 @@
+/* $Id: mlt_arm_lpc2xxx_lpch2294_ram.ldi,v 1.1 2006/02/06 08:22:04 sg Exp sg $ 
*/
+
+#include <cyg/infra/cyg_type.inc>
+
+MEMORY
+{
+    ram0 : ORIGIN = 0x40000000, LENGTH = 0x4000
+    ram  : ORIGIN = 0x81000000, LENGTH = 0x100000
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_fixed_vectors (ram0, 0x40000400, LMA_EQ_VMA)
+    SECTION_rom_vectors (ram, 0x81008000, 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), LMA_EQ_VMA)
+    SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
+    SECTIONS_END
+}
--- /dev/null
+++ 
mod/packages/hal/arm/lpc2xxx/lpch2294/current/include/pkgconf/mlt_arm_lpc2xxx_lpch2294_rom.h
@@ -0,0 +1,18 @@
+/* $Id: mlt_arm_lpc2xxx_lpch2294_rom.h,v 1.1 2006/02/06 08:22:04 sg Exp sg $ */
+
+#ifndef __ASSEMBLER__
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+
+#endif
+#define CYGMEM_REGION_rom (0x00000000)
+#define CYGMEM_REGION_rom_SIZE (0x00040000)
+#define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
+#define CYGMEM_REGION_ram (0x81000000)
+#define CYGMEM_REGION_ram_SIZE (0x00100000)
+#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 (0x81100000 - (size_t) CYG_LABEL_NAME 
(__heap1))
--- /dev/null
+++ 
mod/packages/hal/arm/lpc2xxx/lpch2294/current/include/pkgconf/mlt_arm_lpc2xxx_lpch2294_rom.ldi
@@ -0,0 +1,27 @@
+/* $Id: mlt_arm_lpc2xxx_lpch2294_rom.ldi,v 1.1 2006/02/06 08:22:04 sg Exp sg $ 
*/
+
+#include <cyg/infra/cyg_type.inc>
+
+MEMORY
+{
+    ram0   : ORIGIN = 0x40000000, LENGTH = 0x4000
+    ram    : ORIGIN = 0x81000000, LENGTH = 0x100000
+    rom    : ORIGIN = 0x00000000, LENGTH = 0x40000
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_rom_vectors (rom, 0x00000000, LMA_EQ_VMA)
+    SECTION_text (rom, ALIGN (0x4), 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 (ram0, 0x40000400, LMA_EQ_VMA)
+    SECTION_data (ram, 0x81000000, 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/lpch2294/current/include/hal_platform_setup.h
@@ -0,0 +1,209 @@
+#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) 2006 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):   sg
+// Contributors:
+// Date:        2006-02-08
+// Purpose:     LPC-H2294 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<<30) // P0.30 is LED output
+        str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_IO0DIR]
+        .endm
+
+        // Control the P0.30 LED (an inversing control)
+        .macro _led x
+        // |P0.30 470 Om     LED
+        // |------\/\/\/-----|<|-----> 3.3 V
+        // |
+        ldr r0,=CYGARC_HAL_LPC2XXX_REG_IO_BASE
+        ldr r1,=(1<<30)
+        str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_IO0SET]
+        ldr r1,=((\x & 1)<<30)
+        str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_IO0CLR]
+        .endm
+ + .macro _pll_init
+        ldr r0,=CYGARC_HAL_LPC2XXX_REG_SCB_BASE
+
+        mov r2,#0xAA
+        mov r3,#0x55
+ + // enable PLL
+        mov r1,#1
+        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]
+ + // update PLL registers
+        str r2,[r0,#CYGARC_HAL_LPC2XXX_REG_PLLFEED]
+        str r3,[r0,#CYGARC_HAL_LPC2XXX_REG_PLLFEED]
+
+        // wait for it to lock
+1:
+        ldr r1,[r0,#CYGARC_HAL_LPC2XXX_REG_PLLSTAT]
+        ands r1,r1,#(1<<10)
+        beq 1b
+ + // connect PLL
+        mov r1,#3
+        str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_PLLCON]
+
+        // update PLL registers
+        str r2,[r0,#CYGARC_HAL_LPC2XXX_REG_PLLFEED]
+        str r3,[r0,#CYGARC_HAL_LPC2XXX_REG_PLLFEED]
+ + .endm + + .macro _mem_init
+        // copy first 64 bytes of rom/flash to RAM
+        mov r0,#0
+        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
+        // interrupt vector table is mapped to flash (1) or RAM(2)
+        mov r1,#2
+        str r1, [r0,#CYGARC_HAL_LPC2XXX_REG_MEMMAP]
+        // flash timings
+        mov r1,#4
+        str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_MAMTIM]
+        mov r1,#1 // 2 -- full MAM
+        str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_MAMCR]
+
+        // BCFG0 (an external FLASH memory, Intel TF28F320C3 x 1)
+        // 16-bits; IDCY = F; WST1 = 4; RBLE = 1; WST2 = 6
+        ldr r0,=CYGARC_HAL_LPC2XXX_REG_BCFG0
+        ldr r1,=0x1000348f
+        str r1,[r0]
+
+        // BCFG1 (an external SRAM IDT71V416L x 2)
+        // 32-bits; IDCY = F; WST1 = 0; RBLE = 1; WST2 = 0
+        ldr r0,=CYGARC_HAL_LPC2XXX_REG_BCFG1
+        ldr r1,=0x2000040f
+        str r1,[r0]
+
+        .endm
+
+        .macro _gpio_init
+        ldr r0,=CYGARC_HAL_LPC2XXX_REG_PIN_BASE
+
+        // P0.2:15   -- GPIO
+        // P0.0:1    -- TxD0, RxD0
+        ldr r1,=0x00000005
+        str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_PINSEL0]
+
+        // P0.16:31  -- GPIO
+        ldr r1,=0
+        str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_PINSEL1]
+
+        // P1.26:31  -- JTAG
+        // P2.0:31   -- Data bus
+        // P3.1:22   -- Address bus
+        // P1.0      -- CS0 (Flash)
+        // P3.26     -- CS1 (RAM)
+        // P3.31     -- BLS0
+        // P3.30     -- BLS1
+        // P3.29     -- BLS2
+        // P3.28     -- BLS3
+        // P3.26     -- WE
+        // P1.1      -- OE
+        ldr r1,=0x0F000924
+        str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_PINSEL2]
+ + // P0.30 (LED), P0.0 (TxD0) are outputs
+        // ldr r1,=0x40000001
+        // str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_IO0DIR]
+        // P1.0 (CS0, Flash), P1.1 (OE)
+        ldr r1,=0x00000003
+        str r1,[r0,#CYGARC_HAL_LPC2XXX_REG_IO1DIR]
+
+        .endm
+ +#ifdef CYGHWR_HAL_ARM_LPCH2294_DIAG_LEDS +#define CYGHWR_LED_MACRO _led \x +#endif
+
+#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
+
+#endif // CYGONCE_HAL_PLATFORM_SETUP_H
--- /dev/null
+++ mod/packages/hal/arm/lpc2xxx/lpch2294/current/include/plf_io.h
@@ -0,0 +1,59 @@
+#ifndef CYGONCE_HAL_PLF_IO_H
+#define CYGONCE_HAL_PLF_IO_H
+//=============================================================================
+//
+//      plf_io.h
+//
+//      LPC-H2294 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) 2006 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):   sg
+// Contributors:
+// Date:        2006-02-08
+// Purpose:     Olimex LPC-H2294 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/lpch2294/current/misc/redboot_RAM.ecm
@@ -0,0 +1,53 @@
+# RCS: @(#) $Id: redboot_RAM.ecm,v 1.1 2006/02/06 08:22:04 sg Exp sg $
+
+cdl_savefile_version 1;
+cdl_savefile_command cdl_savefile_version {};
+cdl_savefile_command cdl_savefile_command {};
+cdl_savefile_command cdl_configuration { description hardware template package 
};
+cdl_savefile_command cdl_package { value_source user_value wizard_value 
inferred_value };
+cdl_savefile_command cdl_component { value_source user_value wizard_value 
inferred_value };
+cdl_savefile_command cdl_option { value_source user_value wizard_value 
inferred_value };
+cdl_savefile_command cdl_interface { value_source user_value wizard_value 
inferred_value };
+
+cdl_configuration eCos {
+    package CYGPKG_IO_FLASH current ;
+};
+
+cdl_option CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE {
+    user_value 6144
+};
+
+cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT {
+    user_value 0
+};
+
+cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM {
+    inferred_value 0
+};
+
+cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS {
+    inferred_value 1
+};
+
+cdl_option CYGSEM_HAL_USE_ROM_MONITOR {
+    inferred_value 0 0
+};
+
+cdl_option CYGDAT_REDBOOT_CUSTOM_VERSION {
+    set rv {UNKNOW}
+    regsub {[$]Revision: (.*?) [$]} {$Revision: 1.1 $} {\1} rv
+    user_value 1 $rv
+    unset rv
+};
+
+cdl_component CYGBLD_BUILD_REDBOOT {
+    user_value 1
+};
+
+cdl_option CYGBLD_BUILD_REDBOOT_WITH_IOMEM {
+    user_value 1
+};
+
+cdl_option CYGBLD_BUILD_REDBOOT_WITH_EXEC {
+    user_value 0
+};
--- /dev/null
+++ mod/packages/hal/arm/lpc2xxx/lpch2294/current/misc/redboot_ROM.ecm
@@ -0,0 +1,66 @@
+# RCS: @(#) $Id: redboot_ROM.ecm,v 1.1 2006/02/06 08:22:04 sg Exp sg $
+
+cdl_savefile_version 1;
+cdl_savefile_command cdl_savefile_version {};
+cdl_savefile_command cdl_savefile_command {};
+cdl_savefile_command cdl_configuration { description hardware template package 
};
+cdl_savefile_command cdl_package { value_source user_value wizard_value 
inferred_value };
+cdl_savefile_command cdl_component { value_source user_value wizard_value 
inferred_value };
+cdl_savefile_command cdl_option { value_source user_value wizard_value 
inferred_value };
+cdl_savefile_command cdl_interface { value_source user_value wizard_value 
inferred_value };
+
+cdl_configuration eCos {
+    package CYGPKG_IO_FLASH current ;
+};
+
+cdl_option CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE {
+    user_value 6144
+};
+
+cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT {
+    user_value 0
+};
+
+cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM {
+    inferred_value 0
+};
+
+cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS {
+    inferred_value 1
+};
+
+cdl_option CYGSEM_HAL_ROM_MONITOR {
+    inferred_value 1
+};
+
+cdl_option CYGSEM_HAL_USE_ROM_MONITOR {
+    inferred_value 0 0
+};
+
+cdl_component CYG_HAL_STARTUP {
+    user_value ROM
+};
+
+cdl_component CYGBLD_BUILD_REDBOOT {
+    user_value 1
+};
+
+
+cdl_option CYGDAT_REDBOOT_CUSTOM_VERSION {
+    set rv {UNKNOW}
+    regsub {[$]Revision: (.*?) [$]} {$Revision: 1.1 $} {\1} rv
+    user_value 1 $rv
+    unset rv
+};
+
+cdl_component CYGBLD_BUILD_REDBOOT_WITH_THREADS {
+    user_value 1
+};
+
+cdl_option CYGBLD_BUILD_REDBOOT_WITH_IOMEM {
+    user_value 1
+};
+
+cdl_option CYGBLD_BUILD_REDBOOT_WITH_EXEC {
+    user_value 0
+};
--- /dev/null
+++ mod/packages/hal/arm/lpc2xxx/lpch2294/current/src/lpch2294_misc.c
@@ -0,0 +1,99 @@
+//==========================================================================
+//
+//      lpch2294_misc.c
+//
+//      HAL misc board support code for Olimex LPC-H2294 header 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) 2006 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):    sg
+// Contributors: +// Date: 2006-02-08
+// 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);
+
+#ifdef CYGHWR_HAL_ARM_LPCH2294_DIAG_LEDS
+
+/* Control the LED connected to P0.30. Warning, here is an inversing
+   control: GPIO's 0-level -- turns on the LED, 1-level -- turns off
+   this one.
+
+   |P0.30   470 Om     LED
+   |--------\/\/\/-----|<|-----> 3.3 V
+   |
+*/
+
+void
+hal_lpc2xxx_set_leds (int mask)
+{
+    HAL_WRITE_UINT32 (CYGARC_HAL_LPC2XXX_REG_IO_BASE +
+                      CYGARC_HAL_LPC2XXX_REG_IO0SET, (1 << 30));
+    if (mask & 1)
+        HAL_WRITE_UINT32 (CYGARC_HAL_LPC2XXX_REG_IO_BASE +
+                          CYGARC_HAL_LPC2XXX_REG_IO0CLR, (1 << 30));
+}
+#else
+void
+hal_lpc2xxx_set_leds (int mask)
+{
+}
+#endif // CYGHWR_HAL_ARM_LPCH2294_DIAG_LEDS
+
+void
+cyg_hal_plf_comms_init (void)
+{
+    static int initialized = 0;
+
+    if (initialized)
+        return;
+    initialized = 1;
+
+    cyg_hal_plf_serial_init ();
+}
+
+//--------------------------------------------------------------------------
+// EOF lpch2294_misc.c

Reply via email to