TM4C123G LaunchPad: Add initialization logic for an external AT24 EEPROM. This is intended only to suppport testing of the Tiva I2C driver
This commit is contained in:
parent
98d9ceb582
commit
47c4ce5761
8 changed files with 549 additions and 27 deletions
|
|
@ -4,4 +4,43 @@
|
|||
#
|
||||
|
||||
if ARCH_BOARD_TM4C123G_LAUNCHPAD
|
||||
|
||||
config TM4C123G_LAUNCHPAD_AT24_BLOCKMOUNT
|
||||
bool "AT24 Serial EEPROM auto-mount"
|
||||
default n
|
||||
depends on NSH_ARCHINIT && TIVA_I2C0 && MTD_AT24XX
|
||||
---help---
|
||||
Automatically initialize the AT24 SPI EEPROM driver when NSH starts.
|
||||
|
||||
The Serial EEPROM was mounted on an external adaptor board and
|
||||
connected to the LaunchPad thusly:
|
||||
|
||||
- VCC -- VCC
|
||||
- GND -- GND
|
||||
- PB2 -- SCL
|
||||
- PB3 -- SDA
|
||||
|
||||
choice
|
||||
prompt "AT24 serial EPPROM configuration"
|
||||
default TM4C123G_LAUNCHPAD_AT24_FTL
|
||||
depends on TM4C123G_LAUNCHPAD_AT24_BLOCKMOUNT
|
||||
|
||||
config TM4C123G_LAUNCHPAD_AT24_FTL
|
||||
bool "Create AT24 block driver"
|
||||
---help---
|
||||
Create the MTD driver for the AT24 and "wrap" the AT24 as a standard
|
||||
block driver that could then, for example, be mounted using FAT or
|
||||
any other file system. Any file system may be used, but there will
|
||||
be no wear-leveling.
|
||||
|
||||
config TM4C123G_LAUNCHPAD_AT24_NXFFS
|
||||
bool "Create AT24 NXFFS file system"
|
||||
depends on FS_NXFFS
|
||||
---help---
|
||||
Create the MTD driver for the AT24 and mount the AT24 device as
|
||||
a wear-leveling, NuttX FLASH file system (NXFFS). The downside of
|
||||
NXFFS is that it can be very slow.
|
||||
|
||||
endchoice # AT24 serial EPPROM configuration
|
||||
|
||||
endif
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ Contents
|
|||
LEDs
|
||||
Serial Console
|
||||
USB Device Controller Functions
|
||||
AT24 Serial EEPROM
|
||||
I2C Tool
|
||||
Using OpenOCD and GDB with an FT2232 JTAG emulator
|
||||
TM4C123G LaunchPad Configuration Options
|
||||
Configurations
|
||||
|
|
@ -79,6 +81,152 @@ PIN SIGNAL(S) LanchPad Function
|
|||
31 PF3/CAN0TX/SSI1FSS/T1CCP1/TRCLK LED_G, GPIO, J4 pin 2
|
||||
05 PF4/T2CCP0 USR_SW1 (Low when pressed), GPIO, J4 pin 10
|
||||
|
||||
AT24 Serial EEPROM
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
AT24 Connections
|
||||
----------------
|
||||
|
||||
A AT24C512 Serial EEPPROM was used for tested I2C. There are no I2C
|
||||
devices on-board the Launchpad, but an external serial EEPROM module
|
||||
module was used.
|
||||
|
||||
The Serial EEPROM was mounted on an external adaptor board and connected
|
||||
to the LaunchPad thusly:
|
||||
|
||||
- VCC -- VCC
|
||||
- GND -- GND
|
||||
- PB2 -- SCL
|
||||
- PB3 -- SDA
|
||||
|
||||
Configuration Settings
|
||||
----------------------
|
||||
|
||||
The following configuration settings were used:
|
||||
|
||||
System Type -> Tiva/Stellaris Peripheral Support
|
||||
CONFIG_TIVA_I2C0=y : Enable I2C
|
||||
|
||||
System Type -> I2C device driver options
|
||||
TIVA_I2C_FREQUENCY=100000 : Select an I2C frequency
|
||||
|
||||
Device Drivers -> I2C Driver Support
|
||||
CONFIG_I2C=y : Enable I2C support
|
||||
CONFIG_I2C_TRANSFER=y : Driver supports the transfer() method
|
||||
CONFIG_I2C_WRITEREAD=y : Driver supports the writeread() method
|
||||
|
||||
Device Drivers -> Memory Technology Device (MTD) Support
|
||||
CONFIG_MTD=y : Enable MTD support
|
||||
CONFIG_MTD_AT24XX=y : Enable the AT24 driver
|
||||
CONFIG_AT24XX_SIZE=512 : Specifies the AT 24C512 part
|
||||
CONFIG_AT24XX_ADDR=0x53 : AT24 I2C address
|
||||
|
||||
Application Configuration -> NSH Library
|
||||
CONFIG_NSH_ARCHINIT=y : NSH board-initialization
|
||||
|
||||
File systems
|
||||
CONFIG_NXFFS=y : Enables the NXFFS file system
|
||||
CONFIG_NXFFS_PREALLOCATED=y : Required
|
||||
: Other defaults are probably OK
|
||||
|
||||
Board Selection
|
||||
CONFIG_TM4C123G_LAUNCHPAD_AT24_BLOCKMOUNT=y : Mounts AT24 for NSH
|
||||
CONFIG_TM4C123G_LAUNCHPAD_AT24_NXFFS=y : Mount the AT24 using NXFFS
|
||||
|
||||
You can then format the AT24 EEPROM for a FAT file system and mount the
|
||||
file system at /mnt/at24 using these NSH commands:
|
||||
|
||||
nsh> mkfatfs /dev/mtdblock0
|
||||
nsh> mount -t vfat /dev/mtdblock0 /mnt/at24
|
||||
|
||||
Then you an use the FLASH as a normal FAT file system:
|
||||
|
||||
nsh> echo "This is a test" >/mnt/at24/atest.txt
|
||||
nsh> ls -l /mnt/at24
|
||||
/mnt/at24:
|
||||
-rw-rw-rw- 16 atest.txt
|
||||
nsh> cat /mnt/at24/atest.txt
|
||||
This is a test
|
||||
|
||||
I2C Tool
|
||||
========
|
||||
|
||||
I2C Tool. NuttX supports an I2C tool at apps/system/i2c that can be used
|
||||
to peek and poke I2C devices. That tool can be enabled by setting the
|
||||
following:
|
||||
|
||||
System Type -> TIVA Peripheral Support
|
||||
CONFIG_TIVA_I2C0=y : Enable I2C0
|
||||
CONFIG_TIVA_I2C1=y : Enable I2C1
|
||||
CONFIG_TIVA_I2C2=y : Enable I2C2
|
||||
...
|
||||
|
||||
System Type -> I2C device driver options
|
||||
CONFIG_TIVA_I2C0_FREQUENCY=100000 : Select an I2C0 frequency
|
||||
CONFIG_TIVA_I2C1_FREQUENCY=100000 : Select an I2C1 frequency
|
||||
CONFIG_TIVA_I2C2_FREQUENCY=100000 : Select an I2C2 frequency
|
||||
...
|
||||
|
||||
Device Drivers -> I2C Driver Support
|
||||
CONFIG_I2C=y : Enable I2C support
|
||||
CONFIG_I2C_TRANSFER=y : Driver supports the transfer() method
|
||||
CONFIG_I2C_WRITEREAD=y : Driver supports the writeread() method
|
||||
|
||||
Application Configuration -> NSH Library
|
||||
CONFIG_SYSTEM_I2CTOOL=y : Enable the I2C tool
|
||||
CONFIG_I2CTOOL_MINBUS=0 : I2C0 has the minimum bus number 0
|
||||
CONFIG_I2CTOOL_MAXBUS=2 : I2C2 has the maximum bus number 2
|
||||
CONFIG_I2CTOOL_DEFFREQ=100000 : Pick a consistent frequency
|
||||
|
||||
The I2C tool has extensive help that can be accessed as follows:
|
||||
|
||||
nsh> i2c help
|
||||
Usage: i2c <cmd> [arguments]
|
||||
Where <cmd> is one of:
|
||||
|
||||
Show help : ?
|
||||
List busses : bus
|
||||
List devices : dev [OPTIONS] <first> <last>
|
||||
Read register : get [OPTIONS] [<repititions>]
|
||||
Show help : help
|
||||
Write register: set [OPTIONS] <value> [<repititions>]
|
||||
Verify access : verf [OPTIONS] [<value>] [<repititions>]
|
||||
|
||||
Where common "sticky" OPTIONS include:
|
||||
[-a addr] is the I2C device address (hex). Default: 03 Current: 03
|
||||
[-b bus] is the I2C bus number (decimal). Default: 0 Current: 0
|
||||
[-r regaddr] is the I2C device register address (hex). Default: 00 Current: 00
|
||||
[-w width] is the data width (8 or 16 decimal). Default: 8 Current: 8
|
||||
[-s|n], send/don't send start between command and data. Default: -n Current: -n
|
||||
[-i|j], Auto increment|don't increment regaddr on repititions. Default: NO Current: NO
|
||||
[-f freq] I2C frequency. Default: 100000 Current: 100000
|
||||
|
||||
NOTES:
|
||||
o Arguments are "sticky". For example, once the I2C address is
|
||||
specified, that address will be re-used until it is changed.
|
||||
|
||||
WARNING:
|
||||
o The I2C dev command may have bad side effects on your I2C devices.
|
||||
Use only at your own risk.
|
||||
|
||||
As an example, the I2C dev command can be used to list all devices
|
||||
responding on I2C0 (the default) like this:
|
||||
|
||||
nsh> i2c dev 0x03 0x77
|
||||
0 1 2 3 4 5 6 7 8 9 a b c d e f
|
||||
00: -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
10: -- -- -- -- -- -- -- -- -- -- 1a -- -- -- -- --
|
||||
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
30: -- -- -- -- -- -- -- -- -- 39 -- -- -- 3d -- --
|
||||
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
60: 60 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
70: -- -- -- -- -- -- -- --
|
||||
nsh>
|
||||
|
||||
NOTE: This is output from a different board and shows I2C
|
||||
devices responding at addresses 0x1a, 0x39, 0x3d, and 0x60.
|
||||
|
||||
Using OpenOCD and GDB with an FT2232 JTAG emulator
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
|
|
|||
|
|
@ -35,32 +35,38 @@
|
|||
|
||||
-include $(TOPDIR)/Make.defs
|
||||
|
||||
CFLAGS += -I$(TOPDIR)/sched
|
||||
CFLAGS += -I$(TOPDIR)/sched
|
||||
|
||||
ASRCS =
|
||||
AOBJS = $(ASRCS:.S=$(OBJEXT))
|
||||
CSRCS = tm4c_boot.c tm4c_ssi.c
|
||||
ASRCS =
|
||||
AOBJS = $(ASRCS:.S=$(OBJEXT))
|
||||
CSRCS = tm4c_boot.c tm4c_bringup.c tm4c_ssi.c
|
||||
|
||||
ifeq ($(CONFIG_ARCH_LEDS),y)
|
||||
CSRCS += tm4c_autoleds.c
|
||||
CSRCS += tm4c_autoleds.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_NSH_ARCHINIT),y)
|
||||
CSRCS += tm4c_nsh.c
|
||||
CSRCS += tm4c_nsh.c
|
||||
endif
|
||||
|
||||
COBJS = $(CSRCS:.c=$(OBJEXT))
|
||||
ifeq ($(CONFIG_MTD_AT24XX),y)
|
||||
ifeq ($(CONFIG_TIVA_I2C0),y)
|
||||
CSRCS += tm4c_at24.c
|
||||
endif
|
||||
endif
|
||||
|
||||
SRCS = $(ASRCS) $(CSRCS)
|
||||
OBJS = $(AOBJS) $(COBJS)
|
||||
COBJS = $(CSRCS:.c=$(OBJEXT))
|
||||
|
||||
SRCS = $(ASRCS) $(CSRCS)
|
||||
OBJS = $(AOBJS) $(COBJS)
|
||||
|
||||
ARCH_SRCDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src
|
||||
ifeq ($(WINTOOL),y)
|
||||
CFLAGS += -I "${shell cygpath -w $(ARCH_SRCDIR)/chip}" \
|
||||
-I "${shell cygpath -w $(ARCH_SRCDIR)/common}" \
|
||||
-I "${shell cygpath -w $(ARCH_SRCDIR)/armv7-m}"
|
||||
CFLAGS += -I "${shell cygpath -w $(ARCH_SRCDIR)/chip}" \
|
||||
-I "${shell cygpath -w $(ARCH_SRCDIR)/common}" \
|
||||
-I "${shell cygpath -w $(ARCH_SRCDIR)/armv7-m}"
|
||||
else
|
||||
CFLAGS += -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common -I$(ARCH_SRCDIR)/armv7-m
|
||||
CFLAGS += -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common -I$(ARCH_SRCDIR)/armv7-m
|
||||
endif
|
||||
|
||||
all: libboard$(LIBEXT)
|
||||
|
|
|
|||
|
|
@ -49,6 +49,9 @@
|
|||
/************************************************************************************
|
||||
* Definitions
|
||||
************************************************************************************/
|
||||
/* Configuration ********************************************************************/
|
||||
|
||||
#define HAVE_AT24 1
|
||||
|
||||
/* How many SSI modules does this chip support? */
|
||||
|
||||
|
|
@ -62,6 +65,57 @@
|
|||
# define CONFIG_SSI1_DISABLE 1
|
||||
#endif
|
||||
|
||||
/* AT24 Serial EEPROM
|
||||
*
|
||||
* A AT24C512 Serial EEPPROM was used for tested I2C. There are no I2C
|
||||
* devices on-board the Launchpad, but an external serial EEPROM module
|
||||
* module was used.
|
||||
*
|
||||
* The Serial EEPROM was mounted on an external adaptor board and connected
|
||||
* to the LaunchPad thusly:
|
||||
*
|
||||
* - VCC -- VCC
|
||||
* - GND -- GND
|
||||
* - PB2 -- SCL
|
||||
* - PB3 -- SDA
|
||||
*/
|
||||
|
||||
#define AT24_BUS 0
|
||||
#define AT24_MINOR 0
|
||||
|
||||
#if !defined(CONFIG_MTD_AT24XX) || !defined(CONFIG_TIVA_I2C0)
|
||||
# undef HAVE_AT24
|
||||
#endif
|
||||
|
||||
/* Can't support AT25 features if mountpoints are disabled or if we were not
|
||||
* asked to mount the AT25 part
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_DISABLE_MOUNTPOINT) || \
|
||||
!defined(CONFIG_TM4C123G_LAUNCHPAD_AT24_BLOCKMOUNT)
|
||||
# undef HAVE_AT24
|
||||
#endif
|
||||
|
||||
/* If we are going to mount the AT25, then they user must also have told
|
||||
* us what to do with it by setting one of these.
|
||||
*/
|
||||
|
||||
#ifndef CONFIG_FS_NXFFS
|
||||
# undef CONFIG_TM4C123G_LAUNCHPAD_AT24_NXFFS
|
||||
#endif
|
||||
|
||||
#if !defined(CONFIG_TM4C123G_LAUNCHPAD_AT24_FTL) && \
|
||||
!defined(CONFIG_TM4C123G_LAUNCHPAD_AT24_NXFFS)
|
||||
# undef HAVE_AT24
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_TM4C123G_LAUNCHPAD_AT24_FTL) && \
|
||||
defined(CONFIG_TM4C123G_LAUNCHPAD_AT24_NXFFS)
|
||||
# warning Both CONFIG_TM4C123G_LAUNCHPAD_AT24_FTL and CONFIG_TM4C123G_LAUNCHPAD_AT24_NXFFS are set
|
||||
# warning Ignoring CONFIG_TM4C123G_LAUNCHPAD_AT24_NXFFS
|
||||
# undef CONFIG_TM4C123G_LAUNCHPAD_AT24_NXFFS
|
||||
#endif
|
||||
|
||||
/* TM4C123G LaunchPad ***************************************************************/
|
||||
/* The TM4C123G LaunchPad has a single RGB LED. There is only one visible LED which
|
||||
* will vary in color. But, from the standpoint of the firmware, this appears as
|
||||
|
|
@ -147,6 +201,27 @@ void weak_function tm4c_ssiinitialize(void);
|
|||
void tm4c_ledinit(void);
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: tm4c_bringup
|
||||
*
|
||||
* Description:
|
||||
* Bring up board features
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int tm4c_bringup(void);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: tm4c_at24_automount
|
||||
*
|
||||
* Description:
|
||||
* Initialize and configure the AT24 serial EEPROM
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef HAVE_AT24
|
||||
int tm4c_at24_automount(int minor);
|
||||
#endif
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* __CONFIGS_TM4C123G_LAUNCHPAD_TM4C123G_LAUNCHPAD_H */
|
||||
|
||||
|
|
|
|||
156
configs/tm4c123g-launchpad/src/tm4c_at24.c
Normal file
156
configs/tm4c123g-launchpad/src/tm4c_at24.c
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
/****************************************************************************
|
||||
* config/sama5d3x-ek/src/tm4c_at24.c
|
||||
*
|
||||
* Copyright (C) 2014 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/* AT24 Serial EEPROM
|
||||
*
|
||||
* A AT24C512 Serial EEPPROM was used for tested I2C. There are no I2C
|
||||
* devices on-board the Launchpad, but an external serial EEPROM module
|
||||
* module was used.
|
||||
*
|
||||
* The Serial EEPROM was mounted on an external adaptor board and connected
|
||||
* to the LaunchPad thusly:
|
||||
*
|
||||
* - VCC -- VCC
|
||||
* - GND -- GND
|
||||
* - PB2 -- SCL
|
||||
* - PB3 -- SDA
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <sys/mount.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/i2c.h>
|
||||
#include <nuttx/mtd/mtd.h>
|
||||
#include <nuttx/fs/nxffs.h>
|
||||
|
||||
#include "tm4c123g-launchpad.h"
|
||||
|
||||
#ifdef HAVE_AT24
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-Processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: tm4c_at24_automount
|
||||
*
|
||||
* Description:
|
||||
* Initialize and configure the AT24 serial EEPROM
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int tm4c_at24_automount(int minor)
|
||||
{
|
||||
FAR struct i2c_dev_s *i2c;
|
||||
FAR struct mtd_dev_s *mtd;
|
||||
static bool initialized = false;
|
||||
int ret;
|
||||
|
||||
/* Have we already initialized? */
|
||||
|
||||
if (!initialized)
|
||||
{
|
||||
/* No.. Get the I2C bus driver */
|
||||
|
||||
i2c = up_i2cinitialize(AT24_BUS);
|
||||
if (!i2c)
|
||||
{
|
||||
syslog(LOG_ERR, "ERROR: Failed to initialize SPI%d\n", AT24_BUS);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* Now bind the I2C interface to the AT24 I2C EEPROM driver */
|
||||
|
||||
mtd = at24c_initialize(i2c);
|
||||
if (!mtd)
|
||||
{
|
||||
syslog(LOG_ERR,
|
||||
"ERROR: Failed to bind SPI%d to the AT24 EEPROM driver\n",
|
||||
AT24_BUS);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_TM4C123G_LAUNCHPAD_AT24_FTL)
|
||||
/* And finally, use the FTL layer to wrap the MTD driver as a block driver */
|
||||
|
||||
ret = ftl_initialize(AT24_MINOR, mtd);
|
||||
if (ret < 0)
|
||||
{
|
||||
syslog(LOG_ERR, "ERROR: Failed to initialize the FTL layer: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
#elif defined(CONFIG_TM4C123G_LAUNCHPAD_AT24_NXFFS)
|
||||
/* Initialize to provide NXFFS on the MTD interface */
|
||||
|
||||
ret = nxffs_initialize(mtd);
|
||||
if (ret < 0)
|
||||
{
|
||||
syslog(LOG_ERR, "ERROR: NXFFS initialization failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Mount the file system at /mnt/at24 */
|
||||
|
||||
ret = mount(NULL, "/mnt/at24", "nxffs", 0, NULL);
|
||||
if (ret < 0)
|
||||
{
|
||||
syslog(LOG_ERR, "ERROR: Failed to mount the NXFFS volume: %d\n", errno);
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
/* Now we are initialized */
|
||||
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
#endif /* HAVE_AT24 */
|
||||
|
|
@ -64,7 +64,7 @@
|
|||
*
|
||||
* Description:
|
||||
* All Tiva architectures must provide the following entry point. This entry
|
||||
* point is called early in the intitialization -- after all memory has been
|
||||
* point is called early in the initialization -- after all memory has been
|
||||
* configured and mapped but before any devices have been initialized.
|
||||
*
|
||||
************************************************************************************/
|
||||
|
|
@ -90,3 +90,25 @@ void tiva_boardinitialize(void)
|
|||
tm4c_ledinit();
|
||||
#endif
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_initialize
|
||||
*
|
||||
* Description:
|
||||
* If CONFIG_BOARD_INITIALIZE is selected, then an additional
|
||||
* initialization call will be performed in the boot-up sequence to a
|
||||
* function called board_initialize(). board_initialize() will be
|
||||
* called immediately after up_intiialize() 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_INITIALIZE
|
||||
void board_initialize(void)
|
||||
{
|
||||
/* Perform board initialization */
|
||||
|
||||
(void)tm4c_bringup();
|
||||
}
|
||||
#endif /* CONFIG_BOARD_INITIALIZE */
|
||||
|
|
|
|||
80
configs/tm4c123g-launchpad/src/tm4c_bringup.c
Normal file
80
configs/tm4c123g-launchpad/src/tm4c_bringup.c
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
/****************************************************************************
|
||||
* config/tm4c123g-launchpad/src/tm4c_bringup.c
|
||||
*
|
||||
* Copyright (C) 2014 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <syslog.h>
|
||||
|
||||
#include "tm4c123g-launchpad.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-Processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: tm4c_bringup
|
||||
*
|
||||
* Description:
|
||||
* Bring up board features
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int tm4c_bringup(void)
|
||||
{
|
||||
#ifdef HAVE_AT24
|
||||
int ret;
|
||||
|
||||
/* Initialize the AT24 driver */
|
||||
|
||||
ret = tm4c_at24_automount(AT24_MINOR);
|
||||
if (ret < 0)
|
||||
{
|
||||
syslog(LOG_ERR, "ERROR: tm4c_at24_automount failed: %d\n", ret);
|
||||
}
|
||||
|
||||
return ret;
|
||||
#else
|
||||
return OK;
|
||||
#endif /* HAVE_AT24 */
|
||||
}
|
||||
|
|
@ -39,24 +39,12 @@
|
|||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <syslog.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <nuttx/spi/spi.h>
|
||||
#include <nuttx/mmcsd.h>
|
||||
#include "tm4c123g-launchpad.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-Processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Configuration ************************************************************/
|
||||
|
||||
/* Can't support USB features if USB is not enabled */
|
||||
|
||||
#ifndef CONFIG_USBDEV
|
||||
# undef NSH_HAVEUSBDEV
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
|
|
@ -72,5 +60,13 @@
|
|||
|
||||
int nsh_archinitialize(void)
|
||||
{
|
||||
/* If CONFIG_BOARD_INITIALIZE is selected then board initialization was
|
||||
* already performed in board_initialize.
|
||||
*/
|
||||
|
||||
#ifndef CONFIG_BOARD_INITIALIZE
|
||||
return tm4c_bringup();
|
||||
#else
|
||||
return OK;
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue