Add support for the SAM4L Xplained Pro I/O1 module
This commit is contained in:
parent
aaf102b5c8
commit
44fe999aea
12
ChangeLog
12
ChangeLog
@ -4966,3 +4966,15 @@
|
||||
files): Add support for a generic Windows EABI toolchain (2013-6-13).
|
||||
|
||||
6.29 2013-xx-xx Gregory Nutt <gnutt@nuttx.org>
|
||||
|
||||
* arch/arm/src/sam34/chip/sam4l_pinmap.h: Change naming of some pin
|
||||
configurations to match names used with other SAM part (2013-6-15).
|
||||
* arch/arm/src/sam34/sam4l_clockconfig.c: Corrected some typos
|
||||
(2013-6-15).
|
||||
* configs/sam4l-xplained/src/sam_buttons.c: Eliminate a warning
|
||||
(2013-6-15).
|
||||
* configs/sam4l-xplained/src/sam_mmcsd.c, sam_nsh.c, sam_spi.c,
|
||||
sam3u-ek.h, Kconfig, Makefile, sam4l-xplained.h,
|
||||
configs/sam4l-xplained/README.txt, and
|
||||
configs/sam4l-xplained/include/board.h: Add support for the SPI-
|
||||
based SD card on the I/O1 module (2013-6-15).
|
||||
|
@ -2556,13 +2556,6 @@ nsh>
|
||||
USB device (and possible LCD support).
|
||||
These extensions may or may not happen soon as my plate is kind of full now.
|
||||
</p>
|
||||
<blockquote><small>
|
||||
<b>NuttX-6.28 Update</b>.
|
||||
I just recently got a new SAM3U-EK board after bricking mine a year or so ago.
|
||||
In the NuttX-6.28 release, there are some problems with the SAM3U-EK LCD and touchscreen.
|
||||
I do not know if this is a consequence of board differences, changes in NuttX-6.28 for the SAM4S and SAM4L which affect the same code, or just "bit-rot" from disuse.
|
||||
I hope to have these issues resolved for NuttX-6.29.
|
||||
</small></blockquote>
|
||||
</ul>
|
||||
<p>
|
||||
<b>Development Environments:</b>
|
||||
|
@ -386,36 +386,36 @@
|
||||
|
||||
/* Serial Peripheral Interface */
|
||||
|
||||
#define GPIO_SPI_MISO_1 (GPIO_FUNCA | GPIO_PORTA | GPIO_PIN21)
|
||||
#define GPIO_SPI_MISO_2 (GPIO_FUNCA | GPIO_PORTA | GPIO_PIN27)
|
||||
#define GPIO_SPI_MISO_3 (GPIO_FUNCA | GPIO_PORTC | GPIO_PIN4)
|
||||
#define GPIO_SPI_MISO_4 (GPIO_FUNCB | GPIO_PORTA | GPIO_PIN3)
|
||||
#define GPIO_SPI_MISO_5 (GPIO_FUNCB | GPIO_PORTB | GPIO_PIN14)
|
||||
#define GPIO_SPI_MISO_6 (GPIO_FUNCB | GPIO_PORTC | GPIO_PIN28)
|
||||
#define GPIO_SPI_MOSI_1 (GPIO_FUNCA | GPIO_PORTA | GPIO_PIN22)
|
||||
#define GPIO_SPI_MOSI_2 (GPIO_FUNCA | GPIO_PORTA | GPIO_PIN28)
|
||||
#define GPIO_SPI_MOSI_3 (GPIO_FUNCA | GPIO_PORTC | GPIO_PIN5)
|
||||
#define GPIO_SPI_MOSI_4 (GPIO_FUNCB | GPIO_PORTB | GPIO_PIN15)
|
||||
#define GPIO_SPI_MOSI_5 (GPIO_FUNCB | GPIO_PORTC | GPIO_PIN29)
|
||||
#define GPIO_SPI_NPCS0_1 (GPIO_FUNCA | GPIO_PORTA | GPIO_PIN24)
|
||||
#define GPIO_SPI_NPCS0_2 (GPIO_FUNCA | GPIO_PORTA | GPIO_PIN30)
|
||||
#define GPIO_SPI_NPCS0_3 (GPIO_FUNCA | GPIO_PORTC | GPIO_PIN3)
|
||||
#define GPIO_SPI_NPCS0_4 (GPIO_FUNCB | GPIO_PORTA | GPIO_PIN2)
|
||||
#define GPIO_SPI_NPCS0_5 (GPIO_FUNCB | GPIO_PORTC | GPIO_PIN31)
|
||||
#define GPIO_SPI_NPCS1_1 (GPIO_FUNCA | GPIO_PORTA | GPIO_PIN31)
|
||||
#define GPIO_SPI_NPCS1_2 (GPIO_FUNCA | GPIO_PORTC | GPIO_PIN2)
|
||||
#define GPIO_SPI_NPCS1_3 (GPIO_FUNCB | GPIO_PORTB | GPIO_PIN13)
|
||||
#define GPIO_SPI_NPCS1_4 (GPIO_FUNCC | GPIO_PORTA | GPIO_PIN13)
|
||||
#define GPIO_SPI_NPCS2_1 (GPIO_FUNCA | GPIO_PORTC | GPIO_PIN0)
|
||||
#define GPIO_SPI_NPCS2_2 (GPIO_FUNCB | GPIO_PORTB | GPIO_PIN11)
|
||||
#define GPIO_SPI_NPCS2_3 (GPIO_FUNCC | GPIO_PORTA | GPIO_PIN14)
|
||||
#define GPIO_SPI_NPCS3_1 (GPIO_FUNCA | GPIO_PORTC | GPIO_PIN1)
|
||||
#define GPIO_SPI_NPCS3_2 (GPIO_FUNCB | GPIO_PORTB | GPIO_PIN12)
|
||||
#define GPIO_SPI_NPCS3_3 (GPIO_FUNCC | GPIO_PORTA | GPIO_PIN15)
|
||||
#define GPIO_SPI_SCK_1 (GPIO_FUNCA | GPIO_PORTA | GPIO_PIN23)
|
||||
#define GPIO_SPI_SCK_2 (GPIO_FUNCA | GPIO_PORTA | GPIO_PIN29)
|
||||
#define GPIO_SPI_SCK_3 (GPIO_FUNCA | GPIO_PORTC | GPIO_PIN6)
|
||||
#define GPIO_SPI_SCK_4 (GPIO_FUNCB | GPIO_PORTC | GPIO_PIN30)
|
||||
#define GPIO_SPI0_MISO_1 (GPIO_FUNCA | GPIO_PORTA | GPIO_PIN21)
|
||||
#define GPIO_SPI0_MISO_2 (GPIO_FUNCA | GPIO_PORTA | GPIO_PIN27)
|
||||
#define GPIO_SPI0_MISO_3 (GPIO_FUNCA | GPIO_PORTC | GPIO_PIN4)
|
||||
#define GPIO_SPI0_MISO_4 (GPIO_FUNCB | GPIO_PORTA | GPIO_PIN3)
|
||||
#define GPIO_SPI0_MISO_5 (GPIO_FUNCB | GPIO_PORTB | GPIO_PIN14)
|
||||
#define GPIO_SPI0_MISO_6 (GPIO_FUNCB | GPIO_PORTC | GPIO_PIN28)
|
||||
#define GPIO_SPI0_MOSI_1 (GPIO_FUNCA | GPIO_PORTA | GPIO_PIN22)
|
||||
#define GPIO_SPI0_MOSI_2 (GPIO_FUNCA | GPIO_PORTA | GPIO_PIN28)
|
||||
#define GPIO_SPI0_MOSI_3 (GPIO_FUNCA | GPIO_PORTC | GPIO_PIN5)
|
||||
#define GPIO_SPI0_MOSI_4 (GPIO_FUNCB | GPIO_PORTB | GPIO_PIN15)
|
||||
#define GPIO_SPI0_MOSI_5 (GPIO_FUNCB | GPIO_PORTC | GPIO_PIN29)
|
||||
#define GPIO_SPI0_NPCS0_1 (GPIO_FUNCA | GPIO_PORTA | GPIO_PIN24)
|
||||
#define GPIO_SPI0_NPCS0_2 (GPIO_FUNCA | GPIO_PORTA | GPIO_PIN30)
|
||||
#define GPIO_SPI0_NPCS0_3 (GPIO_FUNCA | GPIO_PORTC | GPIO_PIN3)
|
||||
#define GPIO_SPI0_NPCS0_4 (GPIO_FUNCB | GPIO_PORTA | GPIO_PIN2)
|
||||
#define GPIO_SPI0_NPCS0_5 (GPIO_FUNCB | GPIO_PORTC | GPIO_PIN31)
|
||||
#define GPIO_SPI0_NPCS1_1 (GPIO_FUNCA | GPIO_PORTA | GPIO_PIN31)
|
||||
#define GPIO_SPI0_NPCS1_2 (GPIO_FUNCA | GPIO_PORTC | GPIO_PIN2)
|
||||
#define GPIO_SPI0_NPCS1_3 (GPIO_FUNCB | GPIO_PORTB | GPIO_PIN13)
|
||||
#define GPIO_SPI0_NPCS1_4 (GPIO_FUNCC | GPIO_PORTA | GPIO_PIN13)
|
||||
#define GPIO_SPI0_NPCS2_1 (GPIO_FUNCA | GPIO_PORTC | GPIO_PIN0)
|
||||
#define GPIO_SPI0_NPCS2_2 (GPIO_FUNCB | GPIO_PORTB | GPIO_PIN11)
|
||||
#define GPIO_SPI0_NPCS2_3 (GPIO_FUNCC | GPIO_PORTA | GPIO_PIN14)
|
||||
#define GPIO_SPI0_NPCS3_1 (GPIO_FUNCA | GPIO_PORTC | GPIO_PIN1)
|
||||
#define GPIO_SPI0_NPCS3_2 (GPIO_FUNCB | GPIO_PORTB | GPIO_PIN12)
|
||||
#define GPIO_SPI0_NPCS3_3 (GPIO_FUNCC | GPIO_PORTA | GPIO_PIN15)
|
||||
#define GPIO_SPI0_SPCK_1 (GPIO_FUNCA | GPIO_PORTA | GPIO_PIN23)
|
||||
#define GPIO_SPI0_SPCK_2 (GPIO_FUNCA | GPIO_PORTA | GPIO_PIN29)
|
||||
#define GPIO_SPI0_SPCK_3 (GPIO_FUNCA | GPIO_PORTC | GPIO_PIN6)
|
||||
#define GPIO_SPI0_SPCK_4 (GPIO_FUNCB | GPIO_PORTC | GPIO_PIN30)
|
||||
|
||||
/* Timer/Counters */
|
||||
|
||||
|
@ -425,11 +425,11 @@
|
||||
# define SAM_DFLLO_REFCLK SCIF_GCCTRL_OSCSEL_RCSYS
|
||||
# elif defined(BOARD_DFLL0_SOURCE_OSC32K)
|
||||
# define SAM_DFLLO_REFCLK SCIF_GCCTRL_OSCSEL_OSC32K
|
||||
# elif define(BOARD_DFLL0_SOURCE_OSC0)
|
||||
# elif defined(BOARD_DFLL0_SOURCE_OSC0)
|
||||
# define SAM_DFLLO_REFCLK SCIF_GCCTRL_OSCSEL_OSC0
|
||||
# elif define(BOARD_DFLL0_SOURCE_RC80M)
|
||||
# elif defined(BOARD_DFLL0_SOURCE_RC80M)
|
||||
# define SAM_DFLLO_REFCLK SCIF_GCCTRL_OSCSEL_RC80M
|
||||
# elif define(BOARD_DFLL0_SOURCE_RC32K)
|
||||
# elif defined(BOARD_DFLL0_SOURCE_RC32K)
|
||||
# define SAM_DFLLO_REFCLK SCIF_GCCTRL_OSCSEL_RC32K
|
||||
# else
|
||||
# error No DFLL0 source for reference clock defined
|
||||
|
@ -63,7 +63,6 @@ fi
|
||||
# the Atollic bin path because there is are binaries named gcc.exe and g++.exe
|
||||
# at those locations as well.
|
||||
#export TOOLCHAIN_BIN="/usr/bin:/cygdrive/c/Program Files (x86)/Atollic/TrueSTUDIO for ARM Pro 2.3.0/ARMTools/bin"
|
||||
#export TOOLCHAIN_BIN="/usr/bin:/cygdrive/c/Program Files (x86)/Atollic/TrueSTUDIO for STMicroelectronics STM32 Lite 2.3.0/ARMTools/bin"
|
||||
|
||||
# This is the Cygwin path to the location where I build the buildroot
|
||||
# toolchain.
|
||||
|
@ -213,7 +213,7 @@
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
extern void weak_function sam_spiinitialize(void);
|
||||
void weak_function sam_spiinitialize(void);
|
||||
|
||||
/************************************************************************************
|
||||
* Name: sam_usbinitialize
|
||||
@ -223,7 +223,7 @@ extern void weak_function sam_spiinitialize(void);
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
extern void weak_function sam_usbinitialize(void);
|
||||
void weak_function sam_usbinitialize(void);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: sam_hsmciinit
|
||||
@ -234,7 +234,7 @@ extern void weak_function sam_usbinitialize(void);
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_SAM34_HSMCI
|
||||
extern int weak_function sam_hsmciinit(void);
|
||||
int weak_function sam_hsmciinit(void);
|
||||
#else
|
||||
# define sam_hsmciinit()
|
||||
#endif
|
||||
@ -256,7 +256,7 @@ void up_ledinit(void);
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_SAM34_HSMCI
|
||||
extern bool sam_cardinserted(unsigned char slot);
|
||||
bool sam_cardinserted(unsigned char slot);
|
||||
#else
|
||||
# define sam_cardinserted(slot) (false)
|
||||
#endif
|
||||
@ -270,7 +270,7 @@ extern bool sam_cardinserted(unsigned char slot);
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_SAM34_HSMCI
|
||||
extern bool sam_writeprotected(unsigned char slot);
|
||||
bool sam_writeprotected(unsigned char slot);
|
||||
#else
|
||||
# define sam_writeprotected(slot) (false)
|
||||
#endif
|
||||
|
@ -4,4 +4,43 @@
|
||||
#
|
||||
|
||||
if ARCH_BOARD_SAM4L_XPLAINED
|
||||
|
||||
menu "SAM4L Xplained Pro Modules"
|
||||
|
||||
config SAM4L_XPLAINED_IOMODULE
|
||||
bool "I/O1 Module"
|
||||
default n
|
||||
---help---
|
||||
The I/O 1 module is attached. This module provides an MMC/SD card
|
||||
slot.
|
||||
|
||||
if SAM4L_XPLAINED_IOMODULE
|
||||
choice
|
||||
prompt "I/O1 Module Location"
|
||||
default SAM4L_XPLAINED_IOMODULE_EXT1
|
||||
|
||||
config SAM4L_XPLAINED_IOMODULE_EXT1
|
||||
bool "EXT1"
|
||||
|
||||
config SAM4L_XPLAINED_IOMODULE_EXT2
|
||||
bool "EXT2"
|
||||
|
||||
endchoice
|
||||
endif
|
||||
|
||||
config SAM4L_XPLAINED_OLED1MODULE
|
||||
bool "OLED1 Module"
|
||||
default n
|
||||
---help---
|
||||
The OLED 1 module is attached. This module provides an OLED plus 3
|
||||
additional switches and 3 additional LEDs.
|
||||
|
||||
config SAM4L_XPLAINED_SLCD1MODULE
|
||||
bool "SLCD1 Module"
|
||||
default n
|
||||
---help---
|
||||
The SLCD 1 module is attached. This module provides a segment LCD
|
||||
that connects directly to the "EXT5 SEGMENT LCD" connector
|
||||
|
||||
endmenu
|
||||
endif
|
||||
|
@ -3,11 +3,22 @@ README
|
||||
|
||||
This README discusses issues unique to NuttX configurations for the
|
||||
Atmel SAM4L Xplained Pro development board. This board features the
|
||||
ATSAM4LC4C MCU
|
||||
ATSAM4LC4C MCU.
|
||||
|
||||
The SAM4L Xplained Pro Starter Kit is bundled with four modules:
|
||||
|
||||
1) I/O1 - An MMC/SD card slot, PWM LED control, ADC light sensor, UART
|
||||
loopback, TWI AT30TSE758 Temperature sensor.
|
||||
2) OLED1 - An OLED plus 3 additional switches and 3 additional LEDs
|
||||
3) SLCD1 - A segment LCD that connects directly to the "EXT5 SEGMENT LCD"
|
||||
connector
|
||||
4) PROTO1 - A prototyping board with logic on board (other than power-related
|
||||
logic).
|
||||
|
||||
Contents
|
||||
^^^^^^^^
|
||||
|
||||
- Modules
|
||||
- Development Environment
|
||||
- GNU Toolchain Options
|
||||
- IDEs
|
||||
@ -19,6 +30,123 @@ Contents
|
||||
- SAM4L Xplained Pro-specific Configuration Options
|
||||
- Configurations
|
||||
|
||||
Modules
|
||||
^^^^^^^
|
||||
The SAM4L Xplained Pro Starter Kit is bundled with four modules:
|
||||
|
||||
I/O1
|
||||
----
|
||||
The primary function of this module is to provide SD card support, but
|
||||
the full list of modules features include:
|
||||
|
||||
- microSD card connector (SPI interface)
|
||||
- PWM (LED control)
|
||||
- ADC (light sensor)
|
||||
- UART loopback
|
||||
- TWI AT30TSE758 Temperature sensor with EEPROM
|
||||
|
||||
SPI is available on two of the SAM4L Xplained connectors, EXT1 and EXT2.
|
||||
They mate with the I/O1 connector as indicated in this table.
|
||||
|
||||
I/O1 Connector
|
||||
--------------
|
||||
I/O1 EXT1 EXT2 Other use of either pin
|
||||
----------------- -------------------- -------------------- ------------------------------------
|
||||
1 ID 1 1
|
||||
2 GND 2 GND 2
|
||||
3 LIGHTSENSOR 3 PA04 ADCIFE/AD0 3 PA07 ADCIFE/AD2
|
||||
4 LP_OUT 4 PA05 ADCIFE/AD1 4 PB02 ADCIFE/AD3
|
||||
5 GPIO1 5 PB12 GPIO 5 PC08 GPIO PB12 and PC8 on EXT5
|
||||
6 GPIO2 6 PC02 GPIO 6 PB10 GPIO PB10 on EXT5
|
||||
7 LED 7 PC00 TC/1/A0 7 PC04 TC/1/A2
|
||||
8 LP_IN 8 PC01 TC/1/B0 8 PC05 TC/1/B2 PC05 on EXT5
|
||||
9 TEMP_ALERT 9 PC25 EIC/EXTINT2 9 PC06 EIC/EXTINT8 PC25 on EXT5
|
||||
10 microSD_DETECT 10 PB13 SPI/NPCS1 10 PC09 GPIO PB13 on EXT5
|
||||
11 TWI SDA 11 PA23 TWIMS/0/TWD 11 PB14 TWIMS/3/TWD PB14 on EXT3&4, PA23 and PB14 on EXT5
|
||||
12 TWI SCL 12 PA24 TWIMS/0/TWCK 12 PB15 TWIMS/3/TWCK PB15 on EXT3&4, PA24 and PB15 on EXT5
|
||||
13 UART RX 13 PB00 USART/0/RXD 13 PC26 USART/1/RXD PB00 on EXT4, PC26 on EXT3&5
|
||||
14 UART TX 14 PB01 USART/0/TXD 14 PC27 USART/1/TXD PB01 on EXT4, PC27 on EXT3&5
|
||||
15 microSD_SS 15 PC03 SPI/NPCS0 15 PB11 SPI/NPCS2 PB11 on EXT5
|
||||
16 SPI_MOSI 16 PA22 SPI/MOSI 16 PA22 SPI/MOSI PA22 on EXT5
|
||||
17 SPI_MISO 17 PA21 SPI/MISO 17 PA21 SPI/MISO PA21 on EXT5
|
||||
18 SPI_SCK 18 PC30 SPI/SCK 18 PC30 SPI/SCK PC30 on EXT5
|
||||
19 GND 19 GND GND
|
||||
20 VCC 20 VCC VCC
|
||||
|
||||
The mapping between the I/O1 pins and the SD connector are shown in the
|
||||
following table.
|
||||
|
||||
SD Card Connection
|
||||
------------------
|
||||
I/O1 SD PIN Description
|
||||
---- ---- --- -------------------------------------------------
|
||||
D2 1 Data line 2 (not used)
|
||||
15 D3 2 Data line 3. Active low chip select, pulled high
|
||||
16 CMD 3 Command line, connected to SPI_MOSI.
|
||||
20 VDD 4
|
||||
18 CLK 5 Clock line, connected to SPI_SCK.
|
||||
2/19 GND 6
|
||||
17 D0 7 Data line 0, connected to SPI_MISO.
|
||||
D1 8 Data line 1 (not used)
|
||||
10 SW_A 9 Card detect
|
||||
2/19 SW_B 10 GND
|
||||
|
||||
Card Detect
|
||||
-----------
|
||||
When a microSD card is put into the connector SW_A and SW_B are short-
|
||||
circuited. SW_A is connected to the microSD_DETECT signal. To use this
|
||||
as a card indicator remember to enable internal pullup in the target
|
||||
device.
|
||||
|
||||
GPIOs
|
||||
-----
|
||||
So all that is required to connect the SD is configure the SPI
|
||||
|
||||
PIN EXT1 EXT2 Description
|
||||
--- -------------- --------------- -------------------------------------
|
||||
15 PC03 SPI/NPCS0 PB11 SPI/NPCS2 Active low chip select OUTPUT, pulled
|
||||
high on board.
|
||||
10 PB13 SPI/NPCS1 10 PC09 GPIO Active low card detect INPUT, must
|
||||
use internal pull-up.
|
||||
|
||||
Configuration Options:
|
||||
----------------------
|
||||
CONFIG_SAM4L_XPLAINED_IOMODULE=y : Informs the system that the
|
||||
I/O1 module is installed
|
||||
CONFIG_SAM4L_XPLAINED_IOMODULE_EXT1=y : The module is installed in EXT1
|
||||
CONFIG_SAM4L_XPLAINED_IOMODULE_EXT2=y : The mdoule is installed in EXT2
|
||||
|
||||
NOTE: As of this writing, only the SD card slot is supported in the I/O1
|
||||
module.
|
||||
|
||||
OLED1
|
||||
-----
|
||||
This module provides an OLED plus 3 additional switches and 3 additional\
|
||||
LEDs.
|
||||
|
||||
Configuration Options:
|
||||
----------------------
|
||||
CONFIG_SAM4L_XPLAINED_OLED1MODULE=y : Informs the system that the
|
||||
I/O1 module is installed
|
||||
|
||||
NOTE: As of this writing, the OLED1 module is not supported.
|
||||
|
||||
SLCD1
|
||||
-----
|
||||
This module provides a A segment LCD that connects directly to the "EXT5 SEGMENT LCD"
|
||||
connector
|
||||
Configuration Options:
|
||||
----------------------
|
||||
CONFIG_SAM4L_XPLAINED_SLCD1MODULE=y : Informs the system that the
|
||||
I/O1 module is installed
|
||||
|
||||
NOTE: As of this writing, the SLCD1 module is not supported.
|
||||
|
||||
PROTO1
|
||||
------
|
||||
A prototyping board with logic on board (other than power-related logic).
|
||||
There is no built-in support for the PROTO1 module.
|
||||
|
||||
Development Environment
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@ -548,4 +676,46 @@ Configuration sub-directories
|
||||
NOTES:
|
||||
|
||||
nsh:
|
||||
This configuration directory will built the NuttShell. See NOTES above.
|
||||
This configuration directory will built the NuttShell. See NOTES above
|
||||
and below:
|
||||
|
||||
NOTE:
|
||||
If the I/O1 module is connected to the SAM4L Xplained Pro, then support
|
||||
for the SD card slot can be enabled by making the following changes
|
||||
to the configuration:
|
||||
|
||||
File Systems:
|
||||
CONFIG_FS_FAT=y : Enable the FAT file system
|
||||
CONFIG_FAT_LCNAMES=y : Enable upper/lower case 8.3 file names (Optional, see below)
|
||||
CONFIG_FAT_LFN=y : Enable long file named (Optional, see below)
|
||||
CONFIG_FAT_MAXFNAME=32 : Maximum supported file name length
|
||||
|
||||
There are issues related to patents that Microsoft holds on FAT long
|
||||
file name technologies. See the top level COPYING file for further
|
||||
details.
|
||||
|
||||
System Type -> Peripherals:
|
||||
CONFIG_SAM34_SPI=y : Enable the SAM4L SPI peripheral
|
||||
|
||||
Board Selection -> Common Board Options
|
||||
CONFIG_NSH_MMCSDSLOTNO=0 : Only one slot, slot 0
|
||||
CONFIG_NSH_MMCSDSPIPORTNO=0 : Only one SPI port, port 0
|
||||
|
||||
Board Selection -> SAM4L Xplained Pro Modules
|
||||
CONFIG_SAM4L_XPLAINED_IOMODULE=y : I/O1 module is connected
|
||||
CONFIG_SAM4L_XPLAINED_IOMODULE_EXT1=y : In EXT1, or EXT2
|
||||
CONFIG_SAM4L_XPLAINED_IOMODULE_EXT2=y
|
||||
|
||||
Device Drivers
|
||||
CONFIG_SPI=y : Enable SPI support
|
||||
CONFIG_SPI_EXCHANGE=y : The exchang() method is supported
|
||||
|
||||
CONFIG_MMCSD=y : Enable MMC/SD support
|
||||
CONFIG_MMCSD_NSLOTS=1 : Only one MMC/SD card slot
|
||||
CONFIG_MMCSD_MULTIBLOCK_DISABLE=y : I tested this way, but this may not be required
|
||||
CONFIG_MMCSD_HAVECARDDETECT=y : I/O1 module as a card detect GPIO
|
||||
CONFIG_MMCSD_SPI=y : Use the SPI interface to the MMC/SD card
|
||||
CONFIG_MMCSD_SPICLOCK=20000000 : This is a guess for the optimal MMC/SD frequency
|
||||
|
||||
Application Configuration -> NSH Library
|
||||
CONFIG_NSH_ARCHINIT=y : Board has architecture-specific initialization
|
||||
|
@ -276,6 +276,17 @@
|
||||
#define GPIO_USART1_RXD GPIO_USART1_RXD_2
|
||||
#define GPIO_USART1_TXD GPIO_USART1_TXD_2
|
||||
|
||||
/* SPI pins are brought out on EXT1 and EXT2 as:
|
||||
*
|
||||
* PA22 SPI/MOSI
|
||||
* PA21 SPI/MISO
|
||||
* PC30 SPI/SCK
|
||||
*/
|
||||
|
||||
#define GPIO_SPI0_MISO GPIO_SPI0_MISO_1
|
||||
#define GPIO_SPI0_MOSI GPIO_SPI0_MOSI_1
|
||||
#define GPIO_SPI0_SPCK GPIO_SPI0_SPCK_4
|
||||
|
||||
/************************************************************************************
|
||||
* Public Data
|
||||
************************************************************************************/
|
||||
|
@ -32,7 +32,6 @@
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
|
||||
|
||||
if [ "$_" = "$0" ] ; then
|
||||
echo "You must source this script, not run it!" 1>&2
|
||||
exit 1
|
||||
@ -48,11 +47,23 @@ if [ -z "${PATH_ORIG}" ]; then
|
||||
export PATH_ORIG="${PATH}"
|
||||
fi
|
||||
|
||||
# This is the Cygwin path to the location where I installed the Atmel GCC
|
||||
# toolchain under Windows. You will also have to edit this if you install
|
||||
# this toolchain in any other location
|
||||
#export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/Atmel/Atmel Toolchain/ARM GCC/Native/4.7.3.99/arm-gnu-toolchain/bin"
|
||||
|
||||
# This is the Cygwin path to the location where I installed the CodeSourcery
|
||||
# toolchain under windows. You will also have to edit this if you install
|
||||
# the CodeSourcery toolchain in any other location
|
||||
#export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/CodeSourcery/Sourcery G++ Lite/bin"
|
||||
|
||||
# These are the Cygwin paths to the locations where I installed the Atollic
|
||||
# toolchain under windows. You will also have to edit this if you install
|
||||
# the Atollic toolchain in any other location. /usr/bin is added before
|
||||
# the Atollic bin path because there is are binaries named gcc.exe and g++.exe
|
||||
# at those locations as well.
|
||||
#export TOOLCHAIN_BIN="/usr/bin:/cygdrive/c/Program Files (x86)/Atollic/TrueSTUDIO for ARM Pro 2.3.0/ARMTools/bin"
|
||||
|
||||
# This is the Cygwin path to the location where I build the buildroot
|
||||
# toolchain.
|
||||
export TOOLCHAIN_BIN="${WD}/../misc/buildroot/build_arm_nofpu/staging_dir/bin"
|
||||
|
@ -32,7 +32,6 @@
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
|
||||
|
||||
if [ "$_" = "$0" ] ; then
|
||||
echo "You must source this script, not run it!" 1>&2
|
||||
exit 1
|
||||
@ -48,11 +47,23 @@ if [ -z "${PATH_ORIG}" ]; then
|
||||
export PATH_ORIG="${PATH}"
|
||||
fi
|
||||
|
||||
# This is the Cygwin path to the location where I installed the Atmel GCC
|
||||
# toolchain under Windows. You will also have to edit this if you install
|
||||
# this toolchain in any other location
|
||||
#export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/Atmel/Atmel Toolchain/ARM GCC/Native/4.7.3.99/arm-gnu-toolchain/bin"
|
||||
|
||||
# This is the Cygwin path to the location where I installed the CodeSourcery
|
||||
# toolchain under windows. You will also have to edit this if you install
|
||||
# the CodeSourcery toolchain in any other location
|
||||
#export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/CodeSourcery/Sourcery G++ Lite/bin"
|
||||
|
||||
# These are the Cygwin paths to the locations where I installed the Atollic
|
||||
# toolchain under windows. You will also have to edit this if you install
|
||||
# the Atollic toolchain in any other location. /usr/bin is added before
|
||||
# the Atollic bin path because there is are binaries named gcc.exe and g++.exe
|
||||
# at those locations as well.
|
||||
#export TOOLCHAIN_BIN="/usr/bin:/cygdrive/c/Program Files (x86)/Atollic/TrueSTUDIO for ARM Pro 2.3.0/ARMTools/bin"
|
||||
|
||||
# This is the Cygwin path to the location where I build the buildroot
|
||||
# toolchain.
|
||||
export TOOLCHAIN_BIN="${WD}/../misc/buildroot/build_arm_nofpu/staging_dir/bin"
|
||||
|
@ -40,7 +40,11 @@ CFLAGS += -I$(TOPDIR)/sched
|
||||
ASRCS =
|
||||
AOBJS = $(ASRCS:.S=$(OBJEXT))
|
||||
|
||||
CSRCS = sam_boot.c sam_spi.c
|
||||
CSRCS = sam_boot.c
|
||||
|
||||
ifeq ($(CONFIG_SAM34_SPI),y)
|
||||
CSRCS += sam_spi.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_HAVE_CXX),y)
|
||||
CSRCS += sam_cxxinitialize.c
|
||||
@ -56,6 +60,14 @@ ifeq ($(CONFIG_ARCH_BUTTONS),y)
|
||||
CSRCS += sam_buttons.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_NSH_ARCHINIT),y)
|
||||
CSRCS += sam_nsh.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_SAM4L_XPLAINED_IOMODULE),y)
|
||||
CSRCS += sam_mmcsd.c
|
||||
endif
|
||||
|
||||
COBJS = $(CSRCS:.c=$(OBJEXT))
|
||||
|
||||
SRCS = $(ASRCS) $(CSRCS)
|
||||
|
@ -99,10 +99,54 @@
|
||||
* PC24 SW0
|
||||
*/
|
||||
|
||||
#define GPIO_SW0 (GPIO_INPUT | GPIO_PULL_UP | GPIO_GLITCH_FILTER | \
|
||||
#define GPIO_SW0 (GPIO_INTERRUPT | GPIO_PULL_UP | GPIO_GLITCH_FILTER | \
|
||||
GPIO_PORTC | GPIO_PIN24)
|
||||
#define IRQ_SW0 SAM_IRQ_PC24
|
||||
|
||||
/* I/O1
|
||||
*
|
||||
* Support for the microSD card slot on the I/O1 module. The I/O1 requires
|
||||
* SPI support and two GPIOs. These two GPIOs will vary if the
|
||||
*
|
||||
*
|
||||
* PIN EXT1 EXT2 Description
|
||||
* --- -------------- --------------- -------------------------------------
|
||||
* 15 PC03 SPI/NPCS0 PB11 SPI/NPCS2 Active low chip select OUTPUT, pulled
|
||||
* high on board.
|
||||
* 10 PB13 SPI/NPCS1 10 PC09 GPIO Active low card detect INPUT, must
|
||||
* use internal pull-up.
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_SAM4L_XPLAINED_IOMODULE
|
||||
|
||||
# ifndef CONFIG_SAM34_SPI
|
||||
# error CONFIG_SAM34_SPI is required to use the I/O1 module
|
||||
# endif
|
||||
|
||||
# if defined(CONFIG_SAM4L_XPLAINED_IOMODULE_EXT1)
|
||||
|
||||
# define GPIO_SD_CD (GPIO_INTERRUPT | GPIO_INT_CHANGE | GPIO_PULL_UP | \
|
||||
GPIO_GLITCH_FILTER | GPIO_PORTB | GPIO_PIN13)
|
||||
# define IRQ_SD_CD SAM_IRQ_PB13
|
||||
|
||||
# define GPIO_SD_CS (GPIO_OUTPUT | GPIO_PULL_NONE | GPIO_OUTPUT_SET | \
|
||||
GPIO_PORTC | GPIO_PIN3)
|
||||
# define SD_CSNO 0
|
||||
|
||||
# elif defined(CONFIG_SAM4L_XPLAINED_IOMODULE_EXT2)
|
||||
# define GPIO_CD (GPIO_INTERRUPT | GPIO_INT_CHANGE | GPIO_PULL_UP | \
|
||||
GPIO_GLITCH_FILTER | GPIO_PORTC | GPIO_PIN9)
|
||||
# define IRQ_CD SAM_IRQ_PC9
|
||||
|
||||
# define GPIO_SD_CS (GPIO_OUTPUT | GPIO_PULL_NONE | GPIO_OUTPUT_SET | \
|
||||
GPIO_PORTB | GPIO_PIN11)
|
||||
# define SD_CSNO 2
|
||||
|
||||
# else
|
||||
# error Which connector is the I/O1 module installed in?
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/************************************************************************************
|
||||
* Public Types
|
||||
************************************************************************************/
|
||||
@ -127,9 +171,22 @@
|
||||
|
||||
void weak_function sam_spiinitialize(void);
|
||||
|
||||
/****************************************************************************
|
||||
/************************************************************************************
|
||||
* Name: sam_sdinitialize
|
||||
*
|
||||
* Description:
|
||||
* Initialize the SPI-based SD card. Requires CONFIG_SAM4L_XPLAINED_IOMODULE=y,
|
||||
* CONFIG_DISABLE_MOUNTPOINT=n, CONFIG_MMCSD=y, and CONFIG_SAM34_SPI=y
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
#ifdef CONFIG_SAM4L_XPLAINED_IOMODULE
|
||||
int sam_sdinitialize(int minor);
|
||||
#endif
|
||||
|
||||
/************************************************************************************
|
||||
* Name: up_ledinit
|
||||
****************************************************************************/
|
||||
************************************************************************************/
|
||||
|
||||
#ifdef CONFIG_ARCH_LEDS
|
||||
void up_ledinit(void);
|
||||
|
@ -59,7 +59,9 @@
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
#if defined(CONFIG_GPIOA_IRQ) && defined(CONFIG_ARCH_IRQBUTTONS)
|
||||
static xcpt_t g_irqsw0;
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
|
@ -39,7 +39,6 @@
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <debug.h>
|
||||
#include <errno.h>
|
||||
@ -92,14 +91,15 @@
|
||||
|
||||
void weak_function sam_spiinitialize(void)
|
||||
{
|
||||
/* The ZigBee module connects used NPCS0. However, there is not yet any
|
||||
* ZigBee support.
|
||||
/* The I/O module containing the SD connector may or may not be installed. And, if
|
||||
* it is installed, it may be in connector EXT1 or EXT2.
|
||||
*/
|
||||
|
||||
/* The touchscreen connects using NPCS2 (PC14). */
|
||||
#ifdef CONFIG_SAM4L_XPLAINED_IOMODULE
|
||||
/* TODO: enable interrupt on card detect */
|
||||
|
||||
#if defined(CONFIG_INPUT) && defined(CONFIG_INPUT_ADS7843E)
|
||||
sam_configgpio(GPIO_TSC_NPCS2);
|
||||
sam_configgpio(GPIO_SD_CD); /* Card detect input */
|
||||
sam_configgpio(GPIO_SD_CS); /* Chip select output */
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -161,12 +161,12 @@ int sam_spicsnumber(enum spi_dev_e devid)
|
||||
{
|
||||
int cs = -EINVAL;
|
||||
|
||||
#if defined(CONFIG_INPUT) && defined(CONFIG_INPUT_ADS7843E)
|
||||
if (devid == SPIDEV_TOUCHSCREEN)
|
||||
#ifdef CONFIG_SAM4L_XPLAINED_IOMODULE
|
||||
if (devid == SPIDEV_MMCSD)
|
||||
{
|
||||
/* Assert the CS pin to the OLED display */
|
||||
/* Return the chip select number */
|
||||
|
||||
cs = 2;
|
||||
cs = SD_CSNO;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -201,18 +201,14 @@ int sam_spicsnumber(enum spi_dev_e devid)
|
||||
|
||||
void sam_spiselect(enum spi_dev_e devid, bool selected)
|
||||
{
|
||||
/* The touchscreen chip select is implemented as a GPIO OUTPUT that must
|
||||
* be controlled by this function. This is because the ADS7843E driver
|
||||
* must be able to sample the device BUSY GPIO input between SPI transfers.
|
||||
* However, the AD7843E will tri-state the BUSY input whenever the chip
|
||||
* select is de-asserted. So the only option is to control the chip select
|
||||
* manually and hold it low throughout the SPI transfer.
|
||||
*/
|
||||
#ifdef CONFIG_SAM4L_XPLAINED_IOMODULE
|
||||
/* Select/de-select the SD card */
|
||||
|
||||
#if defined(CONFIG_INPUT) && defined(CONFIG_INPUT_ADS7843E)
|
||||
if (devid == SPIDEV_TOUCHSCREEN)
|
||||
if (devid == SPIDEV_MMCSD)
|
||||
{
|
||||
sam_gpiowrite(GPIO_TSC_NPCS2, !selected);
|
||||
/* Active low */
|
||||
|
||||
sam_gpiowrite(GPIO_SD_CS, !selected);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -233,7 +229,23 @@ void sam_spiselect(enum spi_dev_e devid, bool selected)
|
||||
|
||||
uint8_t sam_spistatus(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
|
||||
{
|
||||
return 0;
|
||||
uint8_t ret = 0;
|
||||
|
||||
#ifdef CONFIG_SAM4L_XPLAINED_IOMODULE
|
||||
/* Check if an SD card is present in the microSD slot */
|
||||
|
||||
if (devid == SPIDEV_MMCSD)
|
||||
{
|
||||
/* Active low */
|
||||
|
||||
if (!sam_gpioread(GPIO_SD_CD))
|
||||
{
|
||||
ret |= SPI_STATUS_PRESENT;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_SAM34_SPI */
|
||||
|
@ -32,27 +32,23 @@
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
|
||||
|
||||
if [ "$_" = "$0" ] ; then
|
||||
echo "You must source this script, not run it!" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
WD=`pwd`
|
||||
if [ ! -x "setenv.sh" ]; then
|
||||
echo "This script must be executed from the top-level NuttX build directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "${PATH_ORIG}" ]; then
|
||||
export PATH_ORIG="${PATH}"
|
||||
fi
|
||||
# This is the Cygwin path to the location where I installed the Atmel GCC
|
||||
# toolchain under Windows. You will also have to edit this if you install
|
||||
# this toolchain in any other location
|
||||
#export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/Atmel/Atmel Toolchain/ARM GCC/Native/4.7.3.99/arm-gnu-toolchain/bin"
|
||||
|
||||
# This is the Cygwin path to the location where I installed the CodeSourcery
|
||||
# toolchain under windows. You will also have to edit this if you install
|
||||
# the CodeSourcery toolchain in any other location
|
||||
#export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/CodeSourcery/Sourcery G++ Lite/bin"
|
||||
|
||||
# These are the Cygwin paths to the locations where I installed the Atollic
|
||||
# toolchain under windows. You will also have to edit this if you install
|
||||
# the Atollic toolchain in any other location. /usr/bin is added before
|
||||
# the Atollic bin path because there is are binaries named gcc.exe and g++.exe
|
||||
# at those locations as well.
|
||||
#export TOOLCHAIN_BIN="/usr/bin:/cygdrive/c/Program Files (x86)/Atollic/TrueSTUDIO for ARM Pro 2.3.0/ARMTools/bin"
|
||||
|
||||
# This is the Cygwin path to the location where I build the buildroot
|
||||
# toolchain.
|
||||
export TOOLCHAIN_BIN="${WD}/../misc/buildroot/build_arm_nofpu/staging_dir/bin"
|
||||
|
@ -32,7 +32,6 @@
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
|
||||
|
||||
if [ "$_" = "$0" ] ; then
|
||||
echo "You must source this script, not run it!" 1>&2
|
||||
exit 1
|
||||
@ -48,11 +47,23 @@ if [ -z "${PATH_ORIG}" ]; then
|
||||
export PATH_ORIG="${PATH}"
|
||||
fi
|
||||
|
||||
# This is the Cygwin path to the location where I installed the Atmel GCC
|
||||
# toolchain under Windows. You will also have to edit this if you install
|
||||
# this toolchain in any other location
|
||||
#export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/Atmel/Atmel Toolchain/ARM GCC/Native/4.7.3.99/arm-gnu-toolchain/bin"
|
||||
|
||||
# This is the Cygwin path to the location where I installed the CodeSourcery
|
||||
# toolchain under windows. You will also have to edit this if you install
|
||||
# the CodeSourcery toolchain in any other location
|
||||
#export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/CodeSourcery/Sourcery G++ Lite/bin"
|
||||
|
||||
# These are the Cygwin paths to the locations where I installed the Atollic
|
||||
# toolchain under windows. You will also have to edit this if you install
|
||||
# the Atollic toolchain in any other location. /usr/bin is added before
|
||||
# the Atollic bin path because there is are binaries named gcc.exe and g++.exe
|
||||
# at those locations as well.
|
||||
#export TOOLCHAIN_BIN="/usr/bin:/cygdrive/c/Program Files (x86)/Atollic/TrueSTUDIO for ARM Pro 2.3.0/ARMTools/bin"
|
||||
|
||||
# This is the Cygwin path to the location where I build the buildroot
|
||||
# toolchain.
|
||||
export TOOLCHAIN_BIN="${WD}/../misc/buildroot/build_arm_nofpu/staging_dir/bin"
|
||||
|
Loading…
Reference in New Issue
Block a user