This is the mail archive of the ecos-patches@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Olimex LPC-H2294 platform


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



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]