Merged nuttx/boards/master into atmega2560
This commit is contained in:
commit
8fa0f43a59
@ -242,6 +242,9 @@ config ARCH_BOARD_KWIKSTIK_K40
|
|||||||
config ARCH_BOARD_LAUNCHXL_TMS57004
|
config ARCH_BOARD_LAUNCHXL_TMS57004
|
||||||
bool "TI LaunchXL-TMS57004"
|
bool "TI LaunchXL-TMS57004"
|
||||||
depends on ARCH_CHIP_TMS570LS0432PZ
|
depends on ARCH_CHIP_TMS570LS0432PZ
|
||||||
|
select ARCH_HAVE_LEDS
|
||||||
|
select ARCH_HAVE_BUTTONS
|
||||||
|
select ARCH_HAVE_IRQBUTTONS
|
||||||
---help---
|
---help---
|
||||||
TI Hercules TMS570LS04x/03x LaunchPad Evaluation Kit (LAUNCHXL-
|
TI Hercules TMS570LS04x/03x LaunchPad Evaluation Kit (LAUNCHXL-
|
||||||
TMS57004) featuring the Hercules TMS570LS0432PZ chip.
|
TMS57004) featuring the Hercules TMS570LS0432PZ chip.
|
||||||
|
@ -1,18 +1,211 @@
|
|||||||
README
|
README
|
||||||
^^^^^^
|
======
|
||||||
|
|
||||||
This README provides some information about the port of NuttX to the TI
|
This README provides some information about the port of NuttX to the TI
|
||||||
Hercules TMS570LS04x/03x LaunchPad Evaluation Kit (LAUNCHXL-TMS57004)
|
Hercules TMS570LS04x/03x LaunchPad Evaluation Kit (LAUNCHXL-TMS57004)
|
||||||
featuring the Hercules TMS570LS0432PZ chip.
|
featuring the Hercules TMS570LS0432PZ chip.
|
||||||
|
|
||||||
Contents
|
Contents
|
||||||
^^^^^^^^
|
========
|
||||||
|
|
||||||
Serial Console
|
- Status
|
||||||
|
- Toolchain
|
||||||
|
- LEDs and Buttons
|
||||||
|
- Serial Console
|
||||||
|
- Debugging
|
||||||
|
- Configurations
|
||||||
|
|
||||||
|
Status
|
||||||
|
======
|
||||||
|
|
||||||
|
The basic port to the TMS570 is complete. After a few debug attempts,
|
||||||
|
I think I may have damaged my board: The CPU NERROR LED illuminates, JTAG
|
||||||
|
no longer recognizes the part, and can't re-program the FLASH.
|
||||||
|
|
||||||
|
Toolchain
|
||||||
|
=========
|
||||||
|
|
||||||
|
Build Platform
|
||||||
|
--------------
|
||||||
|
All of these configurations are set up to build with Cygwin under Windows
|
||||||
|
(unless stated otherwise in the description of the configuration).
|
||||||
|
|
||||||
|
Endian-ness Issues
|
||||||
|
------------------
|
||||||
|
I started using the the "GNU Tools for ARM Embedded Processors" that is
|
||||||
|
maintained by ARM.
|
||||||
|
|
||||||
|
https://launchpad.net/gcc-arm-embedded
|
||||||
|
|
||||||
|
However, that tool chain will not support the TMS570 big-endian mode.
|
||||||
|
Certainly the -mbig-endian options will compiler for big-endian, but the
|
||||||
|
final link fails because there is no big-endian version lib libgcc.
|
||||||
|
|
||||||
|
There are patches available here if you want to build that toolchain
|
||||||
|
from scratch:
|
||||||
|
|
||||||
|
https://launchpad.net/gcc-arm-embedded/+question/27995
|
||||||
|
|
||||||
|
I now use a version of the NuttX buildroot toolchain that can be built like
|
||||||
|
this:
|
||||||
|
|
||||||
|
cd buildroot/
|
||||||
|
cp configs/cortexr4-armeb-eabi-4.8.3-defconfig .config
|
||||||
|
make oldconfig
|
||||||
|
make
|
||||||
|
|
||||||
|
You have to have several obscure packages installed on your Linux or Cygwin
|
||||||
|
system to build the toolchain like this: GMP, MPFR, MPC, and probably
|
||||||
|
others. See the buildroot/README.txt file for additional important information
|
||||||
|
about building the toolchain.
|
||||||
|
|
||||||
|
Reconfiguring
|
||||||
|
-------------
|
||||||
|
The build configuration selections can easily be reconfigured using 'make
|
||||||
|
menuconfig'. Here are the relevant current settings:
|
||||||
|
|
||||||
|
Build Setup:
|
||||||
|
CONFIG_HOST_WINDOWS=y : Window environment
|
||||||
|
CONFIG_WINDOWS_CYGWIN=y : Cywin under Windows
|
||||||
|
|
||||||
|
System Type -> Toolchain:
|
||||||
|
CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIW=y : GNU ARM EABI toolchain
|
||||||
|
|
||||||
|
LEDs and Buttons
|
||||||
|
================
|
||||||
|
|
||||||
|
LEDs
|
||||||
|
----
|
||||||
|
The launchpad has several LEDs:
|
||||||
|
|
||||||
|
- LEd D1 (white) that connects to the USB +5V supply,
|
||||||
|
- LED D10 (red) that connects to the TMS570's NERROR pin,
|
||||||
|
- D5 (blue), D6 (blue), and D8 (blue) connect to the XDS100 FT2322,
|
||||||
|
- D7 (blue) connects to the XSD100 CPLD, and
|
||||||
|
- Two white, user LEDs labeled D12 that connects to the NHET08
|
||||||
|
pin and D11 that connects to GIOA2.
|
||||||
|
|
||||||
|
NHET08 is one of 32 N2HET pins than can be available to the user if
|
||||||
|
not used by N2HET. This implementation, however, uses only the single
|
||||||
|
LED driven by GIOA2. That LED is tied to ground and illuminated
|
||||||
|
with a high level output value.
|
||||||
|
|
||||||
|
This LED is not used by the board port unless CONFIG_ARCH_LEDS is
|
||||||
|
defined. In that case, the usage by the board port is defined in
|
||||||
|
include/board.h and src/tms570_autoleds.c. The LED is used to encode
|
||||||
|
OS-related events as follows:
|
||||||
|
|
||||||
|
------------------- ----------------------- ------
|
||||||
|
SYMBOL Meaning LED
|
||||||
|
------------------- ----------------------- ------
|
||||||
|
LED_STARTED NuttX has been started OFF
|
||||||
|
LED_HEAPALLOCATE Heap has been allocated OFF
|
||||||
|
LED_IRQSENABLED Interrupts enabled OFF
|
||||||
|
LED_STACKCREATED Idle stack created ON
|
||||||
|
LED_INIRQ In an interrupt N/C
|
||||||
|
LED_SIGNAL In a signal handler N/C
|
||||||
|
LED_ASSERTION An assertion failed N/C
|
||||||
|
LED_PANIC The system has crashed FLASH
|
||||||
|
|
||||||
|
Thus if the LED is statically on, NuttX has successfully booted and is,
|
||||||
|
apparently, running normally. If the LED is flashing at approximately
|
||||||
|
2Hz, then a fatal error has been detected and the system has halted.
|
||||||
|
|
||||||
|
Buttons
|
||||||
|
-------
|
||||||
|
The launchpad has three mechanical buttons. Two of these are reset buttons:
|
||||||
|
One button is labeled PORRST performs a power-on reset and one labeled RST
|
||||||
|
performs an MCU reset. Only one button is available for general software
|
||||||
|
usage. That button is labeled GIOA7 and is, obviously, sensed on GIOA7.
|
||||||
|
|
||||||
|
GIOA7 is tied to ground, but will be pulled high if the GIOA7 button is
|
||||||
|
depressed.
|
||||||
|
|
||||||
Serial Console
|
Serial Console
|
||||||
^^^^^^^^^^^^^^
|
==============
|
||||||
|
|
||||||
This TMS570 has a single SCI. The SCI_RX and TX pins are connected to
|
This TMS570 has a single SCI. The SCI_RX and TX pins are connected to
|
||||||
the FTDI chip which provides a virtual COM port for the launchpad.
|
the FTDI chip which provides a virtual COM port for the launchpad.
|
||||||
|
|
||||||
|
Debugging
|
||||||
|
=========
|
||||||
|
|
||||||
|
I used a Segger J-Link connected to the Launchpad via the JTAG connector.
|
||||||
|
The following table shows how I connected the 14-pin JTAG connector on
|
||||||
|
the Launchpad to the Segger 20-pin JTAG connector:
|
||||||
|
|
||||||
|
--- ----------- ------ ------------- --- ---------- ------ -------
|
||||||
|
J12 LAUCHPAD J-LINK J-LINK J12 LAUCHPAD J-LINK J-LINK
|
||||||
|
PIN SIGNAL PIN SIGNAL PIN SIGNAL PIN SIGNAL
|
||||||
|
--- ----------- ------ ------------- --- ---------- ------ -------
|
||||||
|
1 TMS 7 TMS 2 TRTSN 3 nTRST
|
||||||
|
3 TDI 5 TDI 4 GND 2 GND
|
||||||
|
5 PD (+3V3) 1 VTref 6 N/C - N/C
|
||||||
|
7 TDO 13 TDO 8 JTAG_SEL** 4 GND
|
||||||
|
9 RTCK 11 RTCK 10 GND 6 GND
|
||||||
|
11 TCK 9 TCK 12 GND 8 GND
|
||||||
|
13 EMU0* - N/C 14 EMU1* - N/C
|
||||||
|
--- ----------- ------ ------------- --- ---------- ------ -------
|
||||||
|
|
||||||
|
* Pulled high on board
|
||||||
|
** Needs to be grounded to select JTAG
|
||||||
|
|
||||||
|
Configurations
|
||||||
|
==============
|
||||||
|
|
||||||
|
Information Common to All Configurations
|
||||||
|
----------------------------------------
|
||||||
|
Each LaunchXL-TMS50704 configuration is maintained in a sub-directory and
|
||||||
|
can be selected as follow:
|
||||||
|
|
||||||
|
cd tools
|
||||||
|
./configure.sh launchxl-tms57004/<subdir>
|
||||||
|
cd -
|
||||||
|
. ./setenv.sh
|
||||||
|
|
||||||
|
Before sourcing the setenv.sh file above, you should examine it and perform
|
||||||
|
edits as necessary so that TOOLCHAIN_BIN is the correct path to the directory
|
||||||
|
than holds your toolchain binaries.
|
||||||
|
|
||||||
|
And then build NuttX by simply typing the following. At the conclusion of
|
||||||
|
the make, the nuttx binary will reside in an ELF file called, simply, nuttx.
|
||||||
|
|
||||||
|
make oldconfig
|
||||||
|
make
|
||||||
|
|
||||||
|
The <subdir> that is provided above as an argument to the tools/configure.sh
|
||||||
|
must be is one of the following.
|
||||||
|
|
||||||
|
NOTES:
|
||||||
|
|
||||||
|
1. These configurations use the mconf-based configuration tool. To
|
||||||
|
change any of these configurations using that tool, you should:
|
||||||
|
|
||||||
|
a. Build and install the kconfig-mconf tool. See nuttx/README.txt
|
||||||
|
see additional README.txt files in the NuttX tools repository.
|
||||||
|
|
||||||
|
b. Execute 'make menuconfig' in nuttx/ in order to start the
|
||||||
|
reconfiguration process.
|
||||||
|
|
||||||
|
2. All of these configurations are set up to build under Windows using the
|
||||||
|
"GNU Tools for ARM Embedded Processors" that is maintained by ARM
|
||||||
|
(unless stated otherwise in the description of the configuration).
|
||||||
|
|
||||||
|
https://launchpad.net/gcc-arm-embedded
|
||||||
|
|
||||||
|
That toolchain selection can easily be reconfigured using
|
||||||
|
'make menuconfig'. Here are the relevant current settings:
|
||||||
|
|
||||||
|
Build Setup:
|
||||||
|
CONFIG_HOST_WINDOWS=y : Window environment
|
||||||
|
CONFIG_WINDOWS_CYGWIN=y : Cywin under Windows
|
||||||
|
|
||||||
|
System Type -> Toolchain:
|
||||||
|
CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIW=y : GNU ARM EABI toolchain
|
||||||
|
|
||||||
|
Configuration sub-directories
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
nsh:
|
||||||
|
|
||||||
|
Configures the NuttShell (nsh) located at examples/nsh.
|
||||||
|
@ -179,8 +179,77 @@
|
|||||||
PINMUX_MIBSPI1NCS1_PIN
|
PINMUX_MIBSPI1NCS1_PIN
|
||||||
|
|
||||||
/* LED definitions ******************************************************************/
|
/* LED definitions ******************************************************************/
|
||||||
|
/* LEDs
|
||||||
|
*
|
||||||
|
* The launchpad has several LEDs:
|
||||||
|
*
|
||||||
|
* - LEd D1 (white) that connects to the USB +5V supply,
|
||||||
|
* - LED D10 (red) that connects to the TMS570's NERROR pin,
|
||||||
|
* - D5 (blue), D6 (blue), and D8 (blue) connect to the XDS100 FT2322,
|
||||||
|
* - D7 (blue) connects to the XSD100 CPLD, and
|
||||||
|
* - Two white, user LEDs labeled D12 that connects to the NHET08
|
||||||
|
* pin and D11 that connects to GIOA2.
|
||||||
|
*
|
||||||
|
* NHET08 is one of 32 N2HET pins than can be available to the user if not used by
|
||||||
|
* N2HET. This implementation, however, uses only the single LED driven by GIOA2.
|
||||||
|
* That LED is tied to ground and illuminated with a high level output value.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* LED index values for use with board_userled() */
|
||||||
|
|
||||||
|
#define BOARD_LED_D11 0
|
||||||
|
#define BOARD_NLEDS 1
|
||||||
|
|
||||||
|
/* LED bits for use with board_userled_all() */
|
||||||
|
|
||||||
|
#define BOARD_LED_D11_BIT (1 << BOARD_LED_D11)
|
||||||
|
|
||||||
|
/* This LED is not used by the board port unless CONFIG_ARCH_LEDS is
|
||||||
|
* defined. In that case, the usage by the board port is defined in
|
||||||
|
* include/board.h and src/tms570_autoleds.c. The LED is used to encode
|
||||||
|
* OS-related events as follows:
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* These LEDs are not used by the board port unless CONFIG_ARCH_LEDS is
|
||||||
|
* defined. In that case, the usage by the board port is defined in
|
||||||
|
* include/board.h and src/sam_autoleds.c. The LEDs are used to encode
|
||||||
|
* OS-related events as follows:
|
||||||
|
*
|
||||||
|
* ---------------------- ---------------------------- ------
|
||||||
|
* SYMBOL Meaning LED
|
||||||
|
* ---------------------- ---------------------------- ------ */
|
||||||
|
|
||||||
|
#define LED_STARTED 0 /* NuttX has been started OFF */
|
||||||
|
#define LED_HEAPALLOCATE 0 /* Heap has been allocated OFF */
|
||||||
|
#define LED_IRQSENABLED 0 /* Interrupts enabled OFF */
|
||||||
|
#define LED_STACKCREATED 1 /* Idle stack created ON */
|
||||||
|
#define LED_INIRQ 2 /* In an interrupt N/C */
|
||||||
|
#define LED_SIGNAL 2 /* In a signal handler N/C */
|
||||||
|
#define LED_ASSERTION 2 /* An assertion failed N/C */
|
||||||
|
#define LED_PANIC 3 /* The system has crashed FLASH */
|
||||||
|
#undef LED_IDLE /* MCU is is sleep mode Not used */
|
||||||
|
|
||||||
|
/* Thus if the LED is statically on, NuttX has successfully booted and is,
|
||||||
|
* apparently, running normally. If the LED is flashing at approximately
|
||||||
|
* 2Hz, then a fatal error has been detected and the system has halted.
|
||||||
|
*/
|
||||||
|
|
||||||
/* Button definitions ***************************************************************/
|
/* Button definitions ***************************************************************/
|
||||||
|
/* Buttons
|
||||||
|
*
|
||||||
|
* The launchpad has three mechanical buttons. Two of these are reset buttons: One
|
||||||
|
* button is labeled PORRST performs a power-on reset and one labeled RST performs
|
||||||
|
* an MCU reset. Only one button is available for general software usage. That
|
||||||
|
* button is labeled GIOA7 and is, obviously, sensed on GIOA7.
|
||||||
|
*
|
||||||
|
* GIOA7 is tied to ground, but will be pulled high if the GIOA7 button is
|
||||||
|
* depressed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define BUTTON_GIOA7 0
|
||||||
|
#define NUM_BUTTONS 1
|
||||||
|
|
||||||
|
#define BUTTON_GIOA7_BIT (1 << BUTTON_GIOA7)
|
||||||
|
|
||||||
/************************************************************************************
|
/************************************************************************************
|
||||||
* Public Data
|
* Public Data
|
||||||
|
@ -68,7 +68,7 @@ ifneq ($(CONFIG_DEBUG_NOOPT),y)
|
|||||||
ARCHOPTIMIZATION += $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
|
ARCHOPTIMIZATION += $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ARCHCPUFLAGS = -mcpu=cortex-r4
|
ARCHCPUFLAGS = -mcpu=cortex-r4 -mbig-endian
|
||||||
ARCHCFLAGS = -fno-builtin
|
ARCHCFLAGS = -fno-builtin
|
||||||
ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fno-rtti
|
ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fno-rtti
|
||||||
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef
|
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef
|
||||||
@ -107,8 +107,11 @@ LIBEXT = .a
|
|||||||
EXEEXT =
|
EXEEXT =
|
||||||
|
|
||||||
ifneq ($(CROSSDEV),arm-nuttx-elf-)
|
ifneq ($(CROSSDEV),arm-nuttx-elf-)
|
||||||
|
ifneq ($(CROSSDEV),armeb-nuttx-elf-)
|
||||||
LDFLAGS += -nostartfiles -nodefaultlibs
|
LDFLAGS += -nostartfiles -nodefaultlibs
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
|
ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
|
||||||
LDFLAGS += -g
|
LDFLAGS += -g
|
||||||
endif
|
endif
|
||||||
|
@ -130,17 +130,21 @@ CONFIG_ARCH_LOWVECTORS=y
|
|||||||
CONFIG_ARMV7R_MEMINIT=y
|
CONFIG_ARMV7R_MEMINIT=y
|
||||||
# CONFIG_ARMV7R_HAVE_L2CC is not set
|
# CONFIG_ARMV7R_HAVE_L2CC is not set
|
||||||
# CONFIG_ARMV7R_HAVE_L2CC_PL310 is not set
|
# CONFIG_ARMV7R_HAVE_L2CC_PL310 is not set
|
||||||
# CONFIG_ARMV7R_TOOLCHAIN_BUILDROOT is not set
|
CONFIG_ARMV7R_TOOLCHAIN_BUILDROOT=y
|
||||||
# CONFIG_ARMV7R_TOOLCHAIN_CODESOURCERYW is not set
|
# CONFIG_ARMV7R_TOOLCHAIN_CODESOURCERYW is not set
|
||||||
# CONFIG_ARMV7R_TOOLCHAIN_DEVKITARM is not set
|
# CONFIG_ARMV7R_TOOLCHAIN_DEVKITARM is not set
|
||||||
# CONFIG_ARMV7R_TOOLCHAIN_GNU_EABIL is not set
|
# CONFIG_ARMV7R_TOOLCHAIN_GNU_EABIL is not set
|
||||||
CONFIG_ARMV7R_TOOLCHAIN_GNU_EABIW=y
|
# CONFIG_ARMV7R_TOOLCHAIN_GNU_EABIW is not set
|
||||||
# CONFIG_ARMV7R_TOOLCHAIN_GNU_OABI is not set
|
# CONFIG_ARMV7R_TOOLCHAIN_GNU_OABI is not set
|
||||||
|
# CONFIG_ARMV7R_OABI_TOOLCHAIN is not set
|
||||||
|
CONFIG_ARMV7R_HAVE_DECODEFIQ=y
|
||||||
# CONFIG_ARMV7R_DECODEFIQ is not set
|
# CONFIG_ARMV7R_DECODEFIQ is not set
|
||||||
|
# CONFIG_SERIAL_TERMIOS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# TMS570 Configuration Options
|
# TMS570 Configuration Options
|
||||||
#
|
#
|
||||||
|
# CONFIG_TMS570_HAVE_SCI2 is not set
|
||||||
# CONFIG_ARCH_CHIP_TMS570LS0232PZ is not set
|
# CONFIG_ARCH_CHIP_TMS570LS0232PZ is not set
|
||||||
# CONFIG_ARCH_CHIP_TMS570LS0332PZ is not set
|
# CONFIG_ARCH_CHIP_TMS570LS0332PZ is not set
|
||||||
CONFIG_ARCH_CHIP_TMS570LS0432PZ=y
|
CONFIG_ARCH_CHIP_TMS570LS0432PZ=y
|
||||||
@ -159,6 +163,8 @@ CONFIG_ARCH_CHIP_TMS570LS0432PZ=y
|
|||||||
# CONFIG_TMS570_N2HET is not set
|
# CONFIG_TMS570_N2HET is not set
|
||||||
# CONFIG_TMS570_MIBASPI1 is not set
|
# CONFIG_TMS570_MIBASPI1 is not set
|
||||||
CONFIG_TMS570_SCI1=y
|
CONFIG_TMS570_SCI1=y
|
||||||
|
CONFIG_TMS570_GIO_IRQ=y
|
||||||
|
# CONFIG_TMS570_SELFTEST is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Architecture Options
|
# Architecture Options
|
||||||
@ -166,7 +172,7 @@ CONFIG_TMS570_SCI1=y
|
|||||||
# CONFIG_ARCH_NOINTC is not set
|
# CONFIG_ARCH_NOINTC is not set
|
||||||
# CONFIG_ARCH_VECNOTIRQ is not set
|
# CONFIG_ARCH_VECNOTIRQ is not set
|
||||||
# CONFIG_ARCH_DMA is not set
|
# CONFIG_ARCH_DMA is not set
|
||||||
CONFIG_ARCH_HAVE_IRQPRIO=y
|
# CONFIG_ARCH_HAVE_IRQPRIO is not set
|
||||||
# CONFIG_ARCH_L2CACHE is not set
|
# CONFIG_ARCH_L2CACHE is not set
|
||||||
# CONFIG_ARCH_HAVE_COHERENT_DCACHE is not set
|
# CONFIG_ARCH_HAVE_COHERENT_DCACHE is not set
|
||||||
# CONFIG_ARCH_HAVE_ADDRENV is not set
|
# CONFIG_ARCH_HAVE_ADDRENV is not set
|
||||||
@ -179,9 +185,8 @@ CONFIG_ARCH_HAVE_MPU=y
|
|||||||
# CONFIG_ARCH_HAVE_POWEROFF is not set
|
# CONFIG_ARCH_HAVE_POWEROFF is not set
|
||||||
# CONFIG_ARCH_HAVE_RESET is not set
|
# CONFIG_ARCH_HAVE_RESET is not set
|
||||||
# CONFIG_ARCH_USE_MPU is not set
|
# CONFIG_ARCH_USE_MPU is not set
|
||||||
# CONFIG_ARCH_IRQPRIO is not set
|
|
||||||
CONFIG_ARCH_STACKDUMP=y
|
CONFIG_ARCH_STACKDUMP=y
|
||||||
# CONFIG_ENDIAN_BIG is not set
|
CONFIG_ENDIAN_BIG=y
|
||||||
# CONFIG_ARCH_IDLE_CUSTOM is not set
|
# CONFIG_ARCH_IDLE_CUSTOM is not set
|
||||||
CONFIG_ARCH_HAVE_RAMFUNCS=y
|
CONFIG_ARCH_HAVE_RAMFUNCS=y
|
||||||
# CONFIG_ARCH_RAMFUNCS is not set
|
# CONFIG_ARCH_RAMFUNCS is not set
|
||||||
@ -190,7 +195,7 @@ CONFIG_ARCH_HAVE_RAMFUNCS=y
|
|||||||
#
|
#
|
||||||
# Board Settings
|
# Board Settings
|
||||||
#
|
#
|
||||||
CONFIG_BOARD_LOOPSPERMSEC=51262
|
CONFIG_BOARD_LOOPSPERMSEC=5000
|
||||||
# CONFIG_ARCH_CALIBRATION is not set
|
# CONFIG_ARCH_CALIBRATION is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -226,6 +231,12 @@ CONFIG_ARCH_BOARD="launchxl-tms57004"
|
|||||||
#
|
#
|
||||||
# Common Board Options
|
# Common Board Options
|
||||||
#
|
#
|
||||||
|
CONFIG_ARCH_HAVE_LEDS=y
|
||||||
|
CONFIG_ARCH_LEDS=y
|
||||||
|
CONFIG_ARCH_HAVE_BUTTONS=y
|
||||||
|
CONFIG_ARCH_BUTTONS=y
|
||||||
|
CONFIG_ARCH_HAVE_IRQBUTTONS=y
|
||||||
|
CONFIG_ARCH_IRQBUTTONS=y
|
||||||
CONFIG_NSH_MMCSDMINOR=0
|
CONFIG_NSH_MMCSDMINOR=0
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -397,6 +408,7 @@ CONFIG_SPI_EXCHANGE=y
|
|||||||
#
|
#
|
||||||
# LED Support
|
# LED Support
|
||||||
#
|
#
|
||||||
|
# CONFIG_USERLED is not set
|
||||||
# CONFIG_PCA9635PW is not set
|
# CONFIG_PCA9635PW is not set
|
||||||
# CONFIG_MMCSD is not set
|
# CONFIG_MMCSD is not set
|
||||||
# CONFIG_MTD is not set
|
# CONFIG_MTD is not set
|
||||||
@ -440,7 +452,7 @@ CONFIG_STANDARD_SERIAL=y
|
|||||||
# CONFIG_SERIAL_IFLOWCONTROL is not set
|
# CONFIG_SERIAL_IFLOWCONTROL is not set
|
||||||
# CONFIG_SERIAL_OFLOWCONTROL is not set
|
# CONFIG_SERIAL_OFLOWCONTROL is not set
|
||||||
# CONFIG_SERIAL_DMA is not set
|
# CONFIG_SERIAL_DMA is not set
|
||||||
# CONFIG_ARCH_HAVE_SERIAL_TERMIOS is not set
|
CONFIG_ARCH_HAVE_SERIAL_TERMIOS=y
|
||||||
CONFIG_SCI1_SERIAL_CONSOLE=y
|
CONFIG_SCI1_SERIAL_CONSOLE=y
|
||||||
# CONFIG_OTHER_SERIAL_CONSOLE is not set
|
# CONFIG_OTHER_SERIAL_CONSOLE is not set
|
||||||
# CONFIG_NO_SERIAL_CONSOLE is not set
|
# CONFIG_NO_SERIAL_CONSOLE is not set
|
||||||
@ -450,10 +462,10 @@ CONFIG_SCI1_SERIAL_CONSOLE=y
|
|||||||
#
|
#
|
||||||
CONFIG_SCI1_RXBUFSIZE=256
|
CONFIG_SCI1_RXBUFSIZE=256
|
||||||
CONFIG_SCI1_TXBUFSIZE=256
|
CONFIG_SCI1_TXBUFSIZE=256
|
||||||
CONFIG_SCI1_BAUD=115200
|
CONFIG_SCI1_BAUD=9600
|
||||||
CONFIG_SCI1_BITS=8
|
CONFIG_SCI1_BITS=8
|
||||||
CONFIG_SCI1_PARITY=0
|
CONFIG_SCI1_PARITY=0
|
||||||
CONFIG_SCI1_2STOP=0
|
CONFIG_SCI1_2STOP=1
|
||||||
# CONFIG_USBDEV is not set
|
# CONFIG_USBDEV is not set
|
||||||
# CONFIG_USBHOST is not set
|
# CONFIG_USBHOST is not set
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
@ -617,6 +629,7 @@ CONFIG_BUILTIN_PROXY_STACKSIZE=1024
|
|||||||
#
|
#
|
||||||
# Examples
|
# Examples
|
||||||
#
|
#
|
||||||
|
# CONFIG_EXAMPLES_BUTTONS is not set
|
||||||
# CONFIG_EXAMPLES_CONFIGDATA is not set
|
# CONFIG_EXAMPLES_CONFIGDATA is not set
|
||||||
# CONFIG_EXAMPLES_CPUHOG is not set
|
# CONFIG_EXAMPLES_CPUHOG is not set
|
||||||
# CONFIG_EXAMPLES_DHCPD is not set
|
# CONFIG_EXAMPLES_DHCPD is not set
|
||||||
|
@ -61,7 +61,7 @@ fi
|
|||||||
|
|
||||||
# This is the location where I installed the ARM "GNU Tools for ARM Embedded Processors"
|
# This is the location where I installed the ARM "GNU Tools for ARM Embedded Processors"
|
||||||
# You can this free toolchain here https://launchpad.net/gcc-arm-embedded
|
# You can this free toolchain here https://launchpad.net/gcc-arm-embedded
|
||||||
export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/GNU Tools ARM Embedded/4.9 2015q2/bin"
|
# export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/GNU Tools ARM Embedded/4.9 2015q2/bin"
|
||||||
|
|
||||||
# This is the path to the location where I installed the devkitARM toolchain
|
# This is the path to the location where I installed the devkitARM toolchain
|
||||||
# You can get this free toolchain from http://devkitpro.org/ or http://sourceforge.net/projects/devkitpro/
|
# You can get this free toolchain from http://devkitpro.org/ or http://sourceforge.net/projects/devkitpro/
|
||||||
@ -69,7 +69,7 @@ export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/GNU Tools ARM Embedded/4.9
|
|||||||
|
|
||||||
# This is the Cygwin path to the location where I build the buildroot
|
# This is the Cygwin path to the location where I build the buildroot
|
||||||
# toolchain.
|
# toolchain.
|
||||||
# export TOOLCHAIN_BIN="${WD}/../buildroot/build_arm_nofpu/staging_dir/bin"
|
export TOOLCHAIN_BIN="${WD}/../buildroot/build_armeb/staging_dir/bin"
|
||||||
|
|
||||||
# Add the path to the toolchain to the PATH varialble
|
# Add the path to the toolchain to the PATH varialble
|
||||||
export PATH="${TOOLCHAIN_BIN}:/sbin:/usr/sbin:${PATH_ORIG}"
|
export PATH="${TOOLCHAIN_BIN}:/sbin:/usr/sbin:${PATH_ORIG}"
|
||||||
|
@ -44,6 +44,7 @@ MEMORY
|
|||||||
}
|
}
|
||||||
|
|
||||||
OUTPUT_ARCH(arm)
|
OUTPUT_ARCH(arm)
|
||||||
|
OUTPUT_FORMAT(elf32-bigarm)
|
||||||
EXTERN(_vectors)
|
EXTERN(_vectors)
|
||||||
ENTRY(_stext)
|
ENTRY(_stext)
|
||||||
|
|
||||||
|
@ -42,5 +42,14 @@ ifeq ($(CONFIG_LIB_BOARDCTL),y)
|
|||||||
CSRCS += tms570_appinit.c
|
CSRCS += tms570_appinit.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_ARCH_LEDS),y)
|
||||||
|
CSRCS += tms570_autoleds.c
|
||||||
|
else
|
||||||
|
CSRCS += tms570_userleds.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_ARCH_BUTTONS),y)
|
||||||
|
CSRCS += tms570_buttons.c
|
||||||
|
endif
|
||||||
|
|
||||||
include $(TOPDIR)/configs/Board.mk
|
include $(TOPDIR)/configs/Board.mk
|
||||||
|
@ -46,6 +46,42 @@
|
|||||||
* Pre-processor Definitions
|
* Pre-processor Definitions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
/* LEDs
|
||||||
|
*
|
||||||
|
* The launchpad has several LEDs:
|
||||||
|
*
|
||||||
|
* - LEd D1 (white) that connects to the USB +5V supply,
|
||||||
|
* - LED D10 (red) that connects to the TMS570's NERROR pin,
|
||||||
|
* - D5 (blue), D6 (blue), and D8 (blue) connect to the XDS100 FT2322,
|
||||||
|
* - D7 (blue) connects to the XSD100 CPLD, and
|
||||||
|
* - Two white, user LEDs labeled D12 that connects to the NHET08
|
||||||
|
* pin and D11 that connects to GIOA2.
|
||||||
|
*
|
||||||
|
* NHET08 is one of 32 N2HET pins than can be available to the user if not
|
||||||
|
* used by N2HET. This implementation, however, uses only the single LED
|
||||||
|
* driven by GIOA2. That LED is tied to ground and illuminated with a high
|
||||||
|
* level output value.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define GIO_LED_D11 (GIO_OUTPUT | GIO_CFG_DEFAULT | GIO_OUTPUT_SET | \
|
||||||
|
GIO_PORT_GIOA | GIO_PIN2)
|
||||||
|
|
||||||
|
/* Buttons
|
||||||
|
*
|
||||||
|
* The launchpad has three mechanical buttons. Two of these are reset
|
||||||
|
* buttons: One button is labeled PORRST performs a power-on reset and one
|
||||||
|
* labeled RST performs an MCU reset. Only one button is available for
|
||||||
|
* general software usage. That button is labeled GIOA7 and is, obviously,
|
||||||
|
* sensed on GIOA7.
|
||||||
|
*
|
||||||
|
* GIOA7 is tied to ground, but will be pulled high if the GIOA7 button is
|
||||||
|
* depressed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define GIO_BUTTON (GIO_INPUT | GIO_CFG_PULLUP | GIO_INT_BOTHEDGES | \
|
||||||
|
GIO_PORT_GIOA | GIO_PIN7)
|
||||||
|
#define IRQ_BUTTON TMS570_IRQ_GIOA7
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Function Prototypes
|
* Public Function Prototypes
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
143
configs/launchxl-tms57004/src/tms570_autoleds.c
Normal file
143
configs/launchxl-tms57004/src/tms570_autoleds.c
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* configs/launchxl-tms57004/include/tms570_autoleds.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 2015 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.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/* LEDs
|
||||||
|
*
|
||||||
|
* The launchpad has several LEDs:
|
||||||
|
*
|
||||||
|
* - LEd D1 (white) that connects to the USB +5V supply,
|
||||||
|
* - LED D10 (red) that connects to the TMS570's NERROR pin,
|
||||||
|
* - D5 (blue), D6 (blue), and D8 (blue) connect to the XDS100 FT2322,
|
||||||
|
* - D7 (blue) connects to the XSD100 CPLD, and
|
||||||
|
* - Two white, user LEDs labeled D12 that connects to the NHET08
|
||||||
|
* pin and D11 that connects to GIOA2.
|
||||||
|
*
|
||||||
|
* NHET08 is one of 32 N2HET pins than can be available to the user if
|
||||||
|
* not used by N2HET. This implementation, however, uses only the single
|
||||||
|
* LED driven by GIOA2. That LED is tied to ground and illuminated
|
||||||
|
* with a high level output value.
|
||||||
|
*
|
||||||
|
* This LED is not used by the board port unless CONFIG_ARCH_LEDS is
|
||||||
|
* defined. In that case, the usage by the board port is defined in
|
||||||
|
* include/board.h and src/tms570_autoleds.c. The LED is used to encode
|
||||||
|
* OS-related events as follows:
|
||||||
|
*
|
||||||
|
* ------------------- ----------------------- ------
|
||||||
|
* SYMBOL Meaning LED
|
||||||
|
* ------------------- ----------------------- ------
|
||||||
|
* LED_STARTED NuttX has been started OFF
|
||||||
|
* LED_HEAPALLOCATE Heap has been allocated OFF
|
||||||
|
* LED_IRQSENABLED Interrupts enabled OFF
|
||||||
|
* LED_STACKCREATED Idle stack created ON
|
||||||
|
* LED_INIRQ In an interrupt N/C
|
||||||
|
* LED_SIGNAL In a signal handler N/C
|
||||||
|
* LED_ASSERTION An assertion failed N/C
|
||||||
|
* LED_PANIC The system has crashed FLASH
|
||||||
|
*
|
||||||
|
* Thus if the LED is statically on, NuttX has successfully booted and is,
|
||||||
|
* apparently, running normally. If the LED is flashing at approximately
|
||||||
|
* 2Hz, then a fatal error has been detected and the system has halted.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Included Files
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
#include <nuttx/board.h>
|
||||||
|
#include <arch/board/board.h>
|
||||||
|
|
||||||
|
#include "tms570_gio.h"
|
||||||
|
#include "launchxl-tms57004.h"
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_LEDS
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Pre-processor Definitions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/* CONFIG_DEBUG_LEDS enables debug output from this file (needs CONFIG_DEBUG
|
||||||
|
* with CONFIG_DEBUG_VERBOSE too)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef CONFIG_DEBUG_LEDS
|
||||||
|
# define leddbg lldbg
|
||||||
|
# define ledvdbg llvdbg
|
||||||
|
#else
|
||||||
|
# define leddbg(x...)
|
||||||
|
# define ledvdbg(x...)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: board_autoled_initialize
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
void board_autoled_initialize(void)
|
||||||
|
{
|
||||||
|
/* Configure LED GIOs for output */
|
||||||
|
|
||||||
|
tms570_configgio(GIO_LED_D11);
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: board_autoled_on
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
void board_autoled_on(int led)
|
||||||
|
{
|
||||||
|
if (led == 1 || led == 3)
|
||||||
|
{
|
||||||
|
tms570_giowrite(GIO_LED_D11, true); /* High illuminates */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: board_autoled_off
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
void board_autoled_off(int led)
|
||||||
|
{
|
||||||
|
if (led == 3)
|
||||||
|
{
|
||||||
|
tms570_giowrite(GIO_LED_D11, false); /* Low extinguishes */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* CONFIG_ARCH_LEDS */
|
@ -52,7 +52,7 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: sam_bringup
|
* Name: tms570_bringup
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Bring up simulated board features
|
* Bring up simulated board features
|
||||||
|
199
configs/launchxl-tms57004/src/tms570_buttons.c
Normal file
199
configs/launchxl-tms57004/src/tms570_buttons.c
Normal file
@ -0,0 +1,199 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* configs/sam4e-ek/src/tms570_buttons.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 2015 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 <nuttx/arch.h>
|
||||||
|
#include <nuttx/board.h>
|
||||||
|
#include <nuttx/irq.h>
|
||||||
|
|
||||||
|
#include <arch/irq.h>
|
||||||
|
#include <arch/board/board.h>
|
||||||
|
|
||||||
|
#include "up_arch.h"
|
||||||
|
#include "tms570_gio.h"
|
||||||
|
#include "launchxl-tms57004.h"
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_BUTTONS
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Pre-processor Definitions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#undef HAVE_IRQBUTTONS
|
||||||
|
#if defined(CONFIG_ARCH_IRQBUTTONS) && defined(CONFIG_TMS570_GIO_IRQ)
|
||||||
|
# define HAVE_IRQBUTTONS 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Private Data
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifdef HAVE_IRQBUTTONS
|
||||||
|
static xcpt_t g_irq_button;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Private Functions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: board_button_irqx
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* This function implements the core of the board_button_irq() logic.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifdef HAVE_IRQBUTTONS
|
||||||
|
static xcpt_t board_button_irqx(gio_pinset_t pinset, int irq,
|
||||||
|
xcpt_t irqhandler, xcpt_t *store)
|
||||||
|
{
|
||||||
|
xcpt_t oldhandler;
|
||||||
|
irqstate_t flags;
|
||||||
|
|
||||||
|
/* Disable interrupts until we are done. This guarantees that the following
|
||||||
|
* operations are atomic.
|
||||||
|
*/
|
||||||
|
|
||||||
|
flags = irqsave();
|
||||||
|
|
||||||
|
/* Get the old button interrupt handler and save the new one */
|
||||||
|
|
||||||
|
oldhandler = *store;
|
||||||
|
*store = irqhandler;
|
||||||
|
|
||||||
|
/* Are we attaching or detaching? */
|
||||||
|
|
||||||
|
if (irqhandler != NULL)
|
||||||
|
{
|
||||||
|
/* Configure the interrupt */
|
||||||
|
|
||||||
|
tms570_gioirq(pinset);
|
||||||
|
(void)irq_attach(irq, irqhandler);
|
||||||
|
tms570_gioirqenable(irq);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Detach and disable the interrupt */
|
||||||
|
|
||||||
|
(void)irq_detach(irq);
|
||||||
|
tms570_gioirqdisable(irq);
|
||||||
|
}
|
||||||
|
|
||||||
|
irqrestore(flags);
|
||||||
|
|
||||||
|
/* Return the old button handler (so that it can be restored) */
|
||||||
|
|
||||||
|
return oldhandler;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Public Functions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: board_button_initialize
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* board_button_initialize() must be called to initialize button resources.
|
||||||
|
* After that, board_buttons() may be called to collect the current state
|
||||||
|
* of all buttons or board_button_irq() may be called to register button
|
||||||
|
* interrupt handlers.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
void board_button_initialize(void)
|
||||||
|
{
|
||||||
|
/* Configure button GIOs */
|
||||||
|
|
||||||
|
(void)tms570_configgio(GIO_BUTTON);
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: board_buttons
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* After board_button_initialize() has been called, board_buttons() may be
|
||||||
|
* called to collect the state of all buttons. board_buttons() returns an
|
||||||
|
* 8-bit bit set with each bit associated with a button. See the BUTTON*
|
||||||
|
* definitions above for the meaning of each bit in the returned value.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
uint8_t board_buttons(void)
|
||||||
|
{
|
||||||
|
return tms570_gioread(GIO_BUTTON) ? BUTTON_GIOA7_BIT : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: board_button_irq
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* This function may be called to register an interrupt handler that will
|
||||||
|
* be called when a button is depressed or released. The ID value is one
|
||||||
|
* of the BUTTON* definitions provided above. The previous interrupt
|
||||||
|
* handler address is returned (so that it may restored, if so desired).
|
||||||
|
*
|
||||||
|
* Configuration Notes:
|
||||||
|
* Configuration CONFIG_AVR32_GIOIRQ must be selected to enable the
|
||||||
|
* overall GIO IRQ feature and CONFIG_AVR32_GIOIRQSETA and/or
|
||||||
|
* CONFIG_AVR32_GIOIRQSETB must be enabled to select GIOs to support
|
||||||
|
* interrupts on. For button support, bits 2 and 3 must be set in
|
||||||
|
* CONFIG_AVR32_GIOIRQSETB (PB2 and PB3).
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
xcpt_t board_button_irq(int id, xcpt_t irqhandler)
|
||||||
|
{
|
||||||
|
#ifdef HAVE_IRQBUTTONS
|
||||||
|
if (id == BUTTON_GIOA7)
|
||||||
|
{
|
||||||
|
return board_button_irqx(GIO_BUTTON, IRQ_BUTTON, irqhandler, &g_irq_button);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* CONFIG_ARCH_BUTTONS */
|
104
configs/launchxl-tms57004/src/tms570_userleds.c
Normal file
104
configs/launchxl-tms57004/src/tms570_userleds.c
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* configs/launchxl-tms57004/src/tms570_userleds.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 2015 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.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/* LEDs
|
||||||
|
*
|
||||||
|
* The launchpad has several LEDs:
|
||||||
|
*
|
||||||
|
* - LEd D1 (white) that connects to the USB +5V supply,
|
||||||
|
* - LED D10 (red) that connects to the TMS570's NERROR pin,
|
||||||
|
* - D5 (blue), D6 (blue), and D8 (blue) connect to the XDS100 FT2322,
|
||||||
|
* - D7 (blue) connects to the XSD100 CPLD, and
|
||||||
|
* - Two white, user LEDs labeled D12 that connects to the NHET08
|
||||||
|
* pin and D11 that connects to GIOA2.
|
||||||
|
*
|
||||||
|
* NHET08 is one of 32 N2HET pins than can be available to the user if
|
||||||
|
* not used by N2HET. This implementation, however, uses only the single
|
||||||
|
* LED driven by GIOA2. That LED is tied to ground and illuminated
|
||||||
|
* with a high level output value.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Included Files
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
#include <arch/board/board.h>
|
||||||
|
|
||||||
|
#include "tms570_gio.h"
|
||||||
|
#include "launchxl-tms57004.h"
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Public Functions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: board_userled_initialize
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
void board_userled_initialize(void)
|
||||||
|
{
|
||||||
|
/* Configure LED PIOs for output */
|
||||||
|
|
||||||
|
tms570_configgio(GIO_LED_D11);
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: board_userled
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
void board_userled(int led, bool ledon)
|
||||||
|
{
|
||||||
|
if (led == BOARD_LED_D11)
|
||||||
|
{
|
||||||
|
tms570_giowrite(GIO_LED_D11, !ledon); /* Low illuminates */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: board_userled_all
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
void board_userled_all(uint8_t ledset)
|
||||||
|
{
|
||||||
|
/* Low illuminates */
|
||||||
|
|
||||||
|
tms570_giowrite(GIO_LED_D11, (ledset & BOARD_LED_D11_BIT) == 0));
|
||||||
|
}
|
@ -255,9 +255,9 @@ LEDs
|
|||||||
----
|
----
|
||||||
A single LED is available driven by PC8.
|
A single LED is available driven by PC8.
|
||||||
|
|
||||||
These LEDs are not used by the board port unless CONFIG_ARCH_LEDS is
|
This LED is not used by the board port unless CONFIG_ARCH_LEDS is
|
||||||
defined. In that case, the usage by the board port is defined in
|
defined. In that case, the usage by the board port is defined in
|
||||||
include/board.h and src/sam_autoleds.c. The LEDs are used to encode
|
include/board.h and src/sam_autoleds.c. The LED is used to encode
|
||||||
OS-related events as follows:
|
OS-related events as follows:
|
||||||
|
|
||||||
------------------- ----------------------- ------
|
------------------- ----------------------- ------
|
||||||
@ -272,8 +272,8 @@ OS-related events as follows:
|
|||||||
LED_ASSERTION An assertion failed N/C
|
LED_ASSERTION An assertion failed N/C
|
||||||
LED_PANIC The system has crashed FLASH
|
LED_PANIC The system has crashed FLASH
|
||||||
|
|
||||||
Thus is LED is statically on, NuttX has successfully booted and is,
|
Thus if the LED is statically on, NuttX has successfully booted and is,
|
||||||
apparently, running normally. If LED is flashing at approximately
|
apparently, running normally. If the LED is flashing at approximately
|
||||||
2Hz, then a fatal error has been detected and the system has halted.
|
2Hz, then a fatal error has been detected and the system has halted.
|
||||||
|
|
||||||
Buttons
|
Buttons
|
||||||
|
Loading…
x
Reference in New Issue
Block a user