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