mirror of
https://github.com/apache/nuttx.git
synced 2026-06-05 15:58:59 +08:00
Progress of LPC43xx build environment
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4904 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
+340
-167
File diff suppressed because it is too large
Load Diff
@@ -129,27 +129,51 @@
|
||||
#define BOARD_FLASHCFG_VALUE 0x0000303a
|
||||
|
||||
/* LED definitions *********************************************************/
|
||||
/* The Lincoln 80 has 2 LEDs along the bottom of the board. Green or off.
|
||||
* If CONFIG_ARCH_LEDS is defined, the LEDs will be controlled as follows
|
||||
* for NuttX debug functionality (where NC means "No Change").
|
||||
/* The LPC4330-Xplorer has 2 user-controllable LEDs labeled D2 an D3 in the
|
||||
* schematic and on but referred to has LED1 and LED2 here, respectively.
|
||||
*
|
||||
* During the boot phases. LED1 and LED2 will show boot status.
|
||||
* LED1 D2 GPIO1[12]
|
||||
* LED2 D3 GPIO1[11]
|
||||
*
|
||||
* LEDs are pulled high to a low output illuminates the LED.
|
||||
*
|
||||
* LED index values for use with lpc43_setled()
|
||||
*/
|
||||
/* LED1 LED2 */
|
||||
#define LED_STARTED 0 /* OFF OFF */
|
||||
#define LED_HEAPALLOCATE 1 /* GREEN OFF */
|
||||
#define LED_IRQSENABLED 2 /* OFF GREEN */
|
||||
#define LED_STACKCREATED 3 /* OFF OFF */
|
||||
|
||||
#define BOARD_LED1 0
|
||||
#define BOARD_LED2 1
|
||||
#define BOARD_NLEDS 2
|
||||
|
||||
/* LED bits for use with lpc43_setleds() */
|
||||
|
||||
#define BOARD_LED1_BIT (1 << BOARD_LED1)
|
||||
#define BOARD_LED2_BIT (1 << BOARD_LED2)
|
||||
|
||||
/* If CONFIG_ARCH_LEDS is defined, the LEDs will be controlled as follows
|
||||
* for NuttX debug functionality (where NC means "No Change"). If
|
||||
* CONFIG_ARCH_LEDS is not defined, then the LEDs are completely under
|
||||
* control of the application. The following interfaces are then available
|
||||
* for application control of the LEDs:
|
||||
*
|
||||
* void lpc43_ledinit(void);
|
||||
* void lpc43_setled(int led, bool ledon);
|
||||
* void lpc43_setleds(uint8_t ledset);
|
||||
*/
|
||||
/* ON OFF */
|
||||
/* LED1 LED2 LED1 LED2 */
|
||||
#define LED_STARTED 0 /* OFF OFF - - */
|
||||
#define LED_HEAPALLOCATE 1 /* ON OFF - - */
|
||||
#define LED_IRQSENABLED 1 /* ON OFF - - */
|
||||
#define LED_STACKCREATED 1 /* ON OFF - - */
|
||||
#define LED_INIRQ 2 /* NC ON NC OFF */
|
||||
#define LED_SIGNAL 2 /* NC ON NC OFF */
|
||||
#define LED_ASSERTION 2 /* NC ON NC OFF */
|
||||
#define LED_PANIC 2 /* NC ON NC OFF */
|
||||
|
||||
/* After the system is booted, this logic will no longer use LEDs 1 & 2.
|
||||
* They are available for use the application software using lpc43_led
|
||||
* (prototyped below)
|
||||
*/
|
||||
/* LED1 LED2 LED3 LED4 */
|
||||
#define LED_INIRQ 4 /* NC NC NC ON (momentary) */
|
||||
#define LED_SIGNAL 5 /* NC NC NC ON (momentary) */
|
||||
#define LED_ASSERTION 6 /* NC NC NC ON (momentary) */
|
||||
#define LED_PANIC 7 /* NC NC NC ON (1Hz flashing) */
|
||||
|
||||
#define GPIO_SSP0_SCK GPIO_SSP0_SCK_1
|
||||
#define GPIO_SSP0_SSEL GPIO_SSP0_SSEL_1
|
||||
@@ -201,16 +225,20 @@ extern "C" {
|
||||
|
||||
EXTERN void lpc43_boardinitialize(void);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: lpc43_led
|
||||
/*****************************************************************************
|
||||
* Name: lpc43_ledinit, lpc43_setled, and lpc43_setleds
|
||||
*
|
||||
* Description:
|
||||
* Once the system has booted, these functions can be used to control LEDs 1 & 2
|
||||
* If CONFIG_ARCH_LEDS is defined, then NuttX will control the on-board
|
||||
* LEDs. If CONFIG_ARCH_LEDS is not defined, then the following interfaces
|
||||
* are available to control the LEDs from user applications.
|
||||
*
|
||||
************************************************************************************/
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_ARCH_LEDS
|
||||
EXTERN void lpc43_led(int lednum, int state);
|
||||
#ifndef CONFIG_ARCH_LEDS
|
||||
EXTERN void lpc43_ledinit(void);
|
||||
EXTERN void lpc43_setled(int led, bool ledon);
|
||||
EXTERN void lpc43_setleds(uint8_t ledset);
|
||||
#endif
|
||||
|
||||
#undef EXTERN
|
||||
|
||||
@@ -40,15 +40,39 @@ include ${TOPDIR}/.config
|
||||
ifeq ($(CONFIG_LPC43_CODESOURCERYW),y)
|
||||
# CodeSourcery under Windows
|
||||
CROSSDEV = arm-none-eabi-
|
||||
ARCROSSDEV = arm-none-eabi-
|
||||
WINTOOL = y
|
||||
ARCHCPUFLAGS = -mcpu=cortex-m4 -mthumb -mfloat-abi=soft
|
||||
endif
|
||||
ifeq ($(CONFIG_LPC43_CODESOURCERYL),y)
|
||||
# CodeSourcery under Linux
|
||||
CROSSDEV = arm-none-eabi-
|
||||
ARCROSSDEV = arm-none-eabi-
|
||||
ARCHCPUFLAGS = -mcpu=cortex-m4 -mthumb -mfloat-abi=soft
|
||||
MAXOPTIMIZATION = -O2
|
||||
endif
|
||||
ifeq ($(CONFIG_LPC43_ATOLLIC_LITE),y)
|
||||
# Atollic toolchain under Windows
|
||||
CROSSDEV = arm-atollic-eabi-
|
||||
ARCROSSDEV =
|
||||
WINTOOL = y
|
||||
ifeq ($(CONFIG_ARCH_FPU),y)
|
||||
ARCHCPUFLAGS = -mcpu=cortex-m4 -mthumb -march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=hard
|
||||
else
|
||||
ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft
|
||||
endif
|
||||
endif
|
||||
ifeq ($(CONFIG_LPC43_ATOLLIC_PRO),y)
|
||||
# Atollic toolchain under Windows
|
||||
CROSSDEV = arm-atollic-eabi-
|
||||
ARCROSSDEV = arm-atollic-eabi-
|
||||
WINTOOL = y
|
||||
ifeq ($(CONFIG_ARCH_FPU),y)
|
||||
ARCHCPUFLAGS = -mcpu=cortex-m4 -mthumb -march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=hard
|
||||
else
|
||||
ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft
|
||||
endif
|
||||
endif
|
||||
ifeq ($(CONFIG_LPC43_DEVKITARM),y)
|
||||
# devkitARM under Windows
|
||||
CROSSDEV = arm-eabi-
|
||||
@@ -58,6 +82,7 @@ endif
|
||||
ifeq ($(CONFIG_LPC43_BUILDROOT),y)
|
||||
# NuttX buildroot under Linux or Cygwin
|
||||
CROSSDEV = arm-elf-
|
||||
ARCROSSDEV = arm-elf-
|
||||
ARCHCPUFLAGS = -mtune=cortex-m4 -march=armv7-m -mfloat-abi=soft
|
||||
MAXOPTIMIZATION = -Os
|
||||
endif
|
||||
@@ -69,22 +94,22 @@ ifeq ($(WINTOOL),y)
|
||||
MKDEP = $(TOPDIR)/tools/mknulldeps.sh
|
||||
ARCHINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)/include}"
|
||||
ARCHXXINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" -isystem "${shell cygpath -w $(TOPDIR)/include/cxx}"
|
||||
ARCHSCRIPT = -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/scripts/ld.script}"
|
||||
ARCHSCRIPT = -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/scripts/ramconfig.ld}"
|
||||
MAXOPTIMIZATION = -O2
|
||||
else
|
||||
# Linux/Cygwin-native toolchain
|
||||
MKDEP = $(TOPDIR)/tools/mkdeps.sh
|
||||
ARCHINCLUDES = -I. -isystem $(TOPDIR)/include
|
||||
ARCHXXINCLUDES = -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx
|
||||
ARCHSCRIPT = -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/scripts/ld.script
|
||||
ARCHSCRIPT = -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/scripts/ramconfig.ld
|
||||
endif
|
||||
|
||||
CC = $(CROSSDEV)gcc
|
||||
CXX = $(CROSSDEV)g++
|
||||
CPP = $(CROSSDEV)gcc -E
|
||||
LD = $(CROSSDEV)ld
|
||||
AR = $(CROSSDEV)ar rcs
|
||||
NM = $(CROSSDEV)nm
|
||||
AR = $(ARCROSSDEV)ar rcs
|
||||
NM = $(ARCROSSDEV)nm
|
||||
OBJCOPY = $(CROSSDEV)objcopy
|
||||
OBJDUMP = $(CROSSDEV)objdump
|
||||
|
||||
@@ -98,7 +123,7 @@ else
|
||||
endif
|
||||
|
||||
ARCHCFLAGS = -fno-builtin
|
||||
ARCHCXXFLAGS = -fno-builtin -fno-exceptions
|
||||
ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fno-rtti
|
||||
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow
|
||||
ARCHWARNINGSXX = -Wall -Wshadow
|
||||
ARCHDEFINES =
|
||||
|
||||
@@ -52,7 +52,9 @@
|
||||
# CONFIG_DRAM_SIZE - Describes the installed DRAM.
|
||||
# CONFIG_DRAM_START - The start address of DRAM (physical)
|
||||
# CONFIG_DRAM_END - Last address+1 of installed RAM
|
||||
# CONFIG_ARCH_IRQPRIO - The ST32F103Z supports interrupt prioritization
|
||||
# CONFIG_ARCH_IRQPRIO - The Cortex-M4 supports interrupt prioritization
|
||||
# CONFIG_ARCH_FPU - The Cortex-M4 supports a floating point unit (FPU)
|
||||
# (But, unfortunately, most versions of GCC do not support it).
|
||||
# CONFIG_ARCH_INTERRUPTSTACK - This architecture supports an interrupt
|
||||
# stack. If defined, this symbol is the size of the interrupt
|
||||
# stack in bytes. If not defined, the user task stacks will be
|
||||
@@ -68,6 +70,9 @@
|
||||
# the 100 second delay then adjust CONFIG_BOARD_LOOPSPERMSEC until
|
||||
# the delay actually is 100 seconds.
|
||||
# CONFIG_ARCH_DMA - Support DMA initialization
|
||||
# CONFIG_ARMV7M_CMNVECTOR - This must be defined to indicate that the
|
||||
# LPC43xx port using the ARMv7 common vector logic. There are two
|
||||
# variants
|
||||
#
|
||||
CONFIG_ARCH=arm
|
||||
CONFIG_ARCH_ARM=y
|
||||
@@ -81,6 +86,7 @@ CONFIG_DRAM_SIZE=(128*1024)
|
||||
CONFIG_DRAM_START=0x10000000
|
||||
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
||||
CONFIG_ARCH_IRQPRIO=y
|
||||
CONFIG_ARCH_FPU=n
|
||||
CONFIG_ARCH_INTERRUPTSTACK=n
|
||||
CONFIG_ARCH_STACKDUMP=y
|
||||
CONFIG_ARCH_BOOTLOADER=n
|
||||
@@ -92,8 +98,10 @@ CONFIG_ARCH_DMA=n
|
||||
#
|
||||
# Identify toolchain and linker options
|
||||
#
|
||||
CONFIG_LPC43_CODESOURCERYW=n
|
||||
CONFIG_LPC43_CODESOURCERYL=y
|
||||
CONFIG_LPC43_CODESOURCERYW=y
|
||||
CONFIG_LPC43_CODESOURCERYL=n
|
||||
CONFIG_LPC43_ATOLLIC_LITE=n
|
||||
CONFIG_LPC43_ATOLLIC_PRO=n
|
||||
CONFIG_LPC43_DEVKITARM=n
|
||||
CONFIG_LPC43_BUILDROOT=n
|
||||
|
||||
|
||||
@@ -47,12 +47,24 @@ if [ -z "${PATH_ORIG}" ]; then
|
||||
export PATH_ORIG="${PATH}"
|
||||
fi
|
||||
|
||||
# TOOLCHAIN_BIN must be defined to the full path to the location where you
|
||||
# have installed the toolchain of your choice. Modify the following:
|
||||
# This the Cygwin path to the location where I installed the CodeSourcery
|
||||
# toolchain under windows. You will also have to edit this if you install
|
||||
# the CodeSourcery toolchain in any other location
|
||||
export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/CodeSourcery/Sourcery G++ Lite/bin"
|
||||
|
||||
export TOOLCHAIN_BIN="${WD}/../buildroot/build_arm_nofpu/staging_dir/bin"
|
||||
# These are the Cygwin paths to the locations where I installed the Atollic
|
||||
# toolchain under windows. You will also have to edit this if you install
|
||||
# the Atollic toolchain in any other location. /usr/bin is added before
|
||||
# the Atollic bin path because there is are binaries named gcc.exe and g++.exe
|
||||
# at those locations as well.
|
||||
#export TOOLCHAIN_BIN="/usr/bin:/cygdrive/c/Program Files (x86)/Atollic/TrueSTUDIO for ARM Pro 2.3.0/ARMTools/bin"
|
||||
#export TOOLCHAIN_BIN="/usr/bin:/cygdrive/c/Program Files (x86)/Atollic/TrueSTUDIO for STMicroelectronics STM32 Lite 2.3.0/ARMTools/bin"
|
||||
|
||||
# Andd add the toolchain path to the PATH variable
|
||||
# This the Cygwin path to the location where I build the buildroot
|
||||
# toolchain.
|
||||
#export TOOLCHAIN_BIN="${WD}/../misc/buildroot/build_arm_nofpu/staging_dir/bin"
|
||||
|
||||
# Andd add the selected toolchain path to the PATH variable
|
||||
|
||||
export PATH="${TOOLCHAIN_BIN}:/sbin:/usr/sbin:${PATH_ORIG}"
|
||||
echo "PATH : ${PATH}"
|
||||
|
||||
@@ -0,0 +1,122 @@
|
||||
/****************************************************************************
|
||||
* configs/lpc4330-xplorer/scripts/ramconfig.ld
|
||||
*
|
||||
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/* The LPC4330 on the LPC4330-Xplorer has the following memory resources:
|
||||
*
|
||||
* 1. 4096Kb of SPIFI FLASH beginning at address 0x1400:0000
|
||||
* 2. 264KB of total SRAM:
|
||||
* a. 128KB of SRAM in the CPU block beginning at address 0x1000:0000
|
||||
* b. 72KB beginning at address 0x1008:0000 and
|
||||
* c. 64KB of AHB SRAM in three banks beginning at addresses 0x2000:0000,
|
||||
* 0x2000:8000 and 0x2000:C000.
|
||||
*
|
||||
* Here we assume that:
|
||||
*
|
||||
* 1. We will be running out of SRAM at 0x1000:0000, and
|
||||
* 2. All .data and .bss will all fit into the 72KB SRAM block.
|
||||
*
|
||||
* NOTE: That initialized data is kept in the program memory SRAM and copied
|
||||
* to .data SRAM. This is wasteful and unnecessary but provides a good test
|
||||
* for future, FLASH-resident code.
|
||||
*/
|
||||
|
||||
MEMORY
|
||||
{
|
||||
progmem (rx) : ORIGIN = 0x10000000, LENGTH = 128K
|
||||
datamem (rwx) : ORIGIN = 0x10080000, LENGTH = 72K
|
||||
}
|
||||
|
||||
OUTPUT_ARCH(arm)
|
||||
ENTRY(__start) /* Treat __start as the anchor for dead code stripping */
|
||||
EXTERN(_vectors) /* Force the vectors to be included in the output */
|
||||
SECTIONS
|
||||
{
|
||||
.text : {
|
||||
_stext = ABSOLUTE(.);
|
||||
*(.vectors)
|
||||
*(.text .text.*)
|
||||
*(.fixup)
|
||||
*(.gnu.warning)
|
||||
*(.rodata .rodata.*)
|
||||
*(.gnu.linkonce.t.*)
|
||||
*(.glue_7)
|
||||
*(.glue_7t)
|
||||
*(.got)
|
||||
*(.gcc_except_table)
|
||||
*(.gnu.linkonce.r.*)
|
||||
_etext = ABSOLUTE(.);
|
||||
} > progmem
|
||||
|
||||
_eronly = ABSOLUTE(.); /* See below */
|
||||
|
||||
.data : {
|
||||
_sdata = ABSOLUTE(.);
|
||||
*(.data .data.*)
|
||||
*(.gnu.linkonce.d.*)
|
||||
CONSTRUCTORS
|
||||
_edata = ABSOLUTE(.);
|
||||
} > datamem AT > progmem
|
||||
|
||||
.ARM.extab : {
|
||||
*(.ARM.extab*)
|
||||
} >datamem
|
||||
|
||||
.ARM.exidx : {
|
||||
__exidx_start = ABSOLUTE(.);
|
||||
*(.ARM.exidx*)
|
||||
__exidx_end = ABSOLUTE(.);
|
||||
} >datamem
|
||||
|
||||
.bss : { /* BSS */
|
||||
_sbss = ABSOLUTE(.);
|
||||
*(.bss .bss.*)
|
||||
*(.gnu.linkonce.b.*)
|
||||
*(COMMON)
|
||||
_ebss = ABSOLUTE(.);
|
||||
} > datamem
|
||||
/* Stabs debugging sections. */
|
||||
.stab 0 : { *(.stab) }
|
||||
.stabstr 0 : { *(.stabstr) }
|
||||
.stab.excl 0 : { *(.stab.excl) }
|
||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
||||
.stab.index 0 : { *(.stab.index) }
|
||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
||||
.comment 0 : { *(.comment) }
|
||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
||||
.debug_info 0 : { *(.debug_info) }
|
||||
.debug_line 0 : { *(.debug_line) }
|
||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
||||
.debug_aranges 0 : { *(.debug_aranges) }
|
||||
}
|
||||
+23
-15
@@ -1,5 +1,5 @@
|
||||
/****************************************************************************
|
||||
* configs/lpc4330-xplorer/scripts/ld.script
|
||||
* configs/lpc4330-xplorer/scripts/spiconfig.ld
|
||||
*
|
||||
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
@@ -33,22 +33,30 @@
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/* The LPC4330 on the LPC4330-Xplorer has 4096Kb of SPIFI FLASH beginning at
|
||||
* address 0x1400:0000 and 264K of total SRAM: 128Kb of SRAM in the CPU block
|
||||
* beginning at address 0x1000:0000, 72Kb beginning at address 0x1008:0000 and
|
||||
* 64Kb of AHB SRAM in three banks beginning at addresses 0x2000:0000,
|
||||
* 0x2000:8000 and 0x2000:C000. Here we assume that .data and .bss will all
|
||||
* fit into the 128Kb CPU SRAM address range.
|
||||
/* The LPC4330 on the LPC4330-Xplorer has the following memory resources:
|
||||
*
|
||||
* 1. 4096Kb of SPIFI FLASH beginning at address 0x1400:0000
|
||||
* 2. 264KB of total SRAM:
|
||||
* a. 128KB of SRAM in the CPU block beginning at address 0x1000:0000
|
||||
* b. 72KB beginning at address 0x1008:0000 and
|
||||
* c. 64KB of AHB SRAM in three banks beginning at addresses 0x2000:0000,
|
||||
* 0x2000:8000 and 0x2000:C000.
|
||||
*
|
||||
* Here we assume that:
|
||||
*
|
||||
* 1. We will be running out of SPIFI flash at 0x1400:0000, and
|
||||
* 2. All .data and .bss will all fit into the 128KB CPU SRAM block.
|
||||
*/
|
||||
|
||||
MEMORY
|
||||
{
|
||||
flash (rx) : ORIGIN = 0x1c000000, LENGTH = 1024K
|
||||
sram (rwx) : ORIGIN = 0x10000000, LENGTH = 96K
|
||||
progmem (rx) : ORIGIN = 0x14000000, LENGTH = 1024K
|
||||
datamem (rwx) : ORIGIN = 0x10000000, LENGTH = 128K
|
||||
}
|
||||
|
||||
OUTPUT_ARCH(arm)
|
||||
ENTRY(_stext)
|
||||
ENTRY(__start) /* Treat __start as the anchor for dead code stripping */
|
||||
EXTERN(_vectors) /* Force the vectors to be included in the output */
|
||||
SECTIONS
|
||||
{
|
||||
.text : {
|
||||
@@ -65,7 +73,7 @@ SECTIONS
|
||||
*(.gcc_except_table)
|
||||
*(.gnu.linkonce.r.*)
|
||||
_etext = ABSOLUTE(.);
|
||||
} > flash
|
||||
} > progmem
|
||||
|
||||
_eronly = ABSOLUTE(.); /* See below */
|
||||
|
||||
@@ -75,17 +83,17 @@ SECTIONS
|
||||
*(.gnu.linkonce.d.*)
|
||||
CONSTRUCTORS
|
||||
_edata = ABSOLUTE(.);
|
||||
} > sram AT > flash
|
||||
} > datamem AT > progmem
|
||||
|
||||
.ARM.extab : {
|
||||
*(.ARM.extab*)
|
||||
} >sram
|
||||
} >datamem
|
||||
|
||||
.ARM.exidx : {
|
||||
__exidx_start = ABSOLUTE(.);
|
||||
*(.ARM.exidx*)
|
||||
__exidx_end = ABSOLUTE(.);
|
||||
} >sram
|
||||
} >datamem
|
||||
|
||||
.bss : { /* BSS */
|
||||
_sbss = ABSOLUTE(.);
|
||||
@@ -93,7 +101,7 @@ SECTIONS
|
||||
*(.gnu.linkonce.b.*)
|
||||
*(COMMON)
|
||||
_ebss = ABSOLUTE(.);
|
||||
} > sram
|
||||
} > datamem
|
||||
/* Stabs debugging sections. */
|
||||
.stab 0 : { *(.stab) }
|
||||
.stabstr 0 : { *(.stabstr) }
|
||||
@@ -38,18 +38,28 @@
|
||||
CFLAGS += -I$(TOPDIR)/sched
|
||||
|
||||
ASRCS =
|
||||
CSRCS = up_boot.c up_leds.c
|
||||
CSRCS = up_boot.c
|
||||
|
||||
ifeq ($(CONFIG_NSH_ARCHINIT),y)
|
||||
CSRCS += up_nsh.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_USBMSC),y)
|
||||
CSRCS += up_usbmsc.c
|
||||
ifeq ($(CONFIG_ARCH_FPU),y)
|
||||
CSRCS += up_ostest.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ARCH_LEDS),y)
|
||||
CSRCS += up_autoleds.c
|
||||
else
|
||||
CSRCS += up_userleds.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ARCH_BUTTONS),y)
|
||||
CSRCS += up_buttons.c
|
||||
CSRCS += up_buttons.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_USBMSC),y)
|
||||
CSRCS += up_usbmsc.c
|
||||
endif
|
||||
|
||||
AOBJS = $(ASRCS:.S=$(OBJEXT))
|
||||
|
||||
+85
-101
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
* configs/lpc4330-xplorer/src/up_leds.c
|
||||
* arch/arm/src/board/up_leds.c
|
||||
* configs/lpc4330-xplorer/src/up_autoleds.c
|
||||
* arch/arm/src/board/up_autoleds.c
|
||||
*
|
||||
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
@@ -50,28 +50,57 @@
|
||||
#include "up_arch.h"
|
||||
#include "up_internal.h"
|
||||
|
||||
#include "lpc43_internal.h"
|
||||
|
||||
#include "lpc4330_xplorer_internal.h"
|
||||
#include "xplorer_internal.h"
|
||||
|
||||
#ifdef CONFIG_ARCH_LEDS
|
||||
|
||||
/****************************************************************************
|
||||
* Definitions
|
||||
****************************************************************************/
|
||||
/* LED definitions **********************************************************/
|
||||
/* The LPC4330-Xplorer has 2 user-controllable LEDs labeled D2 an D3 in the
|
||||
* schematic and on but referred to has LED1 and LED2 here, respectively.
|
||||
*
|
||||
* LED1 D2 GPIO1[12]
|
||||
* LED2 D3 GPIO1[11]
|
||||
*
|
||||
* LEDs are pulled high to a low output illuminates the LED.
|
||||
*
|
||||
* If CONFIG_ARCH_LEDS is defined, the LEDs will be controlled as follows
|
||||
* for NuttX debug functionality (where NC means "No Change").
|
||||
*
|
||||
* ON OFF
|
||||
* LED1 LED2 LED1 LED2
|
||||
* LED_STARTED 0 OFF OFF - -
|
||||
* LED_HEAPALLOCATE 1 ON OFF - -
|
||||
* LED_IRQSENABLED 1 ON OFF - -
|
||||
* LED_STACKCREATED 1 ON OFF - -
|
||||
* LED_INIRQ 2 NC ON NC OFF
|
||||
* LED_SIGNAL 2 NC ON NC OFF
|
||||
* LED_ASSERTION 2 NC ON NC OFF
|
||||
* LED_PANIC 2 NC ON NC OFF
|
||||
*
|
||||
* If CONFIG_ARCH_LEDS is not defined, then the LEDs are completely under
|
||||
* control of the application. The following interfaces are then available
|
||||
* for application control of the LEDs:
|
||||
*
|
||||
* void lpc43_ledinit(void);
|
||||
* void lpc43_setled(int led, bool ledon);
|
||||
* void lpc43_setleds(uint8_t ledset);
|
||||
*/
|
||||
|
||||
/* Debug definitions ********************************************************/
|
||||
/* Enables debug output from this file (needs CONFIG_DEBUG with
|
||||
* CONFIG_DEBUG_VERBOSE too)
|
||||
*/
|
||||
|
||||
#undef LED_DEBUG /* Define to enable debug */
|
||||
#undef LED_VERBOSE /* Define to enable verbose debug */
|
||||
|
||||
#ifdef LED_DEBUG
|
||||
#ifdef CONFIG_DEBUG_LED
|
||||
# define leddbg lldbg
|
||||
# ifdef LED_VERBOSE
|
||||
# ifdef CONFIG_DEBUG_VERBOSE
|
||||
# define LED_VERBOSE 1
|
||||
# define ledvdbg lldbg
|
||||
# else
|
||||
# undef LED_VERBOSE
|
||||
# define ledvdbg(x...)
|
||||
# endif
|
||||
#else
|
||||
@@ -80,43 +109,28 @@
|
||||
# define ledvdbg(x...)
|
||||
#endif
|
||||
|
||||
/* Dump GPIO registers */
|
||||
|
||||
#ifdef LED_VERBOSE
|
||||
# define led_dumpgpio(m) lpc43_dumpgpio(LPC4330_XPLORER_LED2, m)
|
||||
#else
|
||||
# define led_dumpgpio(m)
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/* LED definitions ******************************************************************
|
||||
|
||||
The LPC4330-Xplorer has 2 LEDs along the bottom of the board. Green or off.
|
||||
If CONFIG_ARCH_LEDS is defined, the LEDs will be controlled as follows for NuttX
|
||||
debug functionality (where NC means "No Change").
|
||||
|
||||
During the boot phases. LED1 and LED2 will show boot status.
|
||||
|
||||
LED1 LED2
|
||||
STARTED OFF OFF
|
||||
HEAPALLOCATE BLUE OFF
|
||||
IRQSENABLED OFF BLUE
|
||||
STACKCREATED OFF OFF
|
||||
|
||||
After the system is booted, this logic will no longer use LEDs 1 & 2. They
|
||||
are available for use by applications using lpc43_led (prototyped below)
|
||||
*/
|
||||
|
||||
static bool g_initialized;
|
||||
static int g_nestcount;
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: led_dumppins
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef LED_VERBOSE
|
||||
static void led_dumppins(FAR const char *msg)
|
||||
{
|
||||
lpc43_dumppinconfig(PINCONFIG_LED1, msg);
|
||||
lpc43_dumpgpio(GPIO_LED2, msg);
|
||||
}
|
||||
#else
|
||||
# define led_dumppins(m)
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
@@ -127,14 +141,19 @@ static int g_nestcount;
|
||||
|
||||
void up_ledinit(void)
|
||||
{
|
||||
/* Configure all LED GPIO lines */
|
||||
/* Configure all LED pins as GPIO outputs */
|
||||
|
||||
led_dumpgpio("up_ledinit() Entry)");
|
||||
led_dumppins("up_ledinit() Entry)");
|
||||
|
||||
lpc43_configgpio(LPC4330_XPLORER_LED1);
|
||||
lpc43_configgpio(LPC4330_XPLORER_LED2);
|
||||
/* Configure LED pins as GPIOs, then configure GPIOs as outputs */
|
||||
|
||||
led_dumpgpio("up_ledinit() Exit");
|
||||
lpc43_pinconfig(PINCONFIG_LED1);
|
||||
lpc43_gpioconfig(GPIO_LED1);
|
||||
|
||||
lpc43_pinconfig(PINCONFIG_LED2);
|
||||
lpc43_gpioconfig(GPIO_LED2);
|
||||
|
||||
led_dumppins("up_ledinit() Exit");
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@@ -143,44 +162,22 @@ void up_ledinit(void)
|
||||
|
||||
void up_ledon(int led)
|
||||
{
|
||||
/* We will control LED1 and LED2 not yet completed the boot sequence. */
|
||||
|
||||
if (!g_initialized)
|
||||
{
|
||||
int led1 = 0;
|
||||
int led2 = 0;
|
||||
switch (led)
|
||||
{
|
||||
case LED_STACKCREATED:
|
||||
g_initialized = true;
|
||||
case LED_STARTED:
|
||||
default:
|
||||
break;
|
||||
|
||||
case LED_HEAPALLOCATE:
|
||||
led1 = 1;
|
||||
break;
|
||||
|
||||
case LED_IRQSENABLED:
|
||||
led2 = 1;
|
||||
}
|
||||
lpc43_led(LPC4330_XPLORER_LED1,led1);
|
||||
lpc43_led(LPC4330_XPLORER_LED2,led2);
|
||||
}
|
||||
|
||||
/* We will always control the HB LED */
|
||||
|
||||
switch (led)
|
||||
{
|
||||
case LED_INIRQ:
|
||||
case LED_SIGNAL:
|
||||
case LED_ASSERTION:
|
||||
case LED_PANIC:
|
||||
lpc43_gpiowrite(LPC4330_XPLORER_HEARTBEAT, false);
|
||||
g_nestcount++;
|
||||
default:
|
||||
case 0:
|
||||
lpc43_gpiowrite(GPIO_LED1, true); /* LED1 OFF */
|
||||
lpc43_gpiowrite(GPIO_LED2, true); /* LED2 OFF */
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
case 1:
|
||||
lpc43_gpiowrite(GPIO_LED1, false); /* LED1 ON */
|
||||
lpc43_gpiowrite(GPIO_LED2, true); /* LED2 OFF */
|
||||
break;
|
||||
|
||||
case 2:
|
||||
lpc43_gpiowrite(GPIO_LED2, false); /* LED2 ON */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -190,30 +187,17 @@ void up_ledon(int led)
|
||||
|
||||
void up_ledoff(int led)
|
||||
{
|
||||
/* In all states, OFF can only mean turning off the HB LED */
|
||||
switch (led)
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
|
||||
if (g_nestcount <= 1)
|
||||
{
|
||||
lpc43_led(LPC4330_XPLORER_HEARTBEAT, true);
|
||||
g_nestcount = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_nestcount--;
|
||||
case 2:
|
||||
lpc43_gpiowrite(GPIO_LED2, true); /* LED2 OFF */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/************************************************************************************
|
||||
* Name: lpc43_led
|
||||
*
|
||||
* Description:
|
||||
* Once the system has booted, these functions can be used to control the LEDs
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
void lpc43_led(int lednum, int state)
|
||||
|
||||
{
|
||||
lpc43_gpiowrite(lednum, state);
|
||||
}
|
||||
#endif /* CONFIG_ARCH_LEDS */
|
||||
@@ -47,8 +47,7 @@
|
||||
#include "up_arch.h"
|
||||
#include "up_internal.h"
|
||||
|
||||
#include "lpc43_internal.h"
|
||||
#include "lpc4330_xplorer_internal.h"
|
||||
#include "xplorer_internal.h"
|
||||
|
||||
/************************************************************************************
|
||||
* Definitions
|
||||
|
||||
@@ -47,8 +47,7 @@
|
||||
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "lpc43_internal.h"
|
||||
#include "lpc4330_xplorer_internal.h"
|
||||
#include "xplorer_internal.h"
|
||||
|
||||
#ifdef CONFIG_ARCH_BUTTONS
|
||||
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
/************************************************************************************
|
||||
* configs/lpc4330-xplorer/src/up_ostest.c
|
||||
* arch/arm/src/board/up_ostest.c
|
||||
*
|
||||
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
/************************************************************************************
|
||||
* Included Files
|
||||
************************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <arch/irq.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "up_arch.h"
|
||||
#include "up_internal.h"
|
||||
#include "xplorer-internal.h"
|
||||
|
||||
/************************************************************************************
|
||||
* Definitions
|
||||
************************************************************************************/
|
||||
/* Configuration ********************************************************************/
|
||||
|
||||
#undef HAVE_FPU
|
||||
#if defined(CONFIG_ARCH_FPU) && defined(CONFIG_EXAMPLES_OSTEST_FPUSIZE) && \
|
||||
defined(CONFIG_SCHED_WAITPID) && !defined(CONFIG_DISABLE_SIGNALS) && \
|
||||
!defined(CONFIG_ARMV7M_CMNVECTOR)
|
||||
# define HAVE_FPU 1
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_FPU
|
||||
|
||||
#if CONFIG_EXAMPLES_OSTEST_FPUSIZE != (4*SW_FPU_REGS)
|
||||
# error "CONFIG_EXAMPLES_OSTEST_FPUSIZE has the wrong size"
|
||||
#endif
|
||||
|
||||
/************************************************************************************
|
||||
* Private Data
|
||||
************************************************************************************/
|
||||
|
||||
static uint32_t g_saveregs[XCPTCONTEXT_REGS];
|
||||
|
||||
/************************************************************************************
|
||||
* Private Functions
|
||||
************************************************************************************/
|
||||
|
||||
/************************************************************************************
|
||||
* Public Functions
|
||||
************************************************************************************/
|
||||
/* Given an array of size CONFIG_EXAMPLES_OSTEST_FPUSIZE, this function will return
|
||||
* the current FPU registers.
|
||||
*/
|
||||
|
||||
void arch_getfpu(FAR uint32_t *fpusave)
|
||||
{
|
||||
irqstate_t flags;
|
||||
|
||||
/* Take a snapshot of the thread context right now */
|
||||
|
||||
flags = irqsave();
|
||||
up_saveusercontext(g_saveregs);
|
||||
|
||||
/* Return only the floating register values */
|
||||
|
||||
memcpy(fpusave, &g_saveregs[REG_S0], (4*SW_FPU_REGS));
|
||||
irqrestore(flags);
|
||||
}
|
||||
|
||||
/* Given two arrays of size CONFIG_EXAMPLES_OSTEST_FPUSIZE this function
|
||||
* will compare them and return true if they are identical.
|
||||
*/
|
||||
|
||||
bool arch_cmpfpu(FAR const uint32_t *fpusave1, FAR const uint32_t *fpusave2)
|
||||
{
|
||||
return memcmp(fpusave1, fpusave2, (4*SW_FPU_REGS)) == 0;
|
||||
}
|
||||
|
||||
#endif /* HAVE_FPU */
|
||||
@@ -0,0 +1,157 @@
|
||||
/****************************************************************************
|
||||
* configs/lpc4330-xplorer/src/up_userleds.c
|
||||
* arch/arm/src/board/up_userleds.c
|
||||
*
|
||||
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "chip.h"
|
||||
#include "up_arch.h"
|
||||
#include "up_internal.h"
|
||||
|
||||
#include "xplorer_internal.h"
|
||||
|
||||
#ifndef CONFIG_ARCH_LEDS
|
||||
|
||||
/****************************************************************************
|
||||
* Definitions
|
||||
****************************************************************************/
|
||||
/* LED definitions **********************************************************/
|
||||
/* The LPC4330-Xplorer has 2 user-controllable LEDs labeled D2 an D3 in the
|
||||
* schematic and on but referred to has LED1 and LED2 here, respectively.
|
||||
*
|
||||
* LED1 D2 GPIO1[12]
|
||||
* LED2 D3 GPIO1[11]
|
||||
*
|
||||
* LEDs are pulled high to a low output illuminates the LED.
|
||||
*/
|
||||
|
||||
/* Debug definitions ********************************************************/
|
||||
/* Enables debug output from this file (needs CONFIG_DEBUG with
|
||||
* CONFIG_DEBUG_VERBOSE too)
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_DEBUG_LED
|
||||
# define leddbg lldbg
|
||||
# ifdef CONFIG_DEBUG_VERBOSE
|
||||
# define LED_VERBOSE 1
|
||||
# define ledvdbg lldbg
|
||||
# else
|
||||
# undef LED_VERBOSE
|
||||
# define ledvdbg(x...)
|
||||
# endif
|
||||
#else
|
||||
# undef LED_VERBOSE
|
||||
# define leddbg(x...)
|
||||
# define ledvdbg(x...)
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: led_dumppins
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef LED_VERBOSE
|
||||
static void led_dumppins(FAR const char *msg)
|
||||
{
|
||||
lpc43_dumppinconfig(PINCONFIG_LED1, msg);
|
||||
lpc43_dumpgpio(GPIO_LED2, msg);
|
||||
}
|
||||
#else
|
||||
# define led_dumppins(m)
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: lpc43_ledinit
|
||||
****************************************************************************/
|
||||
|
||||
void lpc43_ledinit(void)
|
||||
{
|
||||
/* Configure all LED GPIO lines */
|
||||
|
||||
led_dumppins("lpc43_ledinit() Entry)");
|
||||
|
||||
/* Configure LED pins as GPIOs, then configure GPIOs as outputs */
|
||||
|
||||
lpc43_pinconfig(PINCONFIG_LED1);
|
||||
lpc43_gpioconfig(GPIO_LED1);
|
||||
|
||||
lpc43_pinconfig(PINCONFIG_LED2);
|
||||
lpc43_gpioconfig(GPIO_LED2);
|
||||
|
||||
led_dumppins("lpc43_ledinit() Exit");
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: lpc43_setled
|
||||
****************************************************************************/
|
||||
|
||||
void lpc43_setled(int led, bool ledon)
|
||||
{
|
||||
uint16_t gpiocfg = (led == BOARD_LED1 ? BOARD_LED1 : BOARD_LED2);
|
||||
lpc43_gpiowrite(GPIO_LED1, !ledon);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: lpc43_setleds
|
||||
****************************************************************************/
|
||||
|
||||
void lpc43_setleds(uint8_t ledset)
|
||||
{
|
||||
lpc43_gpiowrite(BOARD_LED1, (ledset & BOARD_LED1_BIT) == 0);
|
||||
lpc43_gpiowrite(BOARD_LED2, (ledset & BOARD_LED2_BIT) == 0);
|
||||
}
|
||||
|
||||
#endif /* !CONFIG_ARCH_LEDS */
|
||||
+22
-13
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
* configs/lpc4330-xplorer/src/lpc4330_xplorer_internal.h
|
||||
* arch/arm/src/board/lpc4330-xplorer_internal.n
|
||||
* configs/lpc4330-xplorer/src/xplorer_internal.h
|
||||
* arch/arm/src/board/xplorer_internal.n
|
||||
*
|
||||
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
@@ -34,8 +34,8 @@
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef _CONFIGS_LPC4330_XPLORER_SRC_LPC4330_XPLORER_INTERNAL_H
|
||||
#define _CONFIGS_LPC4330_XPLORER_SRC_LPC4330_XPLORER_INTERNAL_H
|
||||
#ifndef _CONFIGS_LPC4330_XPLORER_SRC_XPLORER_INTERNAL_H
|
||||
#define _CONFIGS_LPC4330_XPLORER_SRC_XPLORER_INTERNAL_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
@@ -44,6 +44,9 @@
|
||||
#include <nuttx/config.h>
|
||||
#include <nuttx/compiler.h>
|
||||
|
||||
#include "lpc43_pinconfig.h"
|
||||
#include "lpc43_gpio.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Definitions
|
||||
****************************************************************************/
|
||||
@@ -55,14 +58,20 @@
|
||||
* gpio1[11] - LED D3 J10-17 LED2
|
||||
****************************************************************************/
|
||||
|
||||
#define LPC4330_XPLORER_LED1 (GPIO_OUTPUT | GPIO_PORT1 | GPIO_PIN12)
|
||||
#define LPC4330_XPLORER_LED1_OFF LPC4330_XPLORER_LED1
|
||||
#define LPC4330_XPLORER_LED1_ON (LPC4330_XPLORER_LED1 | GPIO_VALUE_ONE)
|
||||
#define LPC4330_XPLORER_LED2 (GPIO_OUTPUT | GPIO_PORT1 | GPIO_PIN11)
|
||||
#define LPC4330_XPLORER_LED2_OFF LPC4330_XPLORER_LED2
|
||||
#define LPC4330_XPLORER_LED2_ON (LPC4330_XPLORER_LED2 | GPIO_VALUE_ONE)
|
||||
/* Definitions to configure LED pins as GPIOs:
|
||||
*
|
||||
* - Floating
|
||||
* - Normal drive
|
||||
* - No buffering, glitch filtering, slew=slow
|
||||
*/
|
||||
|
||||
#define LPC4330_XPLORER_HEARTBEAT LPC4330_XPLORER_LED2
|
||||
#define PINCONFIG_LED1 PINCONF_GPIO1p12
|
||||
#define PINCONFIG_LED2 PINCONF_GPIO1p11
|
||||
|
||||
/* Definitions to configure LED GPIOs as outputs */
|
||||
|
||||
#define GPIO_LED1 (GPIO_MODE_OUTPUT | GPIO_VALUE_ONE | GPIO_PORT1 | GPIO_PIN12)
|
||||
#define GPIO_LED2 (GPIO_MODE_OUTPUT | GPIO_VALUE_ONE | GPIO_PORT1 | GPIO_PIN11)
|
||||
|
||||
/****************************************************************************
|
||||
* Buttons GPIO PIN SIGNAL NAME
|
||||
@@ -70,7 +79,7 @@
|
||||
* gpio0[7] - User Button SW2 J8-25 BTN1
|
||||
****************************************************************************/
|
||||
|
||||
#define LPC4330_XPLORER_BUT1 (GPIO_INTBOTH | GPIO_FLOAT | GPIO_PORT0 | GPIO_PIN7)
|
||||
#define LPC4330_XPLORER_BUT1 (GPIO_INTBOTH | GPIO_FLOAT | GPIO_PORT0 | GPIO_PIN7)
|
||||
|
||||
/* Button IRQ numbers */
|
||||
|
||||
@@ -101,4 +110,4 @@
|
||||
extern void weak_function lpc43_sspinitialize(void);
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* _CONFIGS_LPC4330_XPLORER_SRC_LPC4330_XPLORER_INTERNAL_H */
|
||||
#endif /* _CONFIGS_LPC4330_XPLORER_SRC_XPLORER_INTERNAL_H */
|
||||
@@ -64,7 +64,7 @@ GNU Toolchain Options
|
||||
the setenv.h file if your make cannot find the tools.
|
||||
|
||||
NOTE: the CodeSourcery (for Windows), Atollic, devkitARM, and Raisonance toolchains are
|
||||
Windows native toolchains. The CodeSourcey (for Linux) and NuttX buildroot
|
||||
Windows native toolchains. The CodeSourcery (for Linux) and NuttX buildroot
|
||||
toolchains are Cygwin and/or Linux native toolchains. There are several limitations
|
||||
to using a Windows based toolchain in a Cygwin environment. The three biggest are:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user