mirror of
https://github.com/apache/nuttx.git
synced 2026-06-06 00:14:22 +08:00
SAMA5: Fix HSMCI race condition. Now memory card interface is functional with DMA
This commit is contained in:
@@ -640,14 +640,44 @@ Configurations
|
|||||||
CONFIG_DEBUG_VERBOSE=y : Enable verbose debug output
|
CONFIG_DEBUG_VERBOSE=y : Enable verbose debug output
|
||||||
CONFIG_DEBUG_INPUT=y : Enable debug output from input devices
|
CONFIG_DEBUG_INPUT=y : Enable debug output from input devices
|
||||||
|
|
||||||
STATUS:
|
3. Enabling HSMCI support. The SAM3U-KE provides a an SD memory card
|
||||||
2013-6-28: The touchscreen is functional.
|
slot. Support for the SD slot can be enabled with the following
|
||||||
2013-6-29: Hmmm... but there appear to be conditions when the
|
settings:
|
||||||
touchscreen driver locks up. Looks like some issue with
|
|
||||||
managing the interrupts.
|
System Type->ATSAM3/4 Peripheral Support
|
||||||
2013-6-30: Those lock-ups appear to be due to poorly placed
|
CONFIG_SAM34_HSMCI=y : Enable HSMCI support
|
||||||
debug output statements. If you do not enable debug output,
|
CONFIG_SAM34_DMA=y : DMAC support is needed by HSMCI
|
||||||
the touchscreen is rock-solid.
|
|
||||||
|
System Type
|
||||||
|
CONFIG_SAM34_GPIO_IRQ=y : PIO interrupts needed
|
||||||
|
CONFIG_SAM34_GPIOA_IRQ=y : Card detect pin is on PIOA
|
||||||
|
|
||||||
|
Device Drivers -> MMC/SD Driver Support
|
||||||
|
CONFIG_MMCSD=y : Enable MMC/SD support
|
||||||
|
CONFIG_MMSCD_NSLOTS=1 : One slot per driver instance
|
||||||
|
CONFIG_MMCSD_HAVECARDDETECT=y : Supports card-detect PIOs
|
||||||
|
CONFIG_MMCSD_SDIO=y : SDIO-based MMC/SD support
|
||||||
|
CONFIG_SDIO_DMA=y : Use SDIO DMA
|
||||||
|
CONFIG_SDIO_BLOCKSETUP=y : Needs to know block sizes
|
||||||
|
|
||||||
|
Library Routines
|
||||||
|
CONFIG_SCHED_WORKQUEUE=y : Driver needs work queue support
|
||||||
|
|
||||||
|
Application Configuration -> NSH Library
|
||||||
|
CONFIG_NSH_ARCHINIT=y : NSH board-initialization
|
||||||
|
|
||||||
|
STATUS:
|
||||||
|
2013-6-28: The touchscreen is functional.
|
||||||
|
2013-6-29: Hmmm... but there appear to be conditions when the
|
||||||
|
touchscreen driver locks up. Looks like some issue with
|
||||||
|
managing the interrupts.
|
||||||
|
2013-6-30: Those lock-ups appear to be due to poorly placed
|
||||||
|
debug output statements. If you do not enable debug output,
|
||||||
|
the touchscreen is rock-solid.
|
||||||
|
2013-8-10: Added the comments above above enabling HSMCI memory
|
||||||
|
card support and verified that the configuration builds without
|
||||||
|
error. However, that configuration has not yet been tested (and
|
||||||
|
is may even be incomplete).
|
||||||
|
|
||||||
nx:
|
nx:
|
||||||
Configures to use examples/nx using the HX834x LCD hardware on
|
Configures to use examples/nx using the HX834x LCD hardware on
|
||||||
|
|||||||
@@ -73,10 +73,17 @@ CONFIG_ARCH="arm"
|
|||||||
# CONFIG_ARCH_CHIP_LPC31XX is not set
|
# CONFIG_ARCH_CHIP_LPC31XX is not set
|
||||||
# CONFIG_ARCH_CHIP_LPC43XX is not set
|
# CONFIG_ARCH_CHIP_LPC43XX is not set
|
||||||
# CONFIG_ARCH_CHIP_NUC1XX is not set
|
# CONFIG_ARCH_CHIP_NUC1XX is not set
|
||||||
|
# CONFIG_ARCH_CHIP_SAMA5 is not set
|
||||||
CONFIG_ARCH_CHIP_SAM34=y
|
CONFIG_ARCH_CHIP_SAM34=y
|
||||||
# CONFIG_ARCH_CHIP_STM32 is not set
|
# CONFIG_ARCH_CHIP_STM32 is not set
|
||||||
# CONFIG_ARCH_CHIP_STR71X is not set
|
# CONFIG_ARCH_CHIP_STR71X is not set
|
||||||
|
# CONFIG_ARCH_ARM7TDMI is not set
|
||||||
|
# CONFIG_ARCH_ARM926EJS is not set
|
||||||
|
# CONFIG_ARCH_ARM920T is not set
|
||||||
|
# CONFIG_ARCH_CORTEXM0 is not set
|
||||||
CONFIG_ARCH_CORTEXM3=y
|
CONFIG_ARCH_CORTEXM3=y
|
||||||
|
# CONFIG_ARCH_CORTEXM4 is not set
|
||||||
|
# CONFIG_ARCH_CORTEXA5 is not set
|
||||||
CONFIG_ARCH_FAMILY="armv7-m"
|
CONFIG_ARCH_FAMILY="armv7-m"
|
||||||
CONFIG_ARCH_CHIP="sam34"
|
CONFIG_ARCH_CHIP="sam34"
|
||||||
# CONFIG_ARMV7M_USEBASEPRI is not set
|
# CONFIG_ARMV7M_USEBASEPRI is not set
|
||||||
@@ -93,6 +100,10 @@ CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT=y
|
|||||||
# CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL is not set
|
# CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL is not set
|
||||||
CONFIG_ARMV7M_OABI_TOOLCHAIN=y
|
CONFIG_ARMV7M_OABI_TOOLCHAIN=y
|
||||||
# CONFIG_GPIO_IRQ is not set
|
# CONFIG_GPIO_IRQ is not set
|
||||||
|
CONFIG_ARCH_HAVE_EXTNAND=y
|
||||||
|
CONFIG_ARCH_HAVE_EXTNOR=y
|
||||||
|
CONFIG_ARCH_HAVE_EXTSRAM0=y
|
||||||
|
CONFIG_ARCH_HAVE_EXTSRAM1=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# AT91SAM3/4 Configuration Options
|
# AT91SAM3/4 Configuration Options
|
||||||
@@ -162,26 +173,18 @@ CONFIG_SAM34_UART0=y
|
|||||||
# CONFIG_SAM34_WDT is not set
|
# CONFIG_SAM34_WDT is not set
|
||||||
# CONFIG_SAM34_HSMCI is not set
|
# CONFIG_SAM34_HSMCI is not set
|
||||||
|
|
||||||
#
|
|
||||||
# AT91SAM3/4 USART Configuration
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# AT91SAM3/4 GPIO Interrupt Configuration
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# External Memory Configuration
|
# External Memory Configuration
|
||||||
#
|
#
|
||||||
CONFIG_ARCH_HAVE_EXTNAND=y
|
|
||||||
CONFIG_ARCH_HAVE_EXTNOR=y
|
|
||||||
CONFIG_ARCH_HAVE_EXTSRAM0=y
|
|
||||||
CONFIG_ARCH_HAVE_EXTSRAM1=y
|
|
||||||
# CONFIG_SAM34_EXTNAND is not set
|
# CONFIG_SAM34_EXTNAND is not set
|
||||||
# CONFIG_SAM34_EXTNOR is not set
|
# CONFIG_SAM34_EXTNOR is not set
|
||||||
# CONFIG_SAM34_EXTSRAM0 is not set
|
# CONFIG_SAM34_EXTSRAM0 is not set
|
||||||
# CONFIG_SAM34_EXTSRAM1 is not set
|
# CONFIG_SAM34_EXTSRAM1 is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# AT91SAM3/4 GPIO Interrupt Configuration
|
||||||
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
# Architecture Options
|
# Architecture Options
|
||||||
#
|
#
|
||||||
@@ -204,8 +207,6 @@ CONFIG_ARCH_HAVE_RAMVECTORS=y
|
|||||||
#
|
#
|
||||||
CONFIG_BOARD_LOOPSPERMSEC=8720
|
CONFIG_BOARD_LOOPSPERMSEC=8720
|
||||||
# CONFIG_ARCH_CALIBRATION is not set
|
# CONFIG_ARCH_CALIBRATION is not set
|
||||||
CONFIG_RAM_START=0x20000000
|
|
||||||
CONFIG_RAM_SIZE=32768
|
|
||||||
CONFIG_ARCH_HAVE_INTERRUPTSTACK=y
|
CONFIG_ARCH_HAVE_INTERRUPTSTACK=y
|
||||||
CONFIG_ARCH_INTERRUPTSTACK=0
|
CONFIG_ARCH_INTERRUPTSTACK=0
|
||||||
|
|
||||||
@@ -218,6 +219,12 @@ CONFIG_BOOT_RUNFROMFLASH=y
|
|||||||
# CONFIG_BOOT_RUNFROMSDRAM is not set
|
# CONFIG_BOOT_RUNFROMSDRAM is not set
|
||||||
# CONFIG_BOOT_COPYTORAM is not set
|
# CONFIG_BOOT_COPYTORAM is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Boot Memory Configuration
|
||||||
|
#
|
||||||
|
CONFIG_RAM_START=0x20000000
|
||||||
|
CONFIG_RAM_SIZE=32768
|
||||||
|
|
||||||
#
|
#
|
||||||
# Board Selection
|
# Board Selection
|
||||||
#
|
#
|
||||||
@@ -332,6 +339,10 @@ CONFIG_SERIAL=y
|
|||||||
# CONFIG_DEV_LOWCONSOLE is not set
|
# CONFIG_DEV_LOWCONSOLE is not set
|
||||||
# CONFIG_16550_UART is not set
|
# CONFIG_16550_UART is not set
|
||||||
CONFIG_ARCH_HAVE_UART0=y
|
CONFIG_ARCH_HAVE_UART0=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# USART Configuration
|
||||||
|
#
|
||||||
CONFIG_MCU_SERIAL=y
|
CONFIG_MCU_SERIAL=y
|
||||||
CONFIG_STANDARD_SERIAL=y
|
CONFIG_STANDARD_SERIAL=y
|
||||||
CONFIG_UART0_SERIAL_CONSOLE=y
|
CONFIG_UART0_SERIAL_CONSOLE=y
|
||||||
@@ -577,6 +588,7 @@ CONFIG_NSH_BUILTIN_APPS=y
|
|||||||
# CONFIG_NSH_DISABLE_CAT is not set
|
# CONFIG_NSH_DISABLE_CAT is not set
|
||||||
# CONFIG_NSH_DISABLE_CD is not set
|
# CONFIG_NSH_DISABLE_CD is not set
|
||||||
# CONFIG_NSH_DISABLE_CP is not set
|
# CONFIG_NSH_DISABLE_CP is not set
|
||||||
|
# CONFIG_NSH_DISABLE_CMP is not set
|
||||||
# CONFIG_NSH_DISABLE_DD is not set
|
# CONFIG_NSH_DISABLE_DD is not set
|
||||||
# CONFIG_NSH_DISABLE_ECHO is not set
|
# CONFIG_NSH_DISABLE_ECHO is not set
|
||||||
# CONFIG_NSH_DISABLE_EXEC is not set
|
# CONFIG_NSH_DISABLE_EXEC is not set
|
||||||
@@ -693,3 +705,8 @@ CONFIG_READLINE_ECHO=y
|
|||||||
#
|
#
|
||||||
# USB Monitor
|
# USB Monitor
|
||||||
#
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Zmodem Commands
|
||||||
|
#
|
||||||
|
# CONFIG_SYSTEM_ZMODEM is not set
|
||||||
|
|||||||
@@ -55,12 +55,21 @@
|
|||||||
* when the interrupt indicating that a card has been inserted or removed is received,
|
* when the interrupt indicating that a card has been inserted or removed is received,
|
||||||
* this function must call sio_mediachange() to handle that event. See
|
* this function must call sio_mediachange() to handle that event. See
|
||||||
* arch/arm/src/sam34/sam_hsmci.h for more information.
|
* arch/arm/src/sam34/sam_hsmci.h for more information.
|
||||||
|
*
|
||||||
|
* Also see the SAMA5D3x-EK implementation of this same logic. The card detect
|
||||||
|
* interrupt handling should be a drop-in.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef GPIO_MCI_CD
|
#ifdef GPIO_MCI_CD
|
||||||
# warning "Card detect interrupt handling needed"
|
# warning "Card detect interrupt handling needed"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Usually defined in NuttX header files */
|
||||||
|
|
||||||
|
#ifndef OK
|
||||||
|
# define OK 0
|
||||||
|
#endif
|
||||||
|
|
||||||
/************************************************************************************
|
/************************************************************************************
|
||||||
* Private Functions
|
* Private Functions
|
||||||
************************************************************************************/
|
************************************************************************************/
|
||||||
|
|||||||
@@ -1027,10 +1027,11 @@ Configurations
|
|||||||
CONFIG_SAMA5_DMAC0=y : DMAC0 is needed by HSMCI0
|
CONFIG_SAMA5_DMAC0=y : DMAC0 is needed by HSMCI0
|
||||||
CONFIG_SAMA5_DMAC1=y : DMAC1 is needed by HSMCI1
|
CONFIG_SAMA5_DMAC1=y : DMAC1 is needed by HSMCI1
|
||||||
|
|
||||||
|
System Type
|
||||||
CONFIG_SAMA5_PIO_IRQ=y : PIO interrupts needed
|
CONFIG_SAMA5_PIO_IRQ=y : PIO interrupts needed
|
||||||
CONFIG_SAMA5_PIOD_IRQ=y : Card detect pins are on PIOD
|
CONFIG_SAMA5_PIOD_IRQ=y : Card detect pins are on PIOD
|
||||||
|
|
||||||
Device Drivers ->
|
Device Drivers -> MMC/SD Driver Support
|
||||||
CONFIG_MMCSD=y : Enable MMC/SD support
|
CONFIG_MMCSD=y : Enable MMC/SD support
|
||||||
CONFIG_MMSCD_NSLOTS=1 : One slot per driver instance
|
CONFIG_MMSCD_NSLOTS=1 : One slot per driver instance
|
||||||
CONFIG_MMCSD_HAVECARDDETECT=y : Supports card-detect PIOs
|
CONFIG_MMCSD_HAVECARDDETECT=y : Supports card-detect PIOs
|
||||||
@@ -1074,9 +1075,12 @@ Configurations
|
|||||||
where the memory test fails! No idea why.
|
where the memory test fails! No idea why.
|
||||||
|
|
||||||
2013-8-5: The AT25 configuration has been verified to be functional.
|
2013-8-5: The AT25 configuration has been verified to be functional.
|
||||||
2013-9-9: The AT25 configuration has been verified with DMA
|
2013-8-9: The AT25 configuration has been verified with DMA
|
||||||
enabled.
|
enabled.
|
||||||
|
|
||||||
|
2013-8-10: Basic HSCMI1 functionality (with DMA) has been verified.
|
||||||
|
Most testing is needed to assure that this is a stable solution.
|
||||||
|
|
||||||
ostest:
|
ostest:
|
||||||
This configuration directory, performs a simple OS test using
|
This configuration directory, performs a simple OS test using
|
||||||
examples/ostest.
|
examples/ostest.
|
||||||
@@ -1133,7 +1137,7 @@ Configurations
|
|||||||
configuration to start the program in NOR FLASH (see just above).
|
configuration to start the program in NOR FLASH (see just above).
|
||||||
See "Creating and Using NORBOOT" above.
|
See "Creating and Using NORBOOT" above.
|
||||||
|
|
||||||
2013-7-31: The OS test configuration is basically functional, but
|
2013-7-31: The OS test configuration is basically functional, but
|
||||||
takes a very long time in the round-robin scheduler test computing
|
takes a very long time in the round-robin scheduler test computing
|
||||||
prime numbers. This test is supposed to be slow -- like several
|
prime numbers. This test is supposed to be slow -- like several
|
||||||
seconds -- but not many minutes. No idea why yet. The best guess
|
seconds -- but not many minutes. No idea why yet. The best guess
|
||||||
|
|||||||
Reference in New Issue
Block a user