boards/arm/tiva: Add tm4c129e-launchpad
* boards/arm/tiva/tm4c129e-launchpad: New subdirectory providing board support for the Texas Instruments TM4C Crypto Connected LaunchPad, or more correctly the EK-TM4C129EXL. * Documentation/introduction/detailed_support.rst, Documentation/introduction/supported_platforms.rst, boards/README.txt: Document the additional board support. * boards/Kconfig: (ARCH_BOARD_TM4C129E_LAUNCHPAD): New config. (ARCH_BOARD): Add tm4c129e-launchpad. (Board-Specific Options): Source the board-specific Kconfig boards/arm/tiva/tm4c129e-launchpad/Kconfig when selected.
This commit is contained in:
parent
22a5cc0973
commit
b04ae46ea6
25 changed files with 2491 additions and 0 deletions
|
@ -2197,6 +2197,24 @@ Refer to the EK-TM4C1294XL board
|
|||
`README <https://github.com/apache/incubator-nuttx/blob/master/boards/arm/tiva/tm4c1294-launchpad/README.txt>`__
|
||||
file for more detailed information about this port.
|
||||
|
||||
TI/Tiva TM4C129E
|
||||
----------------
|
||||
|
||||
This port uses the TI Tiva C Series TM4C129E Crypto Connected
|
||||
LaunchPad `(EK-TM4C129EXL) <https://www.ti.com/tool/EK-TM4C129EXL>`__.
|
||||
|
||||
**STATUS:**
|
||||
|
||||
- Support for the EK-TM4C129EXL is based on support for the similar
|
||||
EK-TM4C1294XL. This basic board support includes a configuration
|
||||
for the NuttShell :ref:`NSH <nsh>`), a configuration for testing
|
||||
IPv6, and a configuration for testing the RTOS using the ostest
|
||||
example in the NuttX apps repository.
|
||||
|
||||
Refer to the EK-TM4C129EXL board
|
||||
`README <https://github.com/apache/incubator-nuttx/blob/master/boards/arm/tiva/tm4c129e-launchpad/README.txt>`__
|
||||
file for more detailed information about this port.
|
||||
|
||||
TI/Tiva TM4C129X
|
||||
----------------
|
||||
|
||||
|
|
|
@ -268,6 +268,7 @@ MCU. Follow the links for the details:
|
|||
- :ref:`introduction/detailed_support:TI/Stellaris LM4F120x` (ARM Cortex-M4)
|
||||
- :ref:`introduction/detailed_support:TI/Tiva TM4C123G` (ARM Cortex-M4)
|
||||
- :ref:`introduction/detailed_support:TI/Tiva TM4C1294` (ARM Cortex-M4)
|
||||
- :ref:`introduction/detailed_support:TI/Tiva TM4C129E` (ARM Cortex-M4)
|
||||
- :ref:`introduction/detailed_support:TI/Tiva TM4C129X` (ARM Cortex-M4)
|
||||
- :ref:`introduction/detailed_support:TI/SimpleLink CC13x2` (ARM Cortex-M4)
|
||||
- :ref:`introduction/detailed_support:TI/Hercules TMS570LS04xx` (ARM Cortex-R4)
|
||||
|
|
|
@ -2316,6 +2316,16 @@ config ARCH_BOARD_TM4C1294_LAUNCHPAD
|
|||
---help---
|
||||
Tiva EK-TM4C1294XL LaunchPad.
|
||||
|
||||
config ARCH_BOARD_TM4C129E_LAUNCHPAD
|
||||
bool "Tiva EK-TM4C129EXL Crypto Connected LaunchPad"
|
||||
depends on ARCH_CHIP_TM4C129ENCPDT
|
||||
select ARCH_HAVE_LEDS
|
||||
select ARCH_HAVE_BUTTONS
|
||||
select ARCH_HAVE_IRQBUTTONS
|
||||
---help---
|
||||
Tiva EK-TM4C129EXL Crypto Connected LaunchPad featuring the
|
||||
TM4C129ENCPDT chip.
|
||||
|
||||
config ARCH_BOARD_TMS570LS31X_USB_KIT
|
||||
bool "TI TMS570LS31X_USB_KIT"
|
||||
depends on ARCH_CHIP_TMS570LS3137ZWT
|
||||
|
@ -2808,6 +2818,7 @@ config ARCH_BOARD
|
|||
default "teensy-lc" if ARCH_BOARD_TEENSY_LC
|
||||
default "tm4c123g-launchpad" if ARCH_BOARD_TM4C123G_LAUNCHPAD
|
||||
default "tm4c1294-launchpad" if ARCH_BOARD_TM4C1294_LAUNCHPAD
|
||||
default "tm4c129e-launchpad" if ARCH_BOARD_TM4C129E_LAUNCHPAD
|
||||
default "tms570ls31x-usb-kit" if ARCH_BOARD_TMS570LS31X_USB_KIT
|
||||
default "ttgo_lora_esp32" if ARCH_BOARD_TTGO_LORA_ESP32
|
||||
default "ttgo_t_display_esp32" if ARCH_BOARD_TTGO_T_DISPLAY_ESP32
|
||||
|
@ -3440,6 +3451,9 @@ endif
|
|||
if ARCH_BOARD_TM4C1294_LAUNCHPAD
|
||||
source "boards/arm/tiva/tm4c1294-launchpad/Kconfig"
|
||||
endif
|
||||
if ARCH_BOARD_TM4C129E_LAUNCHPAD
|
||||
source "boards/arm/tiva/tm4c129e-launchpad/Kconfig"
|
||||
endif
|
||||
if ARCH_BOARD_LAUNCHXL_TMS57004
|
||||
source "boards/arm/tms570/launchxl-tms57004/Kconfig"
|
||||
endif
|
||||
|
|
|
@ -860,6 +860,11 @@ boards/arm/tiva/tm4c1294-launchpad
|
|||
platform for ARM Cortex-M4F-based microcontrollers from Texas
|
||||
Instruments.
|
||||
|
||||
boards/arm/tiva/tm4c129e-launchpad
|
||||
This is a port of NuttX to the Tiva TM4C129E Crypto Connected LaunchPad. This
|
||||
board is a low-cost evaluation platform for ARM Cortex-M4F-based
|
||||
microcontrollers from Texas Instruments.
|
||||
|
||||
boards/arm/tmx570/tms570ls31x-usb-kit
|
||||
TI Hercules TMS570LS31xx Evaluation Kit (TMDS570ls31xx USB Kit)
|
||||
featuring the Hercules TMS570LS3137ZWT chip.
|
||||
|
|
75
boards/arm/tiva/tm4c129e-launchpad/Kconfig
Normal file
75
boards/arm/tiva/tm4c129e-launchpad/Kconfig
Normal file
|
@ -0,0 +1,75 @@
|
|||
#
|
||||
# For a description of the syntax of this configuration file,
|
||||
# see the file kconfig-language.txt in the NuttX tools repository.
|
||||
#
|
||||
|
||||
if ARCH_BOARD_TM4C129E_LAUNCHPAD
|
||||
if TIMER && TIVA_TIMER32_PERIODIC
|
||||
|
||||
config TM4C129E_LAUNCHPAD_TIMER
|
||||
bool
|
||||
default n
|
||||
|
||||
choice
|
||||
prompt "Timer driver selection"
|
||||
default TM4C129E_LAUNCHPAD_TIMER_NONE
|
||||
|
||||
config TM4C129E_LAUNCHPAD_TIMER_NONE
|
||||
bool "None"
|
||||
|
||||
config TM4C129E_LAUNCHPAD_TIMER0
|
||||
bool "Timer 0"
|
||||
depends on TIVA_TIMER0
|
||||
select TM4C129E_LAUNCHPAD_TIMER
|
||||
|
||||
config TM4C129E_LAUNCHPAD_TIMER1
|
||||
bool "Timer 1"
|
||||
depends on TIVA_TIMER1
|
||||
select TM4C129E_LAUNCHPAD_TIMER
|
||||
|
||||
config TM4C129E_LAUNCHPAD_TIMER2
|
||||
bool "Timer 2"
|
||||
depends on TIVA_TIMER2
|
||||
select TM4C129E_LAUNCHPAD_TIMER
|
||||
|
||||
config TM4C129E_LAUNCHPAD_TIMER3
|
||||
bool "Timer 3"
|
||||
depends on TIVA_TIMER3
|
||||
select TM4C129E_LAUNCHPAD_TIMER
|
||||
|
||||
config TM4C129E_LAUNCHPAD_TIMER4
|
||||
bool "Timer 4"
|
||||
depends on TIVA_TIMER4
|
||||
select TM4C129E_LAUNCHPAD_TIMER
|
||||
|
||||
config TM4C129E_LAUNCHPAD_TIMER5
|
||||
bool "Timer 5"
|
||||
depends on TIVA_TIMER5
|
||||
select TM4C129E_LAUNCHPAD_TIMER
|
||||
|
||||
config TM4C129E_LAUNCHPAD_TIMER6
|
||||
bool "Timer 6"
|
||||
depends on TIVA_TIMER6
|
||||
select TM4C129E_LAUNCHPAD_TIMER
|
||||
|
||||
config TM4C129E_LAUNCHPAD_TIMER7
|
||||
bool "Timer 7"
|
||||
depends on TIVA_TIMER7
|
||||
select TM4C129E_LAUNCHPAD_TIMER
|
||||
|
||||
endchoice # Timer driver selection
|
||||
|
||||
if TM4C129E_LAUNCHPAD_TIMER
|
||||
|
||||
config TM4C129E_LAUNCHPAD_TIMER_DEVNAME
|
||||
string "Timer device name"
|
||||
default "/dev/timer0"
|
||||
|
||||
config TM4C129E_LAUNCHPAD_TIMER_ALTCLK
|
||||
bool "Use alternate clock source"
|
||||
default n
|
||||
depends on EXPERIMENTAL
|
||||
|
||||
endif # TM4C129E_LAUNCHPAD_TIMER
|
||||
endif # TIVA_TIMER32_PERIODIC
|
||||
endif # ARCH_BOARD_TM4C129E_LAUNCHPAD
|
226
boards/arm/tiva/tm4c129e-launchpad/README.txt
Normal file
226
boards/arm/tiva/tm4c129e-launchpad/README.txt
Normal file
|
@ -0,0 +1,226 @@
|
|||
README
|
||||
======
|
||||
|
||||
This is the README file for a port of NuttX to the TM4C129E Crypto Connected
|
||||
LaunchPad (more correctly, the EK-TM4C129EXL). For more information about this
|
||||
board, see https://www.ti.com/tool/EK-TM4C129EXL.
|
||||
|
||||
EK-TM4C1294XL and DK-TM4C129X
|
||||
=============================
|
||||
|
||||
This board configuration derives from the EK-TM4C1294XL, which in turn derives
|
||||
from the DK-T4C129X. Refer to the following README files for additional
|
||||
information that may be relevant to this board as well:
|
||||
|
||||
boards/arm/tiva/tm4c1294-launchpad/README.txt
|
||||
boards/arm/tiva/dk-tm4c129x/README.txt
|
||||
|
||||
Directory Structure
|
||||
===================
|
||||
|
||||
Layout for board support package directories:
|
||||
$TOPDIR/boards/ - Directory containing BSP subdirectories
|
||||
arch - CPU architecture (e.g., arm)
|
||||
chip - Chip type (e.g., tiva)
|
||||
|
||||
Within chip subdirectory:
|
||||
<board> - Subdirectory for each board (e.g., LaunchPad129)
|
||||
drivers - Board-specific drivers
|
||||
include - Board-specific headers
|
||||
scripts - Board-specific build scripts (e.g., linker, Make.defs)
|
||||
src - Board-specific code
|
||||
tools - Board-specific tools or scripts (e.g., OpenOCD startup)
|
||||
configs/ - Subdirectory for one or more board configuration(s)
|
||||
<config_1..n> - Configuration for use with tools/configure.sh or .bat
|
||||
|
||||
Serial Console
|
||||
==============
|
||||
|
||||
These configurations use UART0 for the serial console. UART0 is connected to
|
||||
the on-board TM4C123G-based debugger and is forwarded through the ICDI virtual
|
||||
UART.
|
||||
|
||||
Buttons and LEDs
|
||||
================
|
||||
|
||||
Buttons
|
||||
-------
|
||||
|
||||
The board has two on-board pushbuttons accessible to software. These are
|
||||
connected to GPIO pins PJ0 and PJ1.
|
||||
|
||||
In addition, the board also has a Reset switch and a Wake switch. The Reset
|
||||
switch asserts the reset signal to the microcontroller, the Breadboard
|
||||
headers, and the BoosterPack headers and, therefore, any attached
|
||||
BoosterPack boards. The Wake switch is provided as one of the means to wake
|
||||
the microcontroller from hibernate mode.
|
||||
|
||||
LEDs
|
||||
----
|
||||
|
||||
The board has four LEDs which are accessible to software. LEDs D1 and D2 are
|
||||
connected to GPIOs PN1 and PN0 and are dedicated for software use. LEDs D3
|
||||
and D4 are connected to GPIOs PF4 and PF0 and can be controlled either by
|
||||
software or by the integrated Ethernet PHY of the TM4C129ENCPDT.
|
||||
|
||||
Configurations
|
||||
==============
|
||||
|
||||
Each EK-TM4C129EXL configuration is maintained in a sub-directory and can be
|
||||
selected as follow:
|
||||
|
||||
tools/configure.sh tm4c129e-launchpad:<subdir>
|
||||
|
||||
Where <subdir> is one of the following:
|
||||
|
||||
nsh:
|
||||
---
|
||||
Configures the NuttShell (nsh) located at apps/examples/nsh. The
|
||||
configuration enables the serial ICDI virtual UART on UART0. Support for
|
||||
builtin applications is enabled, but in the base configuration no builtin
|
||||
applications are selected.
|
||||
|
||||
NOTES:
|
||||
|
||||
1. This configuration uses the mconf-based configuration tool. To change
|
||||
this configuration 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. By default, this configuration uses the GNU ARM EABI toolchain
|
||||
(Linaro) such as the one delivered with TI's Code Composer
|
||||
Studio (CCS) and builds under Linux. (Cygwin / MSYS / MSYS2 under
|
||||
Windows might work as well.) These options can be reconfigured
|
||||
with 'make menuconfig' as described above.
|
||||
|
||||
CONFIG_HOST_LINUX=y : Linux (Cygwin under Windows okay too).
|
||||
CONFIG_ARCH_TOOLCHAIN_GNU=y : GNU toolchain (arm-none-eabi-gcc)
|
||||
CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL=y
|
||||
CONFIG_RAW_BINARY=y : Output formats: ELF and raw binary
|
||||
|
||||
3. Default stack sizes are large and should really be tuned to reduce the
|
||||
RAM footprint:
|
||||
|
||||
CONFIG_SCHED_HPWORKSTACKSIZE=2048
|
||||
CONFIG_IDLETHREAD_STACKSIZE=1024
|
||||
CONFIG_INIT_STACKSIZE=2048
|
||||
CONFIG_PTHREAD_STACK_DEFAULT=2048
|
||||
CONFIG_POSIX_SPAWN_PROXY_STACKSIZE=1024
|
||||
CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE=2048
|
||||
CONFIG_BUILTIN_PROXY_STACKSIZE=1024
|
||||
CONFIG_NSH_TELNETD_DAEMONSTACKSIZE=2048
|
||||
CONFIG_NSH_TELNETD_CLIENTSTACKSIZE=2048
|
||||
|
||||
4. This configuration has the network enabled by default. See the paragraph
|
||||
"Using the network with NSH" in the DK-TM4C129X README).
|
||||
|
||||
Networking can easily be disabled or reconfigured with 'make menuconfig'
|
||||
if desired.
|
||||
|
||||
By default:
|
||||
|
||||
This configuration assumes a DHCP network.
|
||||
|
||||
The network initialization thread is enabled. NSH will create
|
||||
a separate thread when it starts to initialize the network.
|
||||
This eliminates start-up delays to bring up the network.
|
||||
|
||||
The persistent network monitor thread is enabled. It monitors
|
||||
changes in link status, takes the network down when the link is
|
||||
lost (e.g., cable disconnected), abd brings the network back up
|
||||
when the link becomes available again (e.g., cable connected).
|
||||
|
||||
The Ethernet MAC address is factory-programmed into the non-volatile
|
||||
USER0 and USER1 registers. If CONFIG_TIVA_BOARDMAC is defined, the
|
||||
function tiva_ethernetmac() will obtain the MAC address from these
|
||||
registers and use it.
|
||||
|
||||
ipv6:
|
||||
----
|
||||
This is another version of the NuttShell configuration. It is very similar
|
||||
to the nsh configuration except that it has IPv6 enabled and IPv4 disabled.
|
||||
Several network utilities that are not yet available under IPv6 are
|
||||
disabled.
|
||||
|
||||
NOTES:
|
||||
|
||||
1. As of 2022-09-06, this configuration was identical to the nsh
|
||||
configuration other than using IPv6. So all of the notes above regarding
|
||||
the nsh configuration apply.
|
||||
|
||||
Telnet does work with IPv6 but is not enabled in this configuration (but
|
||||
could be).
|
||||
|
||||
2. This configuration can be modified so that both IPv4 and IPv6 are
|
||||
supported. Here is a summary of the additional configuration settings
|
||||
required to support both IPv4 and IPv6:
|
||||
|
||||
CONFIG_NET_IPv4=y
|
||||
CONFIG_NET_ARP=y
|
||||
CONFIG_NET_ARP_SEND=y (optional)
|
||||
CONFIG_NET_ICMP=y
|
||||
CONFIG_NET_ICMP_SOCKET=y
|
||||
|
||||
CONFIG_NETDB_DNSCLIENT=y
|
||||
CONFIG_NETUTILS_TELNETD=y
|
||||
|
||||
CONFIG_NSH_IPADDR=0x0a000002
|
||||
CONFIG_NSH_DRIPADDR=0x0a000001
|
||||
CONFIG_NSH_NETMASK=0xffffff00
|
||||
CONFIG_NSH_TELNET=y
|
||||
|
||||
Then from NSH, you have both ping and ping6 commands:
|
||||
|
||||
nsh> ping 10.0.0.1
|
||||
nsh> ping6 fc00::1
|
||||
|
||||
And from the host you can do similar:
|
||||
|
||||
ping 10.0.0.2
|
||||
ping6 fc00::2 (Linux)
|
||||
ping -6 fc00::2 (Windows cmd)
|
||||
|
||||
and Telnet is now enabled and works from the host... but only using IPv6
|
||||
addressing:
|
||||
|
||||
telnet fc00::2
|
||||
|
||||
That is because the Telnet daemon will default to IPv6 and there is no
|
||||
Telnet option to let you select which if both IPv4 and IPv6 are enabled.
|
||||
|
||||
3. You can enable IPv6 autonomous address configuration with the following
|
||||
changes to the configuration:
|
||||
|
||||
+ CONFIG_NET_ICMPv6_AUTOCONF=y
|
||||
+ CONFIG_ICMPv6_AUTOCONF_DELAYMSEC=100
|
||||
+ CONFIG_ICMPv6_AUTOCONF_MAXTRIES=5
|
||||
|
||||
- CONFIG_NSH_DRIPv6ADDR_1=0xfc00
|
||||
- CONFIG_NSH_DRIPv6ADDR_2=0x0000
|
||||
- CONFIG_NSH_DRIPv6ADDR_3=0x0000
|
||||
- CONFIG_NSH_DRIPv6ADDR_4=0x0000
|
||||
- CONFIG_NSH_DRIPv6ADDR_5=0x0000
|
||||
- CONFIG_NSH_DRIPv6ADDR_6=0x0000
|
||||
- CONFIG_NSH_DRIPv6ADDR_7=0x0000
|
||||
- CONFIG_NSH_DRIPv6ADDR_8=0x0001
|
||||
|
||||
- CONFIG_NSH_IPv6ADDR_1=0xfc00
|
||||
- CONFIG_NSH_IPv6ADDR_2=0x0000
|
||||
- CONFIG_NSH_IPv6ADDR_3=0x0000
|
||||
- CONFIG_NSH_IPv6ADDR_4=0x0000
|
||||
- CONFIG_NSH_IPv6ADDR_5=0x0000
|
||||
- CONFIG_NSH_IPv6ADDR_6=0x0000
|
||||
- CONFIG_NSH_IPv6ADDR_7=0x0000
|
||||
- CONFIG_NSH_IPv6ADDR_8=0x0002
|
||||
- CONFIG_NSH_IPv6NETMASK_1=0xffff
|
||||
- CONFIG_NSH_IPv6NETMASK_2=0xffff
|
||||
- CONFIG_NSH_IPv6NETMASK_3=0xffff
|
||||
- CONFIG_NSH_IPv6NETMASK_4=0xffff
|
||||
- CONFIG_NSH_IPv6NETMASK_5=0xffff
|
||||
- CONFIG_NSH_IPv6NETMASK_6=0xffff
|
||||
- CONFIG_NSH_IPv6NETMASK_7=0xffff
|
||||
- CONFIG_NSH_IPv6NETMASK_8=0xff80
|
63
boards/arm/tiva/tm4c129e-launchpad/configs/ipv6/defconfig
Normal file
63
boards/arm/tiva/tm4c129e-launchpad/configs/ipv6/defconfig
Normal file
|
@ -0,0 +1,63 @@
|
|||
#
|
||||
# This file is autogenerated: PLEASE DO NOT EDIT IT.
|
||||
#
|
||||
# You can use "make menuconfig" to make any modifications to the installed .config file.
|
||||
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
|
||||
# modifications.
|
||||
#
|
||||
# CONFIG_ARCH_FPU is not set
|
||||
# CONFIG_NET_IPv4 is not set
|
||||
# CONFIG_NSH_DISABLE_IFCONFIG is not set
|
||||
# CONFIG_NSH_DISABLE_PS is not set
|
||||
CONFIG_ARCH="arm"
|
||||
CONFIG_ARCH_BOARD="tm4c129e-launchpad"
|
||||
CONFIG_ARCH_BOARD_TM4C129E_LAUNCHPAD=y
|
||||
CONFIG_ARCH_CHIP="tiva"
|
||||
CONFIG_ARCH_CHIP_TIVA=y
|
||||
CONFIG_ARCH_CHIP_TM4C129=y
|
||||
CONFIG_ARCH_CHIP_TM4C129ENCPDT=y
|
||||
CONFIG_ARCH_CHIP_TM4C=y
|
||||
CONFIG_ARCH_STACKDUMP=y
|
||||
CONFIG_BOARD_LOOPSPERMSEC=11401
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_INIT_ENTRYPOINT="nsh_main"
|
||||
CONFIG_LIBC_FLOATINGPOINT=y
|
||||
CONFIG_LIBM=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_NETINIT_IPv6NETMASK_4=0x0000
|
||||
CONFIG_NETINIT_IPv6NETMASK_8=0xff80
|
||||
CONFIG_NETINIT_MONITOR=y
|
||||
CONFIG_NETINIT_THREAD=y
|
||||
CONFIG_NET_BROADCAST=y
|
||||
CONFIG_NET_ICMPv6=y
|
||||
CONFIG_NET_ICMPv6_SOCKET=y
|
||||
CONFIG_NET_IPv6=y
|
||||
CONFIG_NET_SOCKOPTS=y
|
||||
CONFIG_NET_STATISTICS=y
|
||||
CONFIG_NET_TCP=y
|
||||
CONFIG_NET_TCPBACKLOG=y
|
||||
CONFIG_NET_TCP_NOTIFIER=y
|
||||
CONFIG_NET_TCP_WRITE_BUFFERS=y
|
||||
CONFIG_NET_UDP=y
|
||||
CONFIG_NET_UDP_NOTIFIER=y
|
||||
CONFIG_NSH_ARCHINIT=y
|
||||
CONFIG_NSH_BUILTIN_APPS=y
|
||||
CONFIG_NSH_FILEIOSIZE=512
|
||||
CONFIG_NSH_LINELEN=64
|
||||
CONFIG_NSH_READLINE=y
|
||||
CONFIG_PREALLOC_TIMERS=4
|
||||
CONFIG_RAM_SIZE=262144
|
||||
CONFIG_RAM_START=0x20000000
|
||||
CONFIG_RAW_BINARY=y
|
||||
CONFIG_RR_INTERVAL=200
|
||||
CONFIG_SCHED_HPWORK=y
|
||||
CONFIG_SCHED_LPWORK=y
|
||||
CONFIG_SCHED_WAITPID=y
|
||||
CONFIG_START_YEAR=2015
|
||||
CONFIG_SYSTEM_NSH=y
|
||||
CONFIG_SYSTEM_PING6=y
|
||||
CONFIG_TIVA_BOARDMAC=y
|
||||
CONFIG_TIVA_ETHERNET=y
|
||||
CONFIG_TIVA_PHY_INTERRUPTS=y
|
||||
CONFIG_TIVA_UART0=y
|
||||
CONFIG_UART0_SERIAL_CONSOLE=y
|
69
boards/arm/tiva/tm4c129e-launchpad/configs/nsh/defconfig
Normal file
69
boards/arm/tiva/tm4c129e-launchpad/configs/nsh/defconfig
Normal file
|
@ -0,0 +1,69 @@
|
|||
#
|
||||
# This file is autogenerated: PLEASE DO NOT EDIT IT.
|
||||
#
|
||||
# You can use "make menuconfig" to make any modifications to the installed .config file.
|
||||
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
|
||||
# modifications.
|
||||
#
|
||||
# CONFIG_ARCH_FPU is not set
|
||||
# CONFIG_NSH_DISABLE_IFCONFIG is not set
|
||||
# CONFIG_NSH_DISABLE_PS is not set
|
||||
CONFIG_ARCH="arm"
|
||||
CONFIG_ARCH_BOARD="tm4c129e-launchpad"
|
||||
CONFIG_ARCH_BOARD_TM4C129E_LAUNCHPAD=y
|
||||
CONFIG_ARCH_CHIP="tiva"
|
||||
CONFIG_ARCH_CHIP_TIVA=y
|
||||
CONFIG_ARCH_CHIP_TM4C129=y
|
||||
CONFIG_ARCH_CHIP_TM4C129ENCPDT=y
|
||||
CONFIG_ARCH_CHIP_TM4C=y
|
||||
CONFIG_ARCH_STACKDUMP=y
|
||||
CONFIG_BOARD_LOOPSPERMSEC=11401
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_INIT_ENTRYPOINT="nsh_main"
|
||||
CONFIG_LIBC_FLOATINGPOINT=y
|
||||
CONFIG_LIBM=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_NETDB_DNSCLIENT=y
|
||||
CONFIG_NETDB_DNSSERVER_NOADDR=y
|
||||
CONFIG_NETINIT_DHCPC=y
|
||||
CONFIG_NETINIT_DRIPADDR=0xc0a80a01
|
||||
CONFIG_NETINIT_MONITOR=y
|
||||
CONFIG_NETINIT_THREAD=y
|
||||
CONFIG_NETUTILS_DHCPC=y
|
||||
CONFIG_NETUTILS_TELNETD=y
|
||||
CONFIG_NETUTILS_TFTPC=y
|
||||
CONFIG_NETUTILS_WEBCLIENT=y
|
||||
CONFIG_NET_ARP_IPIN=y
|
||||
CONFIG_NET_ARP_SEND=y
|
||||
CONFIG_NET_BROADCAST=y
|
||||
CONFIG_NET_ETH_PKTSIZE=1518
|
||||
CONFIG_NET_ICMP=y
|
||||
CONFIG_NET_ICMP_SOCKET=y
|
||||
CONFIG_NET_STATISTICS=y
|
||||
CONFIG_NET_TCP=y
|
||||
CONFIG_NET_TCPBACKLOG=y
|
||||
CONFIG_NET_TCP_NOTIFIER=y
|
||||
CONFIG_NET_TCP_WRITE_BUFFERS=y
|
||||
CONFIG_NET_UDP=y
|
||||
CONFIG_NET_UDP_NOTIFIER=y
|
||||
CONFIG_NSH_ARCHINIT=y
|
||||
CONFIG_NSH_BUILTIN_APPS=y
|
||||
CONFIG_NSH_FILEIOSIZE=512
|
||||
CONFIG_NSH_LINELEN=64
|
||||
CONFIG_NSH_READLINE=y
|
||||
CONFIG_PREALLOC_TIMERS=4
|
||||
CONFIG_RAM_SIZE=262144
|
||||
CONFIG_RAM_START=0x20000000
|
||||
CONFIG_RAW_BINARY=y
|
||||
CONFIG_RR_INTERVAL=200
|
||||
CONFIG_SCHED_HPWORK=y
|
||||
CONFIG_SCHED_LPWORK=y
|
||||
CONFIG_SCHED_WAITPID=y
|
||||
CONFIG_START_YEAR=2015
|
||||
CONFIG_SYSTEM_NSH=y
|
||||
CONFIG_SYSTEM_PING=y
|
||||
CONFIG_TIVA_BOARDMAC=y
|
||||
CONFIG_TIVA_ETHERNET=y
|
||||
CONFIG_TIVA_PHY_INTERRUPTS=y
|
||||
CONFIG_TIVA_UART0=y
|
||||
CONFIG_UART0_SERIAL_CONSOLE=y
|
78
boards/arm/tiva/tm4c129e-launchpad/configs/ostest/defconfig
Normal file
78
boards/arm/tiva/tm4c129e-launchpad/configs/ostest/defconfig
Normal file
|
@ -0,0 +1,78 @@
|
|||
#
|
||||
# This file is autogenerated: PLEASE DO NOT EDIT IT.
|
||||
#
|
||||
# You can use "make menuconfig" to make any modifications to the installed .config file.
|
||||
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
|
||||
# modifications.
|
||||
#
|
||||
# CONFIG_ARCH_FPU is not set
|
||||
# CONFIG_NSH_DISABLE_IFCONFIG is not set
|
||||
# CONFIG_NSH_DISABLE_PS is not set
|
||||
CONFIG_ARCH="arm"
|
||||
CONFIG_ARCH_BOARD="tm4c129e-launchpad"
|
||||
CONFIG_ARCH_BOARD_TM4C129E_LAUNCHPAD=y
|
||||
CONFIG_ARCH_CHIP="tiva"
|
||||
CONFIG_ARCH_CHIP_TIVA=y
|
||||
CONFIG_ARCH_CHIP_TM4C129=y
|
||||
CONFIG_ARCH_CHIP_TM4C129ENCPDT=y
|
||||
CONFIG_ARCH_CHIP_TM4C=y
|
||||
CONFIG_ARCH_STACKDUMP=y
|
||||
CONFIG_BOARD_LOOPSPERMSEC=11401
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_DEBUG_ASSERTIONS=y
|
||||
CONFIG_DEBUG_ERROR=y
|
||||
CONFIG_DEBUG_FEATURES=y
|
||||
CONFIG_DEBUG_SYMBOLS=y
|
||||
CONFIG_DEBUG_WARN=y
|
||||
CONFIG_INIT_ENTRYPOINT="nsh_main"
|
||||
CONFIG_LIBC_FLOATINGPOINT=y
|
||||
CONFIG_LIBM=y
|
||||
CONFIG_NDEBUG=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_NETDB_DNSCLIENT=y
|
||||
CONFIG_NETDB_DNSSERVER_NOADDR=y
|
||||
CONFIG_NETINIT_DHCPC=y
|
||||
CONFIG_NETINIT_DRIPADDR=0xc0a80a01
|
||||
CONFIG_NETINIT_MONITOR=y
|
||||
CONFIG_NETINIT_THREAD=y
|
||||
CONFIG_NETUTILS_DHCPC=y
|
||||
CONFIG_NETUTILS_TELNETD=y
|
||||
CONFIG_NETUTILS_TFTPC=y
|
||||
CONFIG_NETUTILS_WEBCLIENT=y
|
||||
CONFIG_NET_ARP_IPIN=y
|
||||
CONFIG_NET_ARP_SEND=y
|
||||
CONFIG_NET_BROADCAST=y
|
||||
CONFIG_NET_ETH_PKTSIZE=1518
|
||||
CONFIG_NET_ICMP=y
|
||||
CONFIG_NET_ICMP_SOCKET=y
|
||||
CONFIG_NET_STATISTICS=y
|
||||
CONFIG_NET_TCP=y
|
||||
CONFIG_NET_TCPBACKLOG=y
|
||||
CONFIG_NET_TCP_NOTIFIER=y
|
||||
CONFIG_NET_TCP_WRITE_BUFFERS=y
|
||||
CONFIG_NET_UDP=y
|
||||
CONFIG_NET_UDP_NOTIFIER=y
|
||||
CONFIG_NSH_ARCHINIT=y
|
||||
CONFIG_NSH_BUILTIN_APPS=y
|
||||
CONFIG_NSH_FILEIOSIZE=512
|
||||
CONFIG_NSH_LINELEN=64
|
||||
CONFIG_NSH_READLINE=y
|
||||
CONFIG_PREALLOC_TIMERS=4
|
||||
CONFIG_RAM_SIZE=262144
|
||||
CONFIG_RAM_START=0x20000000
|
||||
CONFIG_RAW_BINARY=y
|
||||
CONFIG_RR_INTERVAL=200
|
||||
CONFIG_SCHED_HPWORK=y
|
||||
CONFIG_SCHED_LPWORK=y
|
||||
CONFIG_SCHED_WAITPID=y
|
||||
CONFIG_STACK_CANARIES=y
|
||||
CONFIG_STACK_COLORATION=y
|
||||
CONFIG_START_YEAR=2015
|
||||
CONFIG_SYSTEM_NSH=y
|
||||
CONFIG_SYSTEM_PING=y
|
||||
CONFIG_TESTING_OSTEST=y
|
||||
CONFIG_TIVA_BOARDMAC=y
|
||||
CONFIG_TIVA_ETHERNET=y
|
||||
CONFIG_TIVA_PHY_INTERRUPTS=y
|
||||
CONFIG_TIVA_UART0=y
|
||||
CONFIG_UART0_SERIAL_CONSOLE=y
|
208
boards/arm/tiva/tm4c129e-launchpad/include/board.h
Normal file
208
boards/arm/tiva/tm4c129e-launchpad/include/board.h
Normal file
|
@ -0,0 +1,208 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/tiva/tm4c129e-launchpad/include/board.h
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership. The
|
||||
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __BOARDS_ARM_TIVA_TM4C129E_LAUNCHPAD_INCLUDE_BOARD_H
|
||||
#define __BOARDS_ARM_TIVA_TM4C129E_LAUNCHPAD_INCLUDE_BOARD_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
# include <stdbool.h>
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Clocking *****************************************************************/
|
||||
|
||||
/* Crystals on-board the EK-TM4C129EXL include:
|
||||
*
|
||||
* 1. 25.0MHz (Y2) is connected to OSC0/1 pins and is used as the run mode
|
||||
* input to the PLL.
|
||||
* 2. 32.768kHz (Y3) connected to XOSC0/1 and clocks the hibernation module.
|
||||
*/
|
||||
|
||||
#define SYSCON_RCC_XTAL SYSCON_RCC_XTAL16000KHZ /* On-board crystal is 25 MHz */
|
||||
#define XTAL_FREQUENCY 25000000
|
||||
|
||||
/* Frequencies of other clock sources */
|
||||
|
||||
#define PIOSC_FREQUENCY 16000000 /* Precision internal oscillator */
|
||||
#define RTCOSC_FREQUENCY 32768 /* Hibernation module RTC oscillator */
|
||||
#define LFIOSC_FREQUENCY 33000 /* Low frequency internal oscillator */
|
||||
|
||||
/* The PLL generates Fvco according to the following formulae.
|
||||
* The input clock to the PLL may be either the external crystal (Fxtal)
|
||||
* or PIOSC (Fpiosc).
|
||||
* This logic supports only the external crystal as the PLL source clock.
|
||||
*
|
||||
* Fin = Fxtal / (Q + 1 )(N + 1) -OR- Fpiosc / (Q + 1)(N + 1)
|
||||
* Mdiv = Mint + (MFrac / 1024)
|
||||
* Fvco = Fin * Mdiv
|
||||
*
|
||||
* Where the register fields Q and N actually hold (Q-1) and (N-1).
|
||||
* The following setup then generates Fvco = 480MHz:
|
||||
*
|
||||
* Fin = 25 MHz / 1 / 5 = 5 MHz
|
||||
* Mdiv = 96
|
||||
* Fvco = 480
|
||||
*/
|
||||
|
||||
#define BOARD_PLL_MINT 96 /* Integer part of PLL M value */
|
||||
#define BOARD_PLL_MFRAC 0 /* Fractional part of PLL M value */
|
||||
#define BOARD_PLL_N 5 /* PLL N value */
|
||||
#define BOARD_PLL_Q 1 /* PLL Q value */
|
||||
|
||||
#define BOARD_FVCO_FREQUENCY 480000000 /* Resulting Fvco */
|
||||
|
||||
/* When the PLL is active, the system clock frequency (SysClk) is calculated
|
||||
* using the following equation:
|
||||
*
|
||||
* SysClk = Fvco/ (sysdiv + 1)
|
||||
*
|
||||
* The following setup generates Sysclk = 120MHz:
|
||||
*/
|
||||
|
||||
#define BOARD_PLL_SYSDIV 4 /* Sysclk = Fvco / 4 = 120MHz */
|
||||
#define SYSCLK_FREQUENCY 120000000 /* Resulting SysClk frequency */
|
||||
|
||||
/* Peripheral Clock (PCLK)
|
||||
*
|
||||
* Same frequency as the SYSCLK
|
||||
*/
|
||||
|
||||
#define PCLK_FREQUENCY SYSCLK_FREQUENCY
|
||||
|
||||
/* Alternate Clock (ALTCLK)
|
||||
*
|
||||
* The ALTCLK provides a clock source of numerous frequencies to the
|
||||
* general-purpose timer, SSI, and UART modules.
|
||||
* The default source for the ALTCLK is the Precision
|
||||
* Internal Oscillator (PIOSC).
|
||||
* The Hibernation Real-time Clock (RTCOSC) and Low
|
||||
* Frequency Internal Oscillator (LFIOSC) are alternatives.
|
||||
* If the RTCOSC Output is selected, the clock source must also be enabled
|
||||
* in the Hibernation module.
|
||||
*/
|
||||
|
||||
#define BOARD_ALTCLKCFG SYSCON_ALTCLKCFG_ALTCLK_PIOSC
|
||||
#define ALTCLK_FREQUENCY PIOSC_FREQUENCY
|
||||
|
||||
/* LED definitions **********************************************************/
|
||||
|
||||
/* The EK-TM4C129EXL has 5 green LEDs.
|
||||
* LED D0 is lit when 3.3V power supply is available .
|
||||
* LEDs D1 and D2 are general purpose LEDs.
|
||||
* LEDs D3 and D4 can be used for Ethernet link and activity.
|
||||
*
|
||||
* --- ------------
|
||||
* Pin Pin Function
|
||||
* --- ------------
|
||||
* PN1 green LED D1
|
||||
* PN0 green LED D2
|
||||
* PF4 green LED D3
|
||||
* PF0 green LED D4
|
||||
* --- ------------
|
||||
*/
|
||||
|
||||
/* LED index values for use with board_userled() */
|
||||
|
||||
#define BOARD_LED_D1 0
|
||||
#define BOARD_LED_D2 1
|
||||
#define BOARD_LED_D3 2
|
||||
#define BOARD_LED_D4 3
|
||||
#define BOARD_NLEDS 4
|
||||
|
||||
/* LED bits for use with board_userled_all() */
|
||||
|
||||
#define BOARD_LED_D1_BIT (1 << BOARD_LED_D1)
|
||||
#define BOARD_LED_D2_BIT (1 << BOARD_LED_D2)
|
||||
#define BOARD_LED_D3_BIT (1 << BOARD_LED_D3)
|
||||
#define BOARD_LED_D4_BIT (1 << BOARD_LED_D4)
|
||||
|
||||
/* If CONFIG_ARCH_LEDS is defined,
|
||||
* then automated support for the EK-TM4C129EXL LED
|
||||
* will be included in the build:
|
||||
* LED1 LED2 LED3 LED4
|
||||
*/
|
||||
|
||||
#define LED_STARTED 1 /* ON OFF NC NC */
|
||||
#define LED_HEAPALLOCATE 0 /* NC NC NC NC */
|
||||
#define LED_IRQSENABLED 0 /* NC NC NC NC */
|
||||
#define LED_STACKCREATED 2 /* ON ON NC NC */
|
||||
#define LED_INIRQ 0 /* NC NC NC NC */
|
||||
#define LED_SIGNAL 0 /* NC NC NC NC */
|
||||
#define LED_ASSERTION 0 /* NC NC NC NC */
|
||||
#define LED_PANIC 3 /* OFF ON NC NC (flashing 2Hz) */
|
||||
|
||||
/* Button definitions *******************************************************/
|
||||
|
||||
/* There are four push buttons on the board.
|
||||
* Two of them are user controllable.
|
||||
* The others are RESET and WAKE
|
||||
*
|
||||
* --- ------------
|
||||
* Pin Pin Function
|
||||
* --- ------------
|
||||
* PJ0 USR_SW1
|
||||
* PJ1 USR_SW2
|
||||
* --- ------------
|
||||
*/
|
||||
|
||||
#define BUTTON_SW1 0
|
||||
#define BUTTON_SW2 1
|
||||
#define NUM_BUTTONS 2
|
||||
|
||||
#define BUTTON_SW1_BIT (1 << BUTTON_SW1)
|
||||
#define BUTTON_SW2_BIT (1 << BUTTON_SW2)
|
||||
|
||||
/* Pin Multiplexing Disambiguation ******************************************/
|
||||
|
||||
/* Ethernet LEDs
|
||||
*
|
||||
* PF0/PF4/PF1 are used for Ethernet LEDs.
|
||||
* PF0/EN0LED0/LED4 Ethernet link OK
|
||||
* PF4/EN0LED1/LED3 Ethernet TX/RX activity
|
||||
* PF1/EN0LED2 Ethernet 100-base TX
|
||||
*/
|
||||
|
||||
#define GPIO_EN0_LED0 GPIO_EN0_LED0_1
|
||||
#define GPIO_EN0_LED1 GPIO_EN0_LED1_1
|
||||
#define GPIO_EN0_LED2 GPIO_EN0_LED2_1
|
||||
|
||||
/* Control pins for BOOST-CC2564MODA plugged into BoosterPack1
|
||||
*
|
||||
* --- ------------
|
||||
* Pin Pin Function
|
||||
* --- ------------
|
||||
* PM3 NSHUTD
|
||||
* PG0 RTS
|
||||
* PL4 CTS
|
||||
* --- ------------
|
||||
*/
|
||||
|
||||
#define UART7_GPIO_NSHUTD (GPIO_FUNC_OUTPUT | GPIO_PORTM | GPIO_PIN_3)
|
||||
#define UART7_GPIO_RTS (GPIO_FUNC_OUTPUT | GPIO_PORTG | GPIO_PIN_0)
|
||||
#define UART7_GPIO_CTS (GPIO_FUNC_INPUT | GPIO_PORTL | GPIO_PIN_4)
|
||||
|
||||
#endif /* __BOARDS_ARM_TIVA_TM4C129E_LAUNCHPAD_INCLUDE_BOARD_H */
|
38
boards/arm/tiva/tm4c129e-launchpad/scripts/Make.defs
Normal file
38
boards/arm/tiva/tm4c129e-launchpad/scripts/Make.defs
Normal file
|
@ -0,0 +1,38 @@
|
|||
############################################################################
|
||||
# boards/arm/tiva/tm4c129e-launchpad/scripts/Make.defs
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership. The
|
||||
# ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance with the
|
||||
# License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
include $(TOPDIR)/.config
|
||||
include $(TOPDIR)/tools/Config.mk
|
||||
include $(TOPDIR)/arch/arm/src/armv7-m/Toolchain.defs
|
||||
|
||||
ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)ld.script
|
||||
|
||||
ARCHPICFLAGS = -fpic -msingle-pic-base -mpic-register=r10
|
||||
|
||||
CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
|
||||
CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
|
||||
CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
|
||||
CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
|
||||
CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
AFLAGS := $(CFLAGS) -D__ASSEMBLY__
|
||||
|
||||
NXFLATLDFLAGS1 = -r -d -warn-common
|
||||
NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -no-check-sections
|
||||
LDNXFLATFLAGS = -e main -s 2048
|
103
boards/arm/tiva/tm4c129e-launchpad/scripts/ld.script
Normal file
103
boards/arm/tiva/tm4c129e-launchpad/scripts/ld.script
Normal file
|
@ -0,0 +1,103 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/tiva/tm4c129e-launchpad/scripts/ld.script
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership. The
|
||||
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/* The TM4C129ENCPDT has 1024Kib of FLASH beginning at address 0x0000:0000 and
|
||||
* 256Kib of SRAM beginning at 0x2000:0000.
|
||||
*/
|
||||
|
||||
MEMORY
|
||||
{
|
||||
flash (rx) : ORIGIN = 0x00000000, LENGTH = 1M
|
||||
sram (rwx) : ORIGIN = 0x20000000, LENGTH = 256K
|
||||
}
|
||||
|
||||
OUTPUT_ARCH(arm)
|
||||
EXTERN(_vectors)
|
||||
ENTRY(_stext)
|
||||
|
||||
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(.);
|
||||
} > flash
|
||||
|
||||
.init_section : ALIGN(4) {
|
||||
_sinit = ABSOLUTE(.);
|
||||
*(.init_array .init_array.*)
|
||||
_einit = ABSOLUTE(.);
|
||||
} > flash
|
||||
|
||||
.ARM.extab : ALIGN(4) {
|
||||
*(.ARM.extab*)
|
||||
} > flash
|
||||
|
||||
.ARM.exidx : ALIGN(4) {
|
||||
__exidx_start = ABSOLUTE(.);
|
||||
*(.ARM.exidx*)
|
||||
__exidx_end = ABSOLUTE(.);
|
||||
} > flash
|
||||
|
||||
_eronly = ABSOLUTE(.);
|
||||
|
||||
.data : ALIGN(4) {
|
||||
_sdata = ABSOLUTE(.);
|
||||
*(.data .data.*)
|
||||
*(.gnu.linkonce.d.*)
|
||||
CONSTRUCTORS
|
||||
. = ALIGN(4);
|
||||
_edata = ABSOLUTE(.);
|
||||
} > sram AT > flash
|
||||
|
||||
.bss : ALIGN(4) {
|
||||
_sbss = ABSOLUTE(.);
|
||||
*(.bss .bss.*)
|
||||
*(.gnu.linkonce.b.*)
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
_ebss = ABSOLUTE(.);
|
||||
} > sram
|
||||
|
||||
/* 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) }
|
||||
}
|
53
boards/arm/tiva/tm4c129e-launchpad/src/Makefile
Normal file
53
boards/arm/tiva/tm4c129e-launchpad/src/Makefile
Normal file
|
@ -0,0 +1,53 @@
|
|||
############################################################################
|
||||
# boards/arm/tiva/tm4c129e-launchpad/src/Makefile
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership. The
|
||||
# ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance with the
|
||||
# License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
include $(TOPDIR)/Make.defs
|
||||
|
||||
CSRCS = tm4c_boot.c tm4c_bringup.c
|
||||
|
||||
ifeq ($(CONFIG_ARCH_LEDS),y)
|
||||
CSRCS += tm4c_autoleds.c
|
||||
else
|
||||
CSRCS += tm4c_userleds.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ARCH_BUTTONS),y)
|
||||
CSRCS += tm4c_buttons.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_TIVA_ETHERNET),y)
|
||||
CSRCS += tm4c_ethernet.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_DK_TM4C129X_TIMER),y)
|
||||
CSRCS += tm4c_timer.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_BOARDCTL),y)
|
||||
CSRCS += tm4c_appinit.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_TIVA_HCIUART),y)
|
||||
ifeq ($(CONFIG_BLUETOOTH_UART),y)
|
||||
CSRCS += tm4c_hciuart.c
|
||||
endif
|
||||
endif
|
||||
|
||||
include $(TOPDIR)/boards/Board.mk
|
235
boards/arm/tiva/tm4c129e-launchpad/src/tm4c129e-launchpad.h
Normal file
235
boards/arm/tiva/tm4c129e-launchpad/src/tm4c129e-launchpad.h
Normal file
|
@ -0,0 +1,235 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/tiva/tm4c129e-launchpad/src/tm4c129e-launchpad.h
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership. The
|
||||
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __BOARDS_ARM_TIVA_TM4C129E_LAUNCHPAD_TM4C129E_LAUNCHPAD_H
|
||||
#define __BOARDS_ARM_TIVA_TM4C129E_LAUNCHPAD_TM4C129E_LAUNCHPAD_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#include <nuttx/compiler.h>
|
||||
|
||||
#include "chip.h"
|
||||
#include "tiva_gpio.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Configuration ************************************************************/
|
||||
|
||||
#define HAVE_HCIUART 1
|
||||
|
||||
#if !defined(CONFIG_TIVA_HCIUART) || !defined(CONFIG_BLUETOOTH_UART)
|
||||
# undef HAVE_HCIUART
|
||||
#elif defined(CONFIG_TIVA_UART0_HCIUART)
|
||||
# define HCIUART_SERDEV HCIUART0
|
||||
#elif defined(CONFIG_TIVA_UART1_HCIUART)
|
||||
# define HCIUART_SERDEV HCIUART1
|
||||
#elif defined(CONFIG_TIVA_UART2_HCIUART)
|
||||
# define HCIUART_SERDEV HCIUART2
|
||||
#elif defined(CONFIG_TIVA_UART3_HCIUART)
|
||||
# define HCIUART_SERDEV HCIUART3
|
||||
#elif defined(CONFIG_TIVA_UART4_HCIUART)
|
||||
# define HCIUART_SERDEV HCIUART4
|
||||
#elif defined(CONFIG_TIVA_UART5_HCIUART)
|
||||
# define HCIUART_SERDEV HCIUART5
|
||||
#elif defined(CONFIG_TIVA_UART6_HCIUART)
|
||||
# define HCIUART_SERDEV HCIUART6
|
||||
#elif defined(CONFIG_TIVA_UART7_HCIUART)
|
||||
# define HCIUART_SERDEV HCIUART7
|
||||
#else
|
||||
# error No HCI UART specifified
|
||||
#endif
|
||||
|
||||
/* How many SSI modules does this chip support? */
|
||||
|
||||
#if TIVA_NSSI < 1
|
||||
# undef CONFIG_TIVA_SSI0
|
||||
# undef CONFIG_TIVA_SSI0
|
||||
#elif TIVA_NSSI < 2
|
||||
# undef CONFIG_TIVA_SSI0
|
||||
#endif
|
||||
|
||||
/* Do we need to register I2C drivers on behalf of the I2C tool? */
|
||||
|
||||
#define HAVE_I2CTOOL 1
|
||||
#if !defined(CONFIG_SYSTEM_I2CTOOL) || !defined(CONFIG_I2C_DRIVER)
|
||||
# undef HAVE_I2CTOOL
|
||||
#endif
|
||||
|
||||
/* LED definitions **********************************************************/
|
||||
|
||||
/* The EK-TM4C129EXL has a four green LEDs.
|
||||
*
|
||||
* --- ------------
|
||||
* Pin Pin Function
|
||||
* --- ------------
|
||||
* PN1 Green LED D1
|
||||
* PN0 Green LED D2
|
||||
* PF4 Green LED D3
|
||||
* PF0 Green LED D4
|
||||
* --- ------------
|
||||
*
|
||||
* A high output illuminates the LED.
|
||||
*/
|
||||
|
||||
#define GPIO_LED_D1 (GPIO_FUNC_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTN | GPIO_PIN_1)
|
||||
#define GPIO_LED_D2 (GPIO_FUNC_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTN | GPIO_PIN_0)
|
||||
#define GPIO_LED_D3 (GPIO_FUNC_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTF | GPIO_PIN_4)
|
||||
#define GPIO_LED_D4 (GPIO_FUNC_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTF | GPIO_PIN_0)
|
||||
|
||||
/* Check if we have the LED driver */
|
||||
|
||||
#define HAVE_USERLED_DRIVER 1
|
||||
#if !defined(CONFIG_USERLED) || !defined(CONFIG_USERLED_LOWER)
|
||||
# undef HAVE_USERLED_DRIVER
|
||||
#endif
|
||||
|
||||
/* Button definitions *******************************************************/
|
||||
|
||||
/* There are four push buttons on the board.
|
||||
* Two of them are user controllable.
|
||||
* The others are RESET and WAKE
|
||||
*
|
||||
* --- ------------
|
||||
* Pin Pin Function
|
||||
* --- ------------
|
||||
* PJ0 USR_SW1
|
||||
* PJ1 USR_SW2
|
||||
* --- ------------
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_ARCH_IRQBUTTONS
|
||||
# define GPIO_SW1 (GPIO_FUNC_INTERRUPT | GPIO_INT_BOTHEDGES | \
|
||||
GPIO_STRENGTH_2MA | GPIO_PADTYPE_STDWPU | \
|
||||
GPIO_PORTJ | GPIO_PIN_0)
|
||||
# define GPIO_SW2 (GPIO_FUNC_INTERRUPT | GPIO_INT_BOTHEDGES | \
|
||||
GPIO_STRENGTH_2MA | GPIO_PADTYPE_STDWPU | \
|
||||
GPIO_PORTJ | GPIO_PIN_1)
|
||||
#else
|
||||
# define GPIO_SW1 (GPIO_FUNC_INPUT | GPIO_PORTJ | GPIO_PIN_0)
|
||||
# define GPIO_SW2 (GPIO_FUNC_INPUT | GPIO_PORTJ | GPIO_PIN_1)
|
||||
#endif
|
||||
|
||||
/* SPI Chip selects *********************************************************/
|
||||
|
||||
/* SSI0: PA3 is used for SSI0 chip select to the second booster pack
|
||||
* (No pull- ups)
|
||||
* SSI3: PH4 selects the SD card and PQ1 selects the on-board SPI flash.
|
||||
* Both pulled up on board.
|
||||
*/
|
||||
|
||||
#define GPIO_BSTR2_CS (GPIO_FUNC_OUTPUT | GPIO_PADTYPE_STDWPU | GPIO_STRENGTH_4MA | \
|
||||
GPIO_VALUE_ONE | GPIO_PORTA | GPIO_PIN_3)
|
||||
#define GPIO_FLASH_CS (GPIO_FUNC_OUTPUT | GPIO_PADTYPE_STD | GPIO_STRENGTH_4MA | \
|
||||
GPIO_VALUE_ONE | GPIO_PORTH | GPIO_PIN_4)
|
||||
#define GPIO_SD_CS (GPIO_FUNC_OUTPUT | GPIO_PADTYPE_STD | GPIO_STRENGTH_4MA | \
|
||||
GPIO_VALUE_ONE | GPIO_PORTH | GPIO_PIN_4)
|
||||
|
||||
/* I2C **********************************************************************/
|
||||
|
||||
/* I2C3: PG4-5 are provide to the BoostPack 1 interface
|
||||
* I2C7: PA4-5 are provide to the BoostPack 2 interface
|
||||
* I2C6: PB6-7 are used for I2C to the connector.
|
||||
*/
|
||||
|
||||
/* Speaker outputs **********************************************************/
|
||||
|
||||
/* PB2/PD4 are used for the speaker output */
|
||||
|
||||
/* Touchscreen **************************************************************/
|
||||
|
||||
/* PE7/PP7/PT2-3 are used for the touch screen */
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
/****************************************************************************
|
||||
* Name: tm4c_ssidev_initialize
|
||||
*
|
||||
* Description:
|
||||
* Called to configure SPI chip select GPIO pins for the EK-TM4C129EXL.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void weak_function tm4c_ssidev_initialize(void);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: tm4c_led_initialize
|
||||
*
|
||||
* Description:
|
||||
* Called to initialize the on-board LEDs.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_ARCH_LEDS
|
||||
void tm4c_led_initialize(void);
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: tm4c_bringup
|
||||
*
|
||||
* Description:
|
||||
* Bring up board features
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int tm4c_bringup(void);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: tiva_timer_configure
|
||||
*
|
||||
* Description:
|
||||
* Configure the timer driver
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_TM4C129E_LAUNCHPAD_TIMER
|
||||
int tiva_timer_configure(void);
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: hciuart_dev_initialize
|
||||
*
|
||||
* Description:
|
||||
* This function is called by board initialization logic to configure the
|
||||
* Bluetooth HCI UART driver
|
||||
*
|
||||
* Input Parameters:
|
||||
* None
|
||||
*
|
||||
* Returned Value:
|
||||
* Zero is returned on success. Otherwise, a negated errno value is
|
||||
* returned to indicate the nature of the failure.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef HAVE_HCIUART
|
||||
int hciuart_dev_initialize(void);
|
||||
#endif
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* __BOARDS_ARM_TIVA_TM4C129E_LAUNCHPAD_TM4C129E_LAUNCHPAD_H */
|
75
boards/arm/tiva/tm4c129e-launchpad/src/tm4c_appinit.c
Normal file
75
boards/arm/tiva/tm4c129e-launchpad/src/tm4c_appinit.c
Normal file
|
@ -0,0 +1,75 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/tiva/tm4c129e-launchpad/src/tm4c_appinit.c
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership. The
|
||||
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <nuttx/board.h>
|
||||
|
||||
#include "tm4c129e-launchpad.h"
|
||||
|
||||
#ifdef CONFIG_BOARDCTL
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_app_initialize
|
||||
*
|
||||
* Description:
|
||||
* Perform application specific initialization. This function is never
|
||||
* called directly from application code, but only indirectly via the
|
||||
* (non-standard) boardctl() interface using the command BOARDIOC_INIT.
|
||||
*
|
||||
* Input Parameters:
|
||||
* arg - The boardctl() argument is passed to the board_app_initialize()
|
||||
* implementation without modification. The argument has no
|
||||
* meaning to NuttX; the meaning of the argument is a contract
|
||||
* between the board-specific initialization logic and the
|
||||
* matching application logic. The value could be such things as a
|
||||
* mode enumeration value, a set of DIP switch switch settings, a
|
||||
* pointer to configuration data read from a file or serial FLASH,
|
||||
* or whatever you would like to do with it. Every implementation
|
||||
* should accept zero/NULL as a default configuration.
|
||||
*
|
||||
* Returned Value:
|
||||
* Zero (OK) is returned on success; a negated errno value is returned on
|
||||
* any failure to indicate the nature of the failure.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int board_app_initialize(uintptr_t arg)
|
||||
{
|
||||
/* If CONFIG_BOARD_LATE_INITIALIZE is selected then board initialization
|
||||
* was already performed in board_late_initialize.
|
||||
*/
|
||||
|
||||
#ifndef CONFIG_BOARD_LATE_INITIALIZE
|
||||
return tm4c_bringup();
|
||||
#else
|
||||
return OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* CONFIG_BOARDCTL */
|
140
boards/arm/tiva/tm4c129e-launchpad/src/tm4c_autoleds.c
Normal file
140
boards/arm/tiva/tm4c129e-launchpad/src/tm4c_autoleds.c
Normal file
|
@ -0,0 +1,140 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/tiva/tm4c129e-launchpad/src/tm4c_autoleds.c
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership. The
|
||||
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/board.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "tiva_gpio.h"
|
||||
#include "tm4c129e-launchpad.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: tm4c_led_initialize
|
||||
*
|
||||
* Description:
|
||||
* Called to initialize the on-board LEDs.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_ARCH_LEDS
|
||||
void tm4c_led_initialize(void)
|
||||
{
|
||||
/* Configure LED PIOs for output */
|
||||
|
||||
tiva_configgpio(GPIO_LED_D1);
|
||||
tiva_configgpio(GPIO_LED_D2);
|
||||
tiva_configgpio(GPIO_LED_D3);
|
||||
tiva_configgpio(GPIO_LED_D4);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_autoled_on
|
||||
****************************************************************************/
|
||||
|
||||
void board_autoled_on(int led)
|
||||
{
|
||||
/* --------------- ------- ----- ----- ----- ----- ----------
|
||||
* STATE VALUE LED1 LED2 LED3 LED4
|
||||
* --------------- ------- ----- ----- ----- ----- ----------
|
||||
* LED_STARTED 1 ON OFF NC NC
|
||||
* LED_HEAPALLOCATE 0 NC NC NC NC
|
||||
* LED_IRQSENABLED 0 NC NC NC NC
|
||||
* LED_STACKCREATED 2 ON ON NC NC
|
||||
* LED_INIRQ 0 NC NC NC NC
|
||||
* LED_SIGNAL 0 NC NC NC NC
|
||||
* LED_ASSERTION 0 NC NC NC NC
|
||||
* LED_PANIC 3 OFF ON NC NC (flashing 2Hz)
|
||||
* --------------- ------- ----- ----- ----- ---------------
|
||||
*
|
||||
* A high output illuminates the LED.
|
||||
*/
|
||||
|
||||
switch (led)
|
||||
{
|
||||
default:
|
||||
case 0: /* No change */
|
||||
break;
|
||||
|
||||
case 1: /* LED1=OFF, LED2=OFF, LED3=NC, LED4=NC */
|
||||
tiva_gpiowrite(GPIO_LED_D1, true);
|
||||
tiva_gpiowrite(GPIO_LED_D2, false);
|
||||
break;
|
||||
|
||||
case 2: /* LED1=ON, LED2=ON, LED3=NC, LED4=NC */
|
||||
tiva_gpiowrite(GPIO_LED_D1, true);
|
||||
tiva_gpiowrite(GPIO_LED_D2, true);
|
||||
break;
|
||||
|
||||
case 3: /* LED1=OFF, LED2=ON, LED3=NC, LED4=NC */
|
||||
tiva_gpiowrite(GPIO_LED_D1, false);
|
||||
tiva_gpiowrite(GPIO_LED_D2, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_autoled_off
|
||||
****************************************************************************/
|
||||
|
||||
void board_autoled_off(int led)
|
||||
{
|
||||
/* --------------- ------- ----- ----- ----- ----- ----------
|
||||
* STATE VALUE LED1 LED2 LED3 LED4
|
||||
* --------------- ------- ----- ----- ----- ----- ----------
|
||||
* LED_STARTED 1 ON OFF NC NC
|
||||
* LED_HEAPALLOCATE 0 NC NC NC NC
|
||||
* LED_IRQSENABLED 0 NC NC NC NC
|
||||
* LED_STACKCREATED 2 ON ON NC NC
|
||||
* LED_INIRQ 0 NC NC NC NC
|
||||
* LED_SIGNAL 0 NC NC NC NC
|
||||
* LED_ASSERTION 0 NC NC NC NC
|
||||
* LED_PANIC 3 ON OFF NC NC (flashing 2Hz)
|
||||
* --------------- ------- ----- ----- ----- ---------------
|
||||
*
|
||||
* A high output illuminates the LED.
|
||||
*/
|
||||
|
||||
switch (led)
|
||||
{
|
||||
case 0: /* No change */
|
||||
case 1: /* Will not happen */
|
||||
case 2: /* Will not happen */
|
||||
default:
|
||||
break;
|
||||
|
||||
case 3: /* LED1=ON, LED2=OFF, LED3=NC, LED4=NC */
|
||||
tiva_gpiowrite(GPIO_LED_D1, true);
|
||||
tiva_gpiowrite(GPIO_LED_D2, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* CONFIG_ARCH_LEDS */
|
103
boards/arm/tiva/tm4c129e-launchpad/src/tm4c_boot.c
Normal file
103
boards/arm/tiva/tm4c129e-launchpad/src/tm4c_boot.c
Normal file
|
@ -0,0 +1,103 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/tiva/tm4c129e-launchpad/src/tm4c_boot.c
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership. The
|
||||
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/board.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "tm4c129e-launchpad.h"
|
||||
#include "arm_internal.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: tiva_boardinitialize
|
||||
*
|
||||
* Description:
|
||||
* All Tiva architectures must provide the following entry point.
|
||||
* This entry point is called early in the initialization -- after all
|
||||
* memory has been configured and mapped but before any devices have been
|
||||
* initialized.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void tiva_boardinitialize(void)
|
||||
{
|
||||
/* Configure SPI chip selects if
|
||||
* 1) SSI is not disabled, and
|
||||
* 2) the weak function
|
||||
* tm4c_ssidev_initialize() has been brought into the link.
|
||||
*/
|
||||
|
||||
/* The DK-TM4C129X microSD CS and OLED are on SSI0 */
|
||||
|
||||
#if defined(CONFIG_TIVA_SSI0) || defined(CONFIG_TIVA_SSI1)
|
||||
if (tm4c_ssidev_initialize)
|
||||
{
|
||||
tm4c_ssidev_initialize();
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Configure on-board LEDs if LED support has been selected. */
|
||||
|
||||
#ifdef CONFIG_ARCH_LEDS
|
||||
tm4c_led_initialize();
|
||||
#endif
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_late_initialize
|
||||
*
|
||||
* Description:
|
||||
* If CONFIG_BOARD_LATE_INITIALIZE is selected, then an additional
|
||||
* initialization call will be performed in the boot-up sequence to a
|
||||
* function called board_late_initialize(). board_late_initialize() will
|
||||
* be called immediately after up_initialize() is called and just before
|
||||
* the initial application is started. This additional initialization
|
||||
* phase may be used, for example, to initialize board-specific device
|
||||
* drivers.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_BOARD_LATE_INITIALIZE
|
||||
void board_late_initialize(void)
|
||||
{
|
||||
/* Perform board initialization */
|
||||
|
||||
tm4c_bringup();
|
||||
}
|
||||
#endif /* CONFIG_BOARD_LATE_INITIALIZE */
|
364
boards/arm/tiva/tm4c129e-launchpad/src/tm4c_bringup.c
Normal file
364
boards/arm/tiva/tm4c129e-launchpad/src/tm4c_bringup.c
Normal file
|
@ -0,0 +1,364 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/tiva/tm4c129e-launchpad/src/tm4c_bringup.c
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership. The
|
||||
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
#include <nuttx/sensors/qencoder.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include <nuttx/timers/pwm.h>
|
||||
|
||||
#ifdef CONFIG_INPUT_BUTTONS
|
||||
# include <nuttx/input/buttons.h>
|
||||
#endif
|
||||
|
||||
#include "tiva_i2c.h"
|
||||
#include "tiva_pwm.h"
|
||||
#include "tiva_qencoder.h"
|
||||
#include "tm4c129e-launchpad.h"
|
||||
|
||||
#ifdef HAVE_USERLED_DRIVER
|
||||
# include <nuttx/leds/userled.h>
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_DK_TM4C129X_TIMER
|
||||
# define HAVE_TIMER
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_TM4C129E_LAUNCHPAD_PWM
|
||||
# define HAVE_PWM
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_TIVA_QEI0) || defined(CONFIG_TIVA_QEI1)
|
||||
# define HAVE_QEI
|
||||
#endif
|
||||
|
||||
#define PWM_PATH_FMT "/dev/pwm%d"
|
||||
#define PWM_PATH_FMTLEN (10)
|
||||
|
||||
#define QEI_PATH_FMT "/dev/qei%d"
|
||||
#define QEI_PATH_FMTLEN (10)
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: tm4c_i2c_register
|
||||
*
|
||||
* Description:
|
||||
* Register one I2C drivers for the I2C tool.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef HAVE_I2CTOOL
|
||||
static void tm4c_i2c_register(int bus)
|
||||
{
|
||||
struct i2c_master_s *i2c;
|
||||
int ret;
|
||||
|
||||
i2c = tiva_i2cbus_initialize(bus);
|
||||
if (i2c == NULL)
|
||||
{
|
||||
_err("ERROR: Failed to get I2C%d interface\n", bus);
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = i2c_register(i2c, bus);
|
||||
if (ret < 0)
|
||||
{
|
||||
_err("ERROR: Failed to register I2C%d driver: %d\n", bus, ret);
|
||||
tiva_i2cbus_uninitialize(i2c);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: tm4c_i2ctool
|
||||
*
|
||||
* Description:
|
||||
* Register I2C drivers for the I2C tool.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef HAVE_I2CTOOL
|
||||
static void tm4c_i2ctool(void)
|
||||
{
|
||||
#ifdef CONFIG_TIVA_I2C0
|
||||
tm4c_i2c_register(0);
|
||||
#endif
|
||||
#ifdef CONFIG_TIVA_I2C1
|
||||
tm4c_i2c_register(1);
|
||||
#endif
|
||||
#ifdef CONFIG_TIVA_I2C2
|
||||
tm4c_i2c_register(2);
|
||||
#endif
|
||||
#ifdef CONFIG_TIVA_I2C3
|
||||
tm4c_i2c_register(3);
|
||||
#endif
|
||||
#ifdef CONFIG_TIVA_I2C4
|
||||
tm4c_i2c_register(4);
|
||||
#endif
|
||||
#ifdef CONFIG_TIVA_I2C5
|
||||
tm4c_i2c_register(5);
|
||||
#endif
|
||||
#ifdef CONFIG_TIVA_I2C6
|
||||
tm4c_i2c_register(6);
|
||||
#endif
|
||||
#ifdef CONFIG_TIVA_I2C7
|
||||
tm4c_i2c_register(7);
|
||||
#endif
|
||||
#ifdef CONFIG_TIVA_I2C8
|
||||
tm4c_i2c_register(8);
|
||||
#endif
|
||||
#ifdef CONFIG_TIVA_I2C9
|
||||
tm4c_i2c_register(9);
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
# define tm4c_i2ctool()
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: tm4c_pwm_register
|
||||
*
|
||||
* Description:
|
||||
* Register a PWM dev file with the upper_level PWM driver.
|
||||
*
|
||||
* Input Parameters:
|
||||
* channel - A number identifying the PWM channel use.
|
||||
*
|
||||
* Returned Value:
|
||||
* None.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef HAVE_PWM
|
||||
static void tm4c_pwm_register(int channel)
|
||||
{
|
||||
struct pwm_lowerhalf_s *dev;
|
||||
char pwm_path[PWM_PATH_FMTLEN];
|
||||
int ret;
|
||||
|
||||
dev = tiva_pwm_initialize(channel);
|
||||
if (dev == NULL)
|
||||
{
|
||||
_err("ERROR: Failed to get PWM%d interface\n", channel);
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(pwm_path, PWM_PATH_FMTLEN, PWM_PATH_FMT, channel);
|
||||
ret = pwm_register(pwm_path, dev);
|
||||
if (ret < 0)
|
||||
{
|
||||
_err("ERROR: Failed to register PWM%d driver: %d\n",
|
||||
channel, ret);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: tm4c_pwm
|
||||
*
|
||||
* Description:
|
||||
* Register PWM drivers for the PWM tool.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef HAVE_PWM
|
||||
static void tm4c_pwm(void)
|
||||
{
|
||||
#ifdef CONFIG_TIVA_PWM0_CHAN0
|
||||
tm4c_pwm_register(0);
|
||||
#endif
|
||||
#ifdef CONFIG_TIVA_PWM0_CHAN1
|
||||
tm4c_pwm_register(1);
|
||||
#endif
|
||||
#ifdef CONFIG_TIVA_PWM0_CHAN2
|
||||
tm4c_pwm_register(2);
|
||||
#endif
|
||||
#ifdef CONFIG_TIVA_PWM0_CHAN3
|
||||
tm4c_pwm_register(3);
|
||||
#endif
|
||||
#ifdef CONFIG_TIVA_PWM0_CHAN4
|
||||
tm4c_pwm_register(4);
|
||||
#endif
|
||||
#ifdef CONFIG_TIVA_PWM0_CHAN5
|
||||
tm4c_pwm_register(5);
|
||||
#endif
|
||||
#ifdef CONFIG_TIVA_PWM0_CHAN6
|
||||
tm4c_pwm_register(6);
|
||||
#endif
|
||||
#ifdef CONFIG_TIVA_PWM0_CHAN7
|
||||
tm4c_pwm_register(7);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: tm4c_qei_register
|
||||
*
|
||||
* Description:
|
||||
* Register a QEI dev file with the upper_level QEI driver.
|
||||
*
|
||||
* Input Parameters:
|
||||
* id - A number identifying the QEI.
|
||||
*
|
||||
* Returned Value:
|
||||
* None.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef HAVE_QEI
|
||||
static void tm4c_qei_register(int id)
|
||||
{
|
||||
struct qe_lowerhalf_s *dev;
|
||||
int ret;
|
||||
char qe_path[QEI_PATH_FMTLEN];
|
||||
|
||||
dev = tiva_qei_initialize(id);
|
||||
if (dev == NULL)
|
||||
{
|
||||
_err("ERROR: Failed to get QEI %d\n", id);
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(qe_path, QEI_PATH_FMTLEN, QEI_PATH_FMT, id);
|
||||
ret = qe_register(qe_path, dev);
|
||||
if (ret < 0)
|
||||
{
|
||||
_err("ERROR: Failed to register QEI %d driver: %d\n", id, ret);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: tm4c_qei
|
||||
*
|
||||
* Description:
|
||||
* Register QEI drivers for the QEI tool.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef HAVE_QEI
|
||||
static void tm4c_qei(void)
|
||||
{
|
||||
#ifdef CONFIG_TIVA_QEI0
|
||||
tm4c_qei_register(0);
|
||||
#endif
|
||||
#ifdef CONFIG_TIVA_QEI1
|
||||
tm4c_qei_register(1);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: tm4c_bringup
|
||||
*
|
||||
* Description:
|
||||
* Bring up board features
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int tm4c_bringup(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/* Register I2C drivers on behalf of the I2C tool */
|
||||
|
||||
tm4c_i2ctool();
|
||||
|
||||
#ifdef HAVE_PWM
|
||||
/* Register PWM drivers */
|
||||
|
||||
tm4c_pwm();
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_QEI
|
||||
/* Register QEI drivers */
|
||||
|
||||
tm4c_qei();
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_TIMER
|
||||
/* Initialize the timer driver */
|
||||
|
||||
ret = tiva_timer_configure();
|
||||
if (ret < 0)
|
||||
{
|
||||
_err("ERROR: Failed to initialize timer driver: %d\n", ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_HCIUART
|
||||
/* Register the Bluetooth HCI UART device */
|
||||
|
||||
ret = hciuart_dev_initialize();
|
||||
if (ret < 0)
|
||||
{
|
||||
serr("ERROR: Failed to initialize HCI UART driver: %d\n", ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_INPUT_BUTTONS_LOWER
|
||||
/* Register the BUTTON driver */
|
||||
|
||||
ret = btn_lower_initialize("/dev/buttons");
|
||||
if (ret < 0)
|
||||
{
|
||||
syslog(LOG_ERR, "ERROR: btn_lower_initialize() failed: %d\n", ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_USERLED_DRIVER
|
||||
/* Register the LED driver */
|
||||
|
||||
ret = userled_lower_initialize("/dev/userleds");
|
||||
if (ret != OK)
|
||||
{
|
||||
syslog(LOG_ERR, "ERROR: userled_lower_initialize() failed: %d\n",
|
||||
ret);
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
UNUSED(ret);
|
||||
return OK;
|
||||
}
|
158
boards/arm/tiva/tm4c129e-launchpad/src/tm4c_buttons.c
Normal file
158
boards/arm/tiva/tm4c129e-launchpad/src/tm4c_buttons.c
Normal file
|
@ -0,0 +1,158 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/tiva/tm4c129e-launchpad/src/tm4c_buttons.c
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership. The
|
||||
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/board.h>
|
||||
|
||||
#include <arch/irq.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "tm4c129e-launchpad.h"
|
||||
|
||||
#ifdef CONFIG_ARCH_BUTTONS
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/* Pin configuration for each STM3210E-EVAL button. This array is indexed by
|
||||
* the BUTTON_* and JOYSTICK_* definitions in board.h
|
||||
*/
|
||||
|
||||
static const uint32_t g_buttons[NUM_BUTTONS] =
|
||||
{
|
||||
GPIO_SW1, GPIO_SW2
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
uint32_t board_button_initialize(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* Configure the GPIO pins as inputs. */
|
||||
|
||||
for (i = 0; i < NUM_BUTTONS; i++)
|
||||
{
|
||||
tiva_configgpio(g_buttons[i]);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ARCH_IRQBUTTONS
|
||||
/* Configure GPIO interrupts */
|
||||
|
||||
tiva_gpioirqinitialize();
|
||||
#endif
|
||||
return NUM_BUTTONS;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_buttons
|
||||
****************************************************************************/
|
||||
|
||||
uint32_t board_buttons(void)
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
int i;
|
||||
|
||||
/* Check that state of each key */
|
||||
|
||||
for (i = 0; i < NUM_BUTTONS; i++)
|
||||
{
|
||||
/* A LOW value means that the key is pressed. */
|
||||
|
||||
bool released = tiva_gpioread(g_buttons[i]);
|
||||
|
||||
/* Accumulate the set of depressed (not released) keys */
|
||||
|
||||
if (!released)
|
||||
{
|
||||
ret |= (1 << i);
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_ARCH_IRQBUTTONS
|
||||
int board_button_irq(int id, xcpt_t irqhandler, void *arg)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (id < 0 || id >= NUM_BUTTONS)
|
||||
{
|
||||
ret = -EINVAL;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Are we attaching or detaching? */
|
||||
|
||||
if (irqhandler != NULL)
|
||||
{
|
||||
ret = tiva_gpioirqattach(g_buttons[id], irqhandler, arg);
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = tiva_gpioirqdetach(g_buttons[id]);
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_ARCH_BUTTONS */
|
87
boards/arm/tiva/tm4c129e-launchpad/src/tm4c_ethernet.c
Normal file
87
boards/arm/tiva/tm4c129e-launchpad/src/tm4c_ethernet.c
Normal file
|
@ -0,0 +1,87 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/tiva/tm4c129e-launchpad/src/tm4c_ethernet.c
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership. The
|
||||
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <stdint.h>
|
||||
#include <debug.h>
|
||||
#include <assert.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
#include <net/ethernet.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "chip.h"
|
||||
#include "hardware/tiva_flash.h"
|
||||
#include "tiva_ethernet.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: tiva_ethernetmac
|
||||
*
|
||||
* Description:
|
||||
* For the Ethernet Eval Kits, the MAC address will be stored in the
|
||||
* non-volatile USER0 and USER1 registers.
|
||||
* If CONFIG_TIVA_BOARDMAC is defined, this function
|
||||
* will obtain the MAC address from these registers.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_TIVA_BOARDMAC
|
||||
void tiva_ethernetmac(struct ether_addr *ethaddr)
|
||||
{
|
||||
uint32_t user0;
|
||||
uint32_t user1;
|
||||
|
||||
/* Get the current value of the user registers */
|
||||
|
||||
user0 = getreg32(TIVA_FLASH_USERREG0);
|
||||
user1 = getreg32(TIVA_FLASH_USERREG1);
|
||||
|
||||
ninfo("user: %06" PRIx32 ":%06" PRIx32 "\n",
|
||||
user1 & 0x00ffffff, user0 & 0x00ffffff);
|
||||
DEBUGASSERT(user0 != 0xffffffff && user1 != 0xffffffff);
|
||||
|
||||
/* Re-format that MAC address the way that the network expects to see it */
|
||||
|
||||
ethaddr->ether_addr_octet[0] = ((user0 >> 0) & 0xff);
|
||||
ethaddr->ether_addr_octet[1] = ((user0 >> 8) & 0xff);
|
||||
ethaddr->ether_addr_octet[2] = ((user0 >> 16) & 0xff);
|
||||
ethaddr->ether_addr_octet[3] = ((user1 >> 0) & 0xff);
|
||||
ethaddr->ether_addr_octet[4] = ((user1 >> 8) & 0xff);
|
||||
ethaddr->ether_addr_octet[5] = ((user1 >> 16) & 0xff);
|
||||
}
|
||||
#endif
|
82
boards/arm/tiva/tm4c129e-launchpad/src/tm4c_hciuart.c
Normal file
82
boards/arm/tiva/tm4c129e-launchpad/src/tm4c_hciuart.c
Normal file
|
@ -0,0 +1,82 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/tiva/tm4c129e-launchpad/src/tm4c_hciuart.c
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership. The
|
||||
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <debug.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <nuttx/wireless/bluetooth/bt_uart.h>
|
||||
|
||||
#include "tiva_hciuart.h"
|
||||
#include "tm4c129e-launchpad.h"
|
||||
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#ifdef HAVE_HCIUART
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: hciuart_dev_initialize
|
||||
*
|
||||
* Description:
|
||||
* This function is called by board initialization logic to configure the
|
||||
* Bluetooth HCI UART driver
|
||||
*
|
||||
* Input Parameters:
|
||||
* None
|
||||
*
|
||||
* Returned Value:
|
||||
* Zero is returned on success. Otherwise, a negated errno value is
|
||||
* returned to indicate the nature of the failure.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int hciuart_dev_initialize(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/* Perform one-time initialization */
|
||||
|
||||
hciuart_initialize();
|
||||
|
||||
/* Instantiate the HCI UART lower half interface
|
||||
* Then initialize the HCI UART upper half driver with the bluetooth stack
|
||||
*/
|
||||
|
||||
ret = btuart_register(hciuart_instantiate(HCIUART_SERDEV));
|
||||
if (ret < 0)
|
||||
{
|
||||
wlerr("ERROR: btuart_register() failed: %d\n", ret);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif /* HAVE_HCIUART */
|
103
boards/arm/tiva/tm4c129e-launchpad/src/tm4c_timer.c
Normal file
103
boards/arm/tiva/tm4c129e-launchpad/src/tm4c_timer.c
Normal file
|
@ -0,0 +1,103 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/tiva/tm4c129e-launchpad/src/tm4c_timer.c
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership. The
|
||||
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <debug.h>
|
||||
#include "tiva_timer.h"
|
||||
#include "tm4c129e-launchpad.h"
|
||||
|
||||
#ifdef CONFIG_TM4C129E_LAUNCHPAD_TIMER
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Configuration ************************************************************/
|
||||
|
||||
#ifndef CONFIG_TIMER
|
||||
# error CONFIG_TIMER is not defined
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_TIVA_TIMER32_PERIODIC
|
||||
# error CONFIG_TIVA_TIMER32_PERIODIC is not defined
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_DK_TM4CTM4C129E_LAUNCHPADX_TIMER0)
|
||||
# define GPTM 0
|
||||
#elif defined(CONFIG_TM4C129E_LAUNCHPAD_TIMER1)
|
||||
# define GPTM 1
|
||||
#elif defined(CONFIG_TM4C129E_LAUNCHPAD_TIMER2)
|
||||
# define GPTM 2
|
||||
#elif defined(CONFIG_TM4C129E_LAUNCHPAD_TIMER3)
|
||||
# define GPTM 3
|
||||
#elif defined(CONFIG_TM4C129E_LAUNCHPAD_TIMER4)
|
||||
# define GPTM 4
|
||||
#elif defined(CONFIG_TM4C129E_LAUNCHPAD_TIMER5)
|
||||
# define GPTM 5
|
||||
#elif defined(CONFIG_TM4C129E_LAUNCHPAD_TIMER6)
|
||||
# define GPTM 6
|
||||
#elif defined(CONFIG_TM4C129E_LAUNCHPAD_TIMER7)
|
||||
# define GPTM 7
|
||||
#else
|
||||
# error No CONFIG_TM4C129E_LAUNCHPAD_TIMERn definition
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_TM4C129E_LAUNCHPAD_TIMER_DEVNAME
|
||||
# define CONFIG_TM4C129E_LAUNCHPAD_TIMER_DEVNAME "/dev/timer0"
|
||||
#endif
|
||||
|
||||
#undef CONFIG_TM4C129E_LAUNCHPAD_TIMER_ALTCLK
|
||||
#define ALTCLK false
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: tiva_timer_configure
|
||||
*
|
||||
* Description:
|
||||
* Configure the timer driver
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int tiva_timer_configure(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
tmrinfo("Registering TIMER%d at %s\n",
|
||||
GPTM, CONFIG_TM4C129E_LAUNCHPAD_TIMER_DEVNAME);
|
||||
|
||||
ret = tiva_timer_register(CONFIG_TM4C129E_LAUNCHPAD_TIMER_DEVNAME,
|
||||
GPTM, ALTCLK);
|
||||
if (ret < 0)
|
||||
{
|
||||
tmrerr("ERROR: Failed to register timer driver: %d\n", ret);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_TM4C129E_LAUNCHPAD_TIMER */
|
124
boards/arm/tiva/tm4c129e-launchpad/src/tm4c_userleds.c
Normal file
124
boards/arm/tiva/tm4c129e-launchpad/src/tm4c_userleds.c
Normal file
|
@ -0,0 +1,124 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/tiva/tm4c129e-launchpad/src/tm4c_userleds.c
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership. The
|
||||
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/* The EK-TM4C129EXL has a four green LEDs.
|
||||
*
|
||||
* --- ------------
|
||||
* Pin Pin Function
|
||||
* --- ------------
|
||||
* PN1 Green LED D1
|
||||
* PN0 Green LED D2
|
||||
* PF4 Green LED D3
|
||||
* PF0 Green LED D4
|
||||
* --- ------------
|
||||
*
|
||||
* A high output illuminates the LED.
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "tiva_gpio.h"
|
||||
#include "tm4c129e-launchpad.h"
|
||||
|
||||
#ifndef CONFIG_ARCH_LEDS
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_userled_initialize
|
||||
****************************************************************************/
|
||||
|
||||
uint32_t board_userled_initialize(void)
|
||||
{
|
||||
/* Configure LED PIOs for output */
|
||||
|
||||
tiva_configgpio(GPIO_LED_D1);
|
||||
tiva_configgpio(GPIO_LED_D2);
|
||||
tiva_configgpio(GPIO_LED_D3);
|
||||
tiva_configgpio(GPIO_LED_D4);
|
||||
return BOARD_NLEDS;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_userled
|
||||
****************************************************************************/
|
||||
|
||||
void board_userled(int led, bool ledon)
|
||||
{
|
||||
uint32_t ledcfg;
|
||||
|
||||
if (led == BOARD_LED_D1)
|
||||
{
|
||||
ledcfg = GPIO_LED_D1;
|
||||
}
|
||||
else if (led == BOARD_LED_D2)
|
||||
{
|
||||
ledcfg = GPIO_LED_D2;
|
||||
}
|
||||
else if (led == BOARD_LED_D3)
|
||||
{
|
||||
ledcfg = GPIO_LED_D3;
|
||||
}
|
||||
else if (led == BOARD_LED_D4)
|
||||
{
|
||||
ledcfg = GPIO_LED_D4;
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
tiva_gpiowrite(ledcfg, ledon);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_userled_all
|
||||
****************************************************************************/
|
||||
|
||||
void board_userled_all(uint32_t ledset)
|
||||
{
|
||||
bool ledon;
|
||||
|
||||
ledon = ((ledset & BOARD_LED_D1_BIT) != 0);
|
||||
tiva_gpiowrite(GPIO_LED_D1, ledon);
|
||||
|
||||
ledon = ((ledset & BOARD_LED_D2_BIT) != 0);
|
||||
tiva_gpiowrite(GPIO_LED_D2, ledon);
|
||||
|
||||
ledon = ((ledset & BOARD_LED_D3_BIT) != 0);
|
||||
tiva_gpiowrite(GPIO_LED_D3, ledon);
|
||||
|
||||
ledon = ((ledset & BOARD_LED_D4_BIT) != 0);
|
||||
tiva_gpiowrite(GPIO_LED_D4, ledon);
|
||||
}
|
||||
|
||||
#endif /* !CONFIG_ARCH_LEDS */
|
12
boards/arm/tiva/tm4c129e-launchpad/tools/ek-tm4c129exl.cfg
Normal file
12
boards/arm/tiva/tm4c129e-launchpad/tools/ek-tm4c129exl.cfg
Normal file
|
@ -0,0 +1,12 @@
|
|||
#
|
||||
# TI Tiva C Series ek-tm4c129exl Launchpad Evaluation Kit
|
||||
#
|
||||
# https://www.ti.com/tool/EK-TM4C129EXL
|
||||
#
|
||||
|
||||
source [find interface/ti-icdi.cfg]
|
||||
transport select hla_jtag
|
||||
|
||||
set WORKAREASIZE 0x40000
|
||||
set CHIPNAME tm4c129encpdt
|
||||
source [find target/stellaris.cfg]
|
57
boards/arm/tiva/tm4c129e-launchpad/tools/oocd.sh
Executable file
57
boards/arm/tiva/tm4c129e-launchpad/tools/oocd.sh
Executable file
|
@ -0,0 +1,57 @@
|
|||
#!/usr/bin/env bash
|
||||
#
|
||||
# See boards/arm/tiva/tm4c129e-launchpad/README.txt for information about
|
||||
# this file.
|
||||
|
||||
TOPDIR=$1
|
||||
USAGE="$0 <TOPDIR> [-d]"
|
||||
if [ -z "${TOPDIR}" ]; then
|
||||
echo "Missing argument"
|
||||
echo $USAGE
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Assume that OpenOCD was installed and at /usr/local/bin. Uncomment
|
||||
# the following to run directly from the build directory
|
||||
|
||||
# OPENOCD_PATH="/home/OpenOCD/openocd/src"
|
||||
OPENOCD_PATH="/usr/bin"
|
||||
# OPENOCD_PATH="/usr/local/bin"
|
||||
|
||||
# TARGET_PATH="/home/OpenOCD/openocd/tcl"
|
||||
TARGET_PATH="/usr/share/openocd/scripts"
|
||||
# TARGET_PATH="/usr/local/share/openocd/scripts"
|
||||
|
||||
# Assume a Unix development environment. Uncomment to use a Windows
|
||||
# like environment
|
||||
|
||||
# OPENOCD_EXE=openocd.exe
|
||||
OPENOCD_EXE=openocd
|
||||
|
||||
OPENOCD_CFG="${TOPDIR}/boards/arm/tiva/tm4c129e-launchpad/tools/ek-tm4c129exl.cfg"
|
||||
OPENOCD_ARGS="-f ${OPENOCD_CFG} -s ${TARGET_PATH}"
|
||||
|
||||
if [ "X$2" = "X-d" ]; then
|
||||
OPENOCD_ARGS=$OPENOCD_ARGS" -d3"
|
||||
set -x
|
||||
fi
|
||||
|
||||
if [ ! -d ${OPENOCD_PATH} ]; then
|
||||
echo "OpenOCD path does not exist: ${OPENOCD_PATH}"
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -x ${OPENOCD_PATH}/${OPENOCD_EXE} ]; then
|
||||
echo "OpenOCD does not exist: ${OPENOCD_PATH}/${OPENOCD_EXE}"
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -f ${OPENOCD_CFG} ]; then
|
||||
echo "OpenOCD config file does not exist: ${OPENOCD_CFG}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Starting OpenOCD"
|
||||
cd ${OPENOCD_PATH} || { echo "Failed to CD to ${OPENOCD_PATH}"; exit 1; }
|
||||
${OPENOCD_EXE} ${OPENOCD_ARGS} &
|
||||
echo "OpenOCD daemon started"
|
||||
ps -ef | grep openocd
|
||||
echo "In GDB: target remote localhost:3333"
|
Loading…
Reference in a new issue