SAMA5: Fix HSMCI race condition. Now memory card interface is functional with DMA
This commit is contained in:
parent
141a75c9db
commit
cddedcde9b
@ -640,14 +640,44 @@ Configurations
|
||||
CONFIG_DEBUG_VERBOSE=y : Enable verbose debug output
|
||||
CONFIG_DEBUG_INPUT=y : Enable debug output from input devices
|
||||
|
||||
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.
|
||||
3. Enabling HSMCI support. The SAM3U-KE provides a an SD memory card
|
||||
slot. Support for the SD slot can be enabled with the following
|
||||
settings:
|
||||
|
||||
System Type->ATSAM3/4 Peripheral Support
|
||||
CONFIG_SAM34_HSMCI=y : Enable HSMCI support
|
||||
CONFIG_SAM34_DMA=y : DMAC support is needed by HSMCI
|
||||
|
||||
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:
|
||||
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_LPC43XX 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_STM32 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_CORTEXM4 is not set
|
||||
# CONFIG_ARCH_CORTEXA5 is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
CONFIG_ARCH_CHIP="sam34"
|
||||
# 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_OABI_TOOLCHAIN=y
|
||||
# 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
|
||||
@ -162,26 +173,18 @@ CONFIG_SAM34_UART0=y
|
||||
# CONFIG_SAM34_WDT is not set
|
||||
# CONFIG_SAM34_HSMCI is not set
|
||||
|
||||
#
|
||||
# AT91SAM3/4 USART Configuration
|
||||
#
|
||||
|
||||
#
|
||||
# AT91SAM3/4 GPIO Interrupt 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_EXTNOR is not set
|
||||
# CONFIG_SAM34_EXTSRAM0 is not set
|
||||
# CONFIG_SAM34_EXTSRAM1 is not set
|
||||
|
||||
#
|
||||
# AT91SAM3/4 GPIO Interrupt Configuration
|
||||
#
|
||||
|
||||
#
|
||||
# Architecture Options
|
||||
#
|
||||
@ -204,8 +207,6 @@ CONFIG_ARCH_HAVE_RAMVECTORS=y
|
||||
#
|
||||
CONFIG_BOARD_LOOPSPERMSEC=8720
|
||||
# CONFIG_ARCH_CALIBRATION is not set
|
||||
CONFIG_RAM_START=0x20000000
|
||||
CONFIG_RAM_SIZE=32768
|
||||
CONFIG_ARCH_HAVE_INTERRUPTSTACK=y
|
||||
CONFIG_ARCH_INTERRUPTSTACK=0
|
||||
|
||||
@ -218,6 +219,12 @@ CONFIG_BOOT_RUNFROMFLASH=y
|
||||
# CONFIG_BOOT_RUNFROMSDRAM is not set
|
||||
# CONFIG_BOOT_COPYTORAM is not set
|
||||
|
||||
#
|
||||
# Boot Memory Configuration
|
||||
#
|
||||
CONFIG_RAM_START=0x20000000
|
||||
CONFIG_RAM_SIZE=32768
|
||||
|
||||
#
|
||||
# Board Selection
|
||||
#
|
||||
@ -332,6 +339,10 @@ CONFIG_SERIAL=y
|
||||
# CONFIG_DEV_LOWCONSOLE is not set
|
||||
# CONFIG_16550_UART is not set
|
||||
CONFIG_ARCH_HAVE_UART0=y
|
||||
|
||||
#
|
||||
# USART Configuration
|
||||
#
|
||||
CONFIG_MCU_SERIAL=y
|
||||
CONFIG_STANDARD_SERIAL=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_CD 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_ECHO is not set
|
||||
# CONFIG_NSH_DISABLE_EXEC is not set
|
||||
@ -693,3 +705,8 @@ CONFIG_READLINE_ECHO=y
|
||||
#
|
||||
# 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,
|
||||
* this function must call sio_mediachange() to handle that event. See
|
||||
* 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
|
||||
# warning "Card detect interrupt handling needed"
|
||||
#endif
|
||||
|
||||
/* Usually defined in NuttX header files */
|
||||
|
||||
#ifndef OK
|
||||
# define OK 0
|
||||
#endif
|
||||
|
||||
/************************************************************************************
|
||||
* Private Functions
|
||||
************************************************************************************/
|
||||
|
@ -1027,10 +1027,11 @@ Configurations
|
||||
CONFIG_SAMA5_DMAC0=y : DMAC0 is needed by HSMCI0
|
||||
CONFIG_SAMA5_DMAC1=y : DMAC1 is needed by HSMCI1
|
||||
|
||||
System Type
|
||||
CONFIG_SAMA5_PIO_IRQ=y : PIO interrupts needed
|
||||
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_MMSCD_NSLOTS=1 : One slot per driver instance
|
||||
CONFIG_MMCSD_HAVECARDDETECT=y : Supports card-detect PIOs
|
||||
@ -1074,9 +1075,12 @@ Configurations
|
||||
where the memory test fails! No idea why.
|
||||
|
||||
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.
|
||||
|
||||
2013-8-10: Basic HSCMI1 functionality (with DMA) has been verified.
|
||||
Most testing is needed to assure that this is a stable solution.
|
||||
|
||||
ostest:
|
||||
This configuration directory, performs a simple OS test using
|
||||
examples/ostest.
|
||||
@ -1133,7 +1137,7 @@ Configurations
|
||||
configuration to start the program in NOR FLASH (see just 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
|
||||
prime numbers. This test is supposed to be slow -- like several
|
||||
seconds -- but not many minutes. No idea why yet. The best guess
|
||||
|
Loading…
Reference in New Issue
Block a user