# README

  This README file describes the port of NuttX to the Groboards Giant Board
  development board. This board features the Atmel SAMA5D27 microprocessor
  as a SIP with 128KB on-chip DDR2 RAM (part number `ATSAMA5D27C-D1G`).
  See https://groboards.com/giant-board/ for further information.

  This was copied from the SAMA5D2-XULT README, and needs updating.

## Contents

  - STATUS
  - Loading Code into SRAM with J-Link
  - DRAMBOOT, AT25BOOT, SRAMBOOT
  - Running NuttX from SDRAM
  - Buttons and LEDs
  - Serial Console
  - Giant Board Configuration Options
  - Configurations

## Status

1. Most of this document is a partially corrected clone of the SAMA5D2-XULT
   README.txt and still contains errors and inconsistencies.

## Loading Code into SRAM from SD Card

There is no JTAG connector on the Giant Board. There are pads to wire up an SWD
adapter, but this has not been tested.

The way to run NuttX is to boot from an SD Card. You can download an SD Card image
or a zip file of the required files from this page:

https://www.starcat.io/starcat-nuttx/

The SD Card has to be FAT formatted, have an AT91Bootstrap binary called boot.bin,
a U-Boot binary called u-boot.bin as well as a compiled device tree for the
SAMA5D27C-D1G called `at91-sama5d27_giantboard.dtb` in the `dtbs/` folder. You can
build these yourself using the tools at

https://github.com/Groboards/giantboard-tools

The layout should look like this:

    BOOT.BIN
    uboot.env
    nuttx.bin
    u-boot.bin
    dtbs/
      at91-sama5d27_giantboard.dtb

You only need uboot.env if you want to boot automatically. See the U-Boot
documentation for instructions on how to create this file.

## Running NuttX from SDRAM

NuttX will be executed from SDRAM, and NuttX binary must reside on SD Card media.

### NuttX Configuration

In order to run from SDRAM, NuttX must be built at origin 0x20008000 in
SDRAM (skipping over SDRAM memory used by the bootloader). The following
configuration option is required:

    CONFIG_SAMA5_BOOT_SDRAM=y
    CONFIG_BOOT_RUNFROMSDRAM=y

These options tell the NuttX code that it will be booting and running from
SDRAM. In this case, the start-logic will do to things:  (1) it will not
configure the SAMA5D2 clocking. Rather, it will use the clock configuration
as set up by the bootloader. And (2) it will not attempt to configure the
SDRAM. Since NuttX is already running from SDRAM, it must accept the SDRAM
configuration as set up by the bootloader.

### Boot sequence

Reference: http://www.at91.com/linux4sam/bin/view/Linux4SAM/GettingStarted

Several pieces of software are involved to boot a Nutt5X into SDRAM. First
is the primary bootloader in ROM which is in charge to check if a valid
application is present on supported media (NOR FLASH, Serial DataFlash,
NAND FLASH, SD card).

The boot sequence of linux4SAM is done in several steps :

1. The ROM bootloader checks if a valid application is present in FLASH
   and if it is the case downloads it into internal SRAM. This program
   is usually a second level bootloader called AT91BootStrap.

2. AT91Bootstrap is the second level bootloader. It is in charge of the
   hardware configuration. It downloads U-Boot / Barebox binary from
   FLASH to SDRAM / DDRAM and starts the third level bootloader
   (U-Boot / Barebox)

  (see http://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap).

3. The third level bootloader is either U-Boot or Barebox. The third
   level bootloader is in charge of downloading NuttX binary from FLASH,
   network, SD card, etc. It then starts NuttX.

 4. Then NuttX runs from SDRAM

### NAND FLASH Memory Map

Reference: http://www.at91.com/linux4sam/bin/view/Linux4SAM/GettingStarted

    0x0000:0000 - 0x0003:ffff: AT91BootStrap
    0x0004:0000 - 0x000b:ffff: U-Boot
    0x000c:0000 - 0x000f:ffff: U-Boot environment
    0x0010:0000 - 0x0017:ffff: U-Boot environment redundant
    0x0018:0000 - 0x001f:ffff: Device tree (DTB)
    0x0020:0000 - 0x007f:ffff: NuttX
    0x0080:0000 - end:         Available for use as a NAND file system

### Load NuttX with U-Boot on AT91 boards

Reference http://www.at91.com/linux4sam/bin/view/Linux4SAM/U-Boot

#### Preparing NuttX image

U-Boot does not support normal binary images. Instead you have to
create an nuttx.bin file. The NuttX build generates this file
automatically. Copy it to the root of the SD Card that you made,
and boot the card. The SD Card image above will automatically boot
using the nuttx.bin file. If you are using another image (the
Giant Board linux image for instance), you can hit space to enter
U-Boot, and then from the U-Boot prompt do the following:

    U-Boot> fatload mmc 0 0x20008000 nuttx.bin
    mci: setting clock 257812 Hz, block size 512
    mci: setting clock 257812 Hz, block size 512
    mci: setting clock 257812 Hz, block size 512
    gen_atmel_mci: CMDR 00001048 ( 8) ARGR 000001aa (SR: 0c100025) Command Time Out
    mci: setting clock 257812 Hz, block size 512
    mci: setting clock 22000000 Hz, block size 512
    reading nuttx.bin
    108076 bytes read in 23 ms (4.5 MiB/s)

    U-Boot> go 0x20008040
    ## Starting application at 0x20008040 ...

    NuttShell (NSH) NuttX-7.2
    nsh>

## Buttons and LEDs

### Buttons

A single button, PB1, is available on the Giant Board. This is connected to the
Power Management Integrated Circuit (PMIC). It is not available to the user.

This appears to have no affect under NuttX.

You can add your own buttons, support for pollable buttons is enabled with:

    CONFIG_ARCH_BUTTONS=y

For interrupt driven buttons, add:

    CONFIG_ARCH_IRQBUTTONS=y

Program interfaces for button access are described in nuttx/include/nuttx/arch.h

There is an example that can be enabled to test button interrupts. That
example is enabled like:

    CONFIG_EXAMPLES_BUTTONS=y
    CONFIG_EXAMPLES_BUTTONS_MAX=0
    CONFIG_EXAMPLES_BUTTONS_MIN=0
    CONFIG_EXAMPLES_BUTTONS_NAME0="PB_USER"
    CONFIG_EXAMPLES_IRQBUTTONS_MAX=0
    CONFIG_EXAMPLES_IRQBUTTONS_MIN=0

### LEDs

There is an Orange LED on the Giant Board, driven by pin (PA6) labeled STATUS.
Bringing the pin high will illuminate the LED.

    ------------------------------ ------------------- -------------------------
    SAMA5D2 PIO                    SIGNAL              USAGE
    ------------------------------ ------------------- -------------------------
    PA6                            STATUS_LED          Orange LED
    ------------------------------ ------------------- -------------------------

When CONFIG_ARCH_LEDS is defined in the NuttX configuration, NuttX will
control the Orange LED as follows:

    SYMBOL              Meaning                 Orange LED
    ------------------- ----------------------- ---------
    LED_STARTED         NuttX has been started  OFF
    LED_HEAPALLOCATE    Heap has been allocated OFF
    LED_IRQSENABLED     Interrupts enabled      OFF
    LED_STACKCREATED    Idle stack created      ON
    LED_INIRQ           In an interrupt         N/C
    LED_SIGNAL          In a signal handler     N/C
    LED_ASSERTION       An assertion failed     N/C
    LED_PANIC           The system has crashed  FLASH

Thus if the Orange LED is statically on, NuttX has successfully  booted and
is, apparently, running normally. If LED is flashing at approximately
2Hz, then a fatal error has been detected and the system has halted.

## Serial Console

The default serial console is UART1 (TX and RX on the pin connectors).
There is a TTL serial connection available on pins 14 and 15 of the J1
connector.

    ---- ------------------------ -------------
    J1   SCHEMATIC                   SAMA5D2
    PIN  NAME(s)                  PIO  FUNCTION
    ---- ------------------------ -------------
    15   UART1_RX  DBGU_UTXD1_PD3 PD3  UTXD1
    14   UART1_TX  DBGU_URXD1_PD2 PD2  URXD1
    ---- ------------------------ -------------

The other UART on the connectors (J1 and J1) is FLEXCOM4.
Terminology: FLEXCOM is the same as USART in previous SAMA5D versions.

    ---- ----------- -------------
           BOARD        SAMA5D2
    PIN    NAME       PIO  FUNCTION
    ---- ------------ -------------
    J2 4  FLEXCOM_IO1 PD21 FLEXCOM4
    J1 6  AD2         PD13 FLEXCOM4
    ---- ------------ -------------

By default, the standard UART on the connectors (FLEXCOM4) is
enabled in all of these configurations unless otherwise noted.

REVISIT: UART1 on the DBGU connect might be a better choice for the
default serial console

## Giant Board Configuration Options

CONFIG_ARCH - Identifies the arch/ subdirectory. This should
be set to:

    CONFIG_ARCH="arm"

CONFIG_ARCH_family - For use in C code:

    CONFIG_ARCH_ARM=y

CONFIG_ARCH_architecture - For use in C code:

    CONFIG_ARCH_CORTEXA5=y

CONFIG_ARCH_CHIP - Identifies the arch/*/chip subdirectory

    CONFIG_ARCH_CHIP="sama5"

CONFIG_ARCH_CHIP_name - For use in C code to identify the exact
chip:

    CONFIG_ARCH_CHIP_SAMA5=y
    CONFIG_ARCH_CHIP_ATSAMA5D27=y

CONFIG_ARCH_BOARD - Identifies the boards/ subdirectory and
hence, the board that supports the particular chip or SoC.

    CONFIG_ARCH_BOARD="giant-board" (for the Groboards Giant Board)

CONFIG_ARCH_BOARD_name - For use in C code

    CONFIG_ARCH_BOARD_GIANT_BOARD=y

CONFIG_ARCH_LOOPSPERMSEC - Must be calibrated for correct operation
of delay loops

CONFIG_ENDIAN_BIG - define if big endian (default is little
endian)

CONFIG_RAM_SIZE - Describes the installed DRAM (SRAM in this case):

    CONFIG_RAM_SIZE=0x0002000 (128Kb)

CONFIG_RAM_START - The physical start address of installed DRAM

    CONFIG_RAM_START=0x20000000

CONFIG_RAM_VSTART - The virtual start address of installed DRAM

    CONFIG_RAM_VSTART=0x20000000

CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to boards that
have LEDs

CONFIG_ARCH_INTERRUPTSTACK - This architecture supports an interrupt
stack. If defined, this symbol is the size of the interrupt
stack in bytes. If not defined, the user task stacks will be
used during interrupt handling.

CONFIG_ARCH_STACKDUMP - Do stack dumps after assertions

CONFIG_ARCH_LEDS -  Use LEDs to show state. Unique to board architecture.

Individual subsystems can be enabled:

REVISIT: Unverified, cloned text from the SAMA5D4-EK README.txt

    CONFIG_SAMA5_DBGU        - Debug Unit
    CONFIG_SAMA5_PIT         - Periodic Interval Timer
    CONFIG_SAMA5_WDT         - Watchdog timer
    CONFIG_SAMA5_HSMC        - Multi-bit ECC
    CONFIG_SAMA5_SMD         - SMD Soft Modem
    CONFIG_SAMA5_FLEXCOM0    - Flexcom 0
    CONFIG_SAMA5_FLEXCOM1    - Flexcom 0
    CONFIG_SAMA5_FLEXCOM2    - Flexcom 0
    CONFIG_SAMA5_FLEXCOM3    - Flexcom 0
    CONFIG_SAMA5_FLEXCOM4    - Flexcom 0
    CONFIG_SAMA5_UART0       - UART 0 (not available on the pins)
    CONFIG_SAMA5_UART1       - UART 1
    CONFIG_SAMA5_UART2       - UART 2 (not available on the pins)
    CONFIG_SAMA5_UART3       - UART 3 (not available on the pins)
    CONFIG_SAMA5_UART4       - UART 4 (not available on the pins)
    CONFIG_SAMA5_TWI0        - Two-Wire Interface 0
    CONFIG_SAMA5_TWI1        - Two-Wire Interface 1
    CONFIG_SAMA5_SDMMC0      - SD MMC card interface 0 (not available on the pins)
    CONFIG_SAMA5_SDMMC1      - SD MMC card interface 1
    CONFIG_SAMA5_SPI0        - Serial Peripheral Interface 0
    CONFIG_SAMA5_SPI1        - Serial Peripheral Interface 1
    CONFIG_SAMA5_TC0         - Timer Counter 0 (ch. 0, 1, 2)
    CONFIG_SAMA5_TC1         - Timer Counter 1 (ch. 3, 4, 5)
    CONFIG_SAMA5_PWM         - Pulse Width Modulation Controller
    CONFIG_SAMA5_ADC         - Touch Screen ADC Controller
    CONFIG_SAMA5_XDMAC0      - XDMA Controller 0
    CONFIG_SAMA5_XDMAC1      - XDMA Controller 1
    CONFIG_SAMA5_UHPHS       - USB Host High Speed
    CONFIG_SAMA5_UDPHS       - USB Device High Speed
    CONFIG_SAMA5_EMAC0       - Ethernet MAC 0 (GMAC0) (not available on the pins)
    CONFIG_SAMA5_EMAC1       - Ethernet MAC 1 (GMAC1) (not available on the pins)
    CONFIG_SAMA5_LCDC        - LCD Controller (not available on the pins)
    CONFIG_SAMA5_ISI         - Image Sensor Interface (not available on the pins)
    CONFIG_SAMA5_SSC0        - Synchronous Serial Controller 0
    CONFIG_SAMA5_SSC1        - Synchronous Serial Controller 1
    CONFIG_SAMA5_SHA         - Secure Hash Algorithm
    CONFIG_SAMA5_AES         - Advanced Encryption Standard
    CONFIG_SAMA5_TDES        - Triple Data Encryption Standard
    CONFIG_SAMA5_TRNG        - True Random Number Generator
    CONFIG_SAMA5_ARM         - Performance Monitor Unit
    CONFIG_SAMA5_FUSE        - Fuse Controller
    CONFIG_SAMA5_MPDDRC      - MPDDR controller

Some subsystems can be configured to operate in different ways. The drivers
need to know how to configure the subsystem.

    CONFIG_SAMA5_PIOA_IRQ    - Support PIOA interrupts
    CONFIG_SAMA5_PIOB_IRQ    - Support PIOB interrupts
    CONFIG_SAMA5_PIOC_IRQ    - Support PIOD interrupts
    CONFIG_SAMA5_PIOD_IRQ    - Support PIOD interrupts

    CONFIG_USART0_SERIALDRIVER - Flexcom0 is configured as a UART
    CONFIG_USART1_SERIALDRIVER - Flexcom1 is configured as a UART
    CONFIG_USART2_SERIALDRIVER - Flexcom2 is configured as a UART
    CONFIG_USART3_SERIALDRIVER - Flexcom3 is configured as a UART
    CONFIG_USART4_SERIALDRIVER - Flexcom4 is configured as a UART

#### AT91SAMA5 specific device driver settings

    CONFIG_SAMA5_DBGU_SERIAL_CONSOLE - selects the DBGU
      for the console and ttyDBGU
    CONFIG_SAMA5_DBGU_RXBUFSIZE - Characters are buffered as received.
       This specific the size of the receive buffer
    CONFIG_SAMA5_DBGU_TXBUFSIZE - Characters are buffered before
       being sent. This specific the size of the transmit buffer
    CONFIG_SAMA5_DBGU_BAUD - The configure BAUD of the DBGU.
    CONFIG_SAMA5_DBGU_PARITY - 0=no parity, 1=odd parity, 2=even parity

    CONFIG_U[S]ARTn_SERIAL_CONSOLE - selects the USARTn (n=0,1,2,3) or UART
           m (m=4,5) for the console and ttys0 (default is the DBGU).
    CONFIG_U[S]ARTn_RXBUFSIZE - Characters are buffered as received.
       This specific the size of the receive buffer
    CONFIG_U[S]ARTn_TXBUFSIZE - Characters are buffered before
       being sent. This specific the size of the transmit buffer
    CONFIG_U[S]ARTn_BAUD - The configure BAUD of the UART. Must be
    CONFIG_U[S]ARTn_BITS - The number of bits. Must be either 7 or 8.
    CONFIG_U[S]ARTn_PARITY - 0=no parity, 1=odd parity, 2=even parity
    CONFIG_U[S]ARTn_2STOP - Two stop bits

#### AT91SAMA5 USB Host Configuration

Pre-requisites

    CONFIG_USBDEV          - Enable USB device support
    CONFIG_USBHOST         - Enable USB host support
    CONFIG_SAMA5_UHPHS     - Needed
    CONFIG_SAMA5_OHCI      - Enable the STM32 USB OTG FS block
    CONFIG_SCHED_WORKQUEUE - Worker thread support is required

Options:

    CONFIG_SAMA5_OHCI_NEDS
      Number of endpoint descriptors
    CONFIG_SAMA5_OHCI_NTDS
      Number of transfer descriptors
    CONFIG_SAMA5_OHCI_TDBUFFERS
      Number of transfer descriptor buffers
    CONFIG_SAMA5_OHCI_TDBUFSIZE
      Size of one transfer descriptor buffer
    CONFIG_USBHOST_INT_DISABLE
      Disable interrupt endpoint support
    CONFIG_USBHOST_ISOC_DISABLE
      Disable isochronous endpoint support
    CONFIG_USBHOST_BULK_DISABLE
      Disable bulk endpoint support

config SAMA5_OHCI_REGDEBUG

## Configurations

### Information Common to All Configurations

Each Giant Board configuration is maintained in a sub-directory and
can be selected as follow:

    tools/configure.sh giant-board:<subdir>

Before building, make sure the PATH environment variable includes the
correct path to the directory than holds your toolchain binaries.

And then build NuttX by simply typing the following. At the conclusion of
the make, the nuttx binary will reside in an ELF file called, simply, nuttx.

    make

The <subdir> that is provided above as an argument to the tools/configure.sh
must be is one of the following.

NOTES:

  1. These configurations use the mconf-based configuration tool. To
    change any of these configurations 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. Unless stated otherwise, all configurations generate console
     output on the DBGU (J23).

  3. All of these configurations use the Code Sourcery for Windows toolchain
     (unless stated otherwise in the description of the configuration). That
     toolchain selection can easily be reconfigured using 'make menuconfig'.
     Here are the relevant current settings:

     Build Setup:

    CONFIG_HOST_WINDOWS=y               : Microsoft Windows
    CONFIG_WINDOWS_CYGWIN=y             : Using Cygwin or other POSIX environment

System Type -> Toolchain:

    CONFIG_ARM_TOOLCHAIN_GNU_EABI=y  : GNU EABI toolchain

4. The SAMA5Dx is running at 528MHz by default in these configurations.

Board Selection -> CPU Frequency

    CONFIG_SAMA5D2XULT_528MHZ=y       : Enable 528MHz operation
    CONFIG_BOARD_LOOPSPERMSEC=65775   : Calibrated on SAMA5D3-Xplained at 528MHz running from SDRAM

### Configuration Sub-directories

Summary:  Some of the descriptions below are long and wordy. Here is the
concise summary of the available Giant Board configurations:

- nsh:

    This is a basic NuttShell (NSH) configuration.

    There may be issues with some of these configurations. See the details
    for status of individual configurations.

#### Now for the gory details:

- netnsh:

  This is a network enabled configuration based on the NuttShell (NSH).
  The CDC-ECM driver is enabled, so you can plug a USB cable into the
  USB-Micro port (USB-A) and the board will appear as an CDC-ECM
  ethernet adapter.

- nsh:

  This configuration directory provide the NuttShell (NSH). This is a
  very simple NSH configuration upon which you can build further
  functionality.

    NOTES:

    1. This configuration uses the UART1 (PD2 and PD3) for the serial
       console. USART1 is available at the "DBGU" RS-232 connector (J24).
       This is easily changed by reconfiguring to (1) enable a different
       serial peripheral, and (2) selecting that serial peripheral as the
       console device.

    2. By default, this configuration is set up to build on Windows
       under either a Cygwin or MSYS environment using a recent, Windows-
       native, generic ARM EABI GCC toolchain (such as the ARM supported
       toolchain). Both the build environment and the toolchain
       selection can easily be changed by reconfiguring:

       CONFIG_HOST_WINDOWS=y           : Windows operating system
       CONFIG_WINDOWS_CYGWIN=y         : POSIX environment under windows
       CONFIG_ARMV7A_TOOLCHAIN_EABIW=y : Generic GCC EABI toolchain for Windows

       If you are running on Linux, make *certain* that you have
       CONFIG_HOST_LINUX=y *before* the first make or you will create a
       corrupt configuration that may not be easy to recover from. See
       the warning in the section "Information Common to All Configurations"
       for further information.

    4. This configuration supports logging of debug output to a circular
       buffer in RAM. This feature is discussed fully in this Wiki page:
       http://nuttx.org/doku.php?id=wiki:howtos:syslog . Relevant
       configuration settings are summarized below:

       File System:

       Device Drivers:
       CONFIG_RAMLOG=y             : Enable the RAM-based logging feature.
       CONFIG_RAMLOG_SYSLOG=y      : This enables the RAM-based logger as the
                                     system logger.
       CONFIG_RAMLOG_NONBLOCKING=y : Needs to be non-blocking for dmesg
       CONFIG_RAMLOG_BUFSIZE=16384 : Buffer size is 16KiB

       NOTE: This RAMLOG feature is really only of value if debug output
       is enabled. But, by default, no debug output is disabled in this
       configuration. Therefore, there is no logic that will add anything
       to the RAM buffer. This feature is configured and in place only
       to support any future debugging needs that you may have.

       If you don't plan on using the debug features, then by all means
       disable this feature and save 16KiB of RAM!

       NOTE: There is an issue with capturing data in the RAMLOG:  If
       the system crashes, all of the crash dump information will into
       the RAMLOG and you will be unable to access it!  You can tell that
       the system has crashed because (a) it will be unresponsive and (b)
       the RED LED will be blinking at about 2Hz.

       That is another good reason to disable the RAMLOG!

    5. This configuration executes out of SDRAM flash and is loaded into
       SDRAM from SD card U-Boot. Data also is positioned in SDRAM.

       Booting with U-Boot from nuttx.bin on an SD card is the only boot
       method that has been tested. These are the commands that I used to boot NuttX
       from the SD card:

         U-Boot> fatload mmc 0 0x20008000 nuttx.bin
         U-Boot> go 0x20008040

    6. This configuration supports /dev/null, /dev/zero, and /dev/random.

         CONFIG_DEV_NULL=y    : Enables /dev/null
         CONFIG_DEV_ZERO=y    : Enabled /dev/zero

       Support for /dev/random is implemented using the SAMA5D2's True
       Random Number Generator (TRNG). See the section above entitled
       "TRNG and /dev/random" for information about configuring /dev/random.

        CONFIG_SAMA5_TRNG=y   : Enables the TRNG peripheral
        CONFIG_DEV_RANDOM=y   : Enables /dev/random

    7. This configuration has support for NSH built-in applications enabled.
       No built-in applications are enabled, however.

    8. This configuration has support for the FAT and PROCFS file
       systems built in.

       The FAT file system includes long file name support. Please be aware
       that Microsoft claims patents against the long file name support (see
       more discussion in the top-level NOTICE file).

         CONFIG_FS_FAT=y        : Enables the FAT file system
         CONFIG_FAT_LCNAMES=y   : Enable lower case 8.3 file names
         CONFIG_FAT_LFN=y       : Enables long file name support
         CONFIG_FAT_MAXFNAME=32 : Arbitrarily limits the size of a path
                                  segment name to 32 bytes

       The PROCFS file system is enabled simply with:

         CONFIG_FS_PROCFS=y     : Enable PROCFS file system

    9. The Real Time Clock/Calendar (RTC) is enabled in this configuration.
       See the section entitled "RTC" above for detailed configuration
       settings.

       The RTC alarm is not enabled by default since there is nothing in
       this configuration that uses it. The alarm can easily be enabled,
       however, as described in the "RTC" section.

       The time value from the RTC will be used as the NuttX system time
       in all timestamp operations. You may use the NSH 'date' command
       to set or view the RTC as described above in the "RTC" section.

       NOTE:  If you want the RTC to preserve time over power cycles, you
       will need to install a battery in the battery holder (J12) and close
       the jumper, JP13.

- sdmmcnsh:

    This is a configuration based on the NuttShell (NSH). The SDMMC
    peripheral is enabled, and can read and write to a VFAT filesystem
    on the SD Card.

    NuttX will mount the SD Card at `/mnt/mmcsd1`.

- sdmmc-net-nsh:

    This is a combination of the netnsh and sdmmcnsh configurations.
