This is an automated email from the ASF dual-hosted git repository.

acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit b1993545de258dfa32a245f3f6d70a9797b4eb6f
Author: Alan Carvalho de Assis <[email protected]>
AuthorDate: Thu Oct 15 16:28:54 2026 -0300

    Documentation: add Digital Dream EC300 board documentation
    
    Document the ddcnc-ec300 board: features, serial console (RS-232 on the
    "UART" connector), Ethernet, LEDs, the motion control I/O map, flashing
    and backing up the original firmware with OpenOCD, and the nsh and
    netnsh configurations.
    
    Signed-off-by: Alan Carvalho de Assis <[email protected]>
    Assisted-by: Claude Opus 5.5
---
 .../arm/imxrt/boards/ddcnc-ec300/ec300.png         | Bin 0 -> 1135795 bytes
 .../arm/imxrt/boards/ddcnc-ec300/index.rst         | 283 +++++++++++++++++++++
 2 files changed, 283 insertions(+)

diff --git a/Documentation/platforms/arm/imxrt/boards/ddcnc-ec300/ec300.png 
b/Documentation/platforms/arm/imxrt/boards/ddcnc-ec300/ec300.png
new file mode 100644
index 00000000000..e4d94342a3e
Binary files /dev/null and 
b/Documentation/platforms/arm/imxrt/boards/ddcnc-ec300/ec300.png differ
diff --git a/Documentation/platforms/arm/imxrt/boards/ddcnc-ec300/index.rst 
b/Documentation/platforms/arm/imxrt/boards/ddcnc-ec300/index.rst
new file mode 100644
index 00000000000..0333fa9956d
--- /dev/null
+++ b/Documentation/platforms/arm/imxrt/boards/ddcnc-ec300/index.rst
@@ -0,0 +1,283 @@
+===================
+Digital Dream EC300
+===================
+
+.. tags:: arch:arm, chip:imxrt, part:imxrt1052, vendor:nxp
+
+The Digital Dream EC300 is a 3 to 6 axis Ethernet CNC motion controller
+originally designed to be used with the Mach3 software.  It is based on the
+NXP i.MX RT1052 crossover MCU (ARM Cortex-M7).
+
+.. figure:: ec300.png
+   :align: center
+
+This port is intended to be the hardware base for running a CNC motion
+controller entirely on NuttX.  The pin information used here was taken from
+the `Remora-RT1052 <https://github.com/scottalford75/Remora-RT1052-cpp>`_
+firmware project (which runs on the EC300, EC500 and NVEM boards) and from
+the `EC300 User Manual 
<https://nvcnc.net/pdf/EC300%20User%20Manual%20V2-nvcnc.pdf>`_.
+
+Features
+========
+
+- Processor
+    - MIMXRT1052CVL5B, ARM Cortex-M7 at 528 MHz
+    - 512 KiB of OCRAM (FlexRAM, no external SDRAM)
+- Memory
+    - 4 MiB Winbond W25Q32 Quad SPI NOR flash on FlexSPI (XIP boot)
+- Connectivity
+    - 10/100 Ethernet, Microchip LAN8720A RMII PHY
+    - MPG port (Digital Dream NVMPG pendant) on LPUART5
+- Motion control I/O (all opto-isolated)
+    - 6 step/direction axis outputs (X, Y, Z, A, B, C)
+    - 12 general purpose digital inputs
+    - 10 general purpose digital outputs
+    - 0-10V (or PWM) spindle speed output
+- Power
+    - 24 VDC main supply, separate 24 VDC IO supply
+
+Supported peripherals
+=====================
+
+The initial port supports the serial console, the CONN LED and the Ethernet
+interface.  Step generation, digital IO, spindle and MPG drivers will be
+added later.
+
+========== ======= =====================================
+Peripheral Support NOTES
+========== ======= =====================================
+LPUART4    Yes     Serial console
+ENET       Yes     LAN8720A PHY, RMII, 50 MHz from MCU
+GPIO       Yes     CONN LED
+LPUART5    No      MPG port, pins already defined
+FlexPWM    No      Spindle PWM / step generation
+QDC/ENC    No      Encoder inputs
+========== ======= =====================================
+
+Serial Console
+==============
+
+The NuttX console is on LPUART4 at 115200 8N1:
+
+========== ========== ==========
+Function   Pad        Signal
+========== ========== ==========
+LPUART4_TX GPIO_B1_00 LPUART4_TX
+LPUART4_RX GPIO_B1_01 LPUART4_RX
+========== ========== ==========
+
+The console is available with RS-232 levels on the bottom right connector
+of the EC300, labeled::
+
+    UART
+    RXD TXD GND
+
+Connect it to an RS-232 serial port (or a USB to RS-232 adapter): the
+connector TXD goes to the PC RXD, the connector RXD goes to the PC TXD and
+GND to GND.  Do not connect a 3.3V (TTL) USB-to-serial adapter directly to
+this connector.
+
+Ethernet
+========
+
+The EC300 uses a LAN8720A RMII PHY.  The i.MX RT generates the 50 MHz RMII
+reference clock on ``ENET_REF_CLK`` and feeds it to the PHY.  The PHY uses
+MDIO address 0.  It has no reset or interrupt line connected to the MCU.
+
+============= =========== =============
+Function      Pad         Signal
+============= =========== =============
+ENET_RX_DATA0 GPIO_B1_04  ENET_RX_DATA00
+ENET_RX_DATA1 GPIO_B1_05  ENET_RX_DATA01
+ENET_RX_EN    GPIO_B1_06  ENET_RX_EN
+ENET_TX_DATA0 GPIO_B1_07  ENET_TX_DATA00
+ENET_TX_DATA1 GPIO_B1_08  ENET_TX_DATA01
+ENET_TX_EN    GPIO_B1_09  ENET_TX_EN
+ENET_REF_CLK  GPIO_B1_10  ENET_REF_CLK
+ENET_RX_ER    GPIO_B1_11  ENET_RX_ER
+ENET_MDC      GPIO_B1_14  ENET_MDC
+ENET_MDIO     GPIO_B1_15  ENET_MDIO
+============= =========== =============
+
+The i.MX RT ENET driver hard-codes MDIO address 1 when
+``CONFIG_ETH0_PHY_LAN8720`` is selected.  So the board uses
+``CONFIG_ETH0_PHY_MULTI`` and supplies its own PHY description through
+``BOARD_ETH0_PHY_LIST`` in ``include/board.h``.
+
+The MAC address comes from the MCU unique ID fuses (OCOTP), so every board
+gets a different, stable MAC address.
+
+The PHY interrupt output is not connected to the MCU either.  The board
+emulates it by polling (``CONFIG_DDCNC_EC300_PHY_POLL_MSEC``, 1 second by
+default), so the PHY notification ioctl (``SIOCMIINOTIFY``) works and the
+NETINIT link monitor (``CONFIG_NETINIT_MONITOR``) can detect link changes.
+When the cable is plugged in after boot, or unplugged and plugged again, the
+interface is brought up again and the PHY renegotiates the link speed.
+
+LEDs
+====
+
+There are three LEDs on the front panel: POWER, IO and CONN.  POWER and IO
+are driven by hardware.  CONN is connected to ``GPIO_SD_B1_00``
+(``GPIO3_IO00``) and is lit when the pin is low.
+
+If ``CONFIG_ARCH_LEDS`` is enabled, NuttX uses the CONN LED to show its
+status:
+
+================= ======================= =====
+SYMBOL            Meaning                 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
+================= ======================= =====
+
+If the LED is always on, NuttX has booted and is running normally.  If it
+flashes at about 2 Hz, a fatal error was detected and the system has halted.
+
+If ``CONFIG_ARCH_LEDS`` is not enabled, the CONN LED can be controlled by
+applications with the ``USERLED`` driver.
+
+Motion Control I/O
+==================
+
+Remora uses the following MCU GPIOs for the EC300 machine I/O.  No NuttX
+drivers use them yet; they are listed here for reference.  All inputs are
+active low (opto-isolated).
+
+Step generator outputs:
+
+==== ======== =========
+Axis Step     Direction
+==== ======== =========
+X    GPIO1_22 GPIO1_17
+Y    GPIO1_24 GPIO1_31
+Z    GPIO1_18 GPIO1_25
+A    GPIO1_27 GPIO1_21
+B    GPIO1_16 GPIO1_23
+C    GPIO1_20 GPIO1_19
+==== ======== =========
+
+Digital inputs:
+
+===== ======== ===== ========
+Input GPIO     Input GPIO
+===== ======== ===== ========
+IN01  GPIO4_26 FHA   GPIO3_26
+IN02  GPIO4_27 FHB   GPIO4_30
+IN03  GPIO4_21 SRO   GPIO3_19
+IN04  GPIO4_24 SRJ   GPIO4_20
+IN05  GPIO4_28 INDEX GPIO3_22
+IN06  GPIO4_25 WHA   GPIO3_16
+IN07  GPIO4_29 WHB   GPIO3_17
+IN08  GPIO4_23 CIN   GPIO4_18
+IN09  GPIO4_31 XIN   GPIO4_17
+IN10  GPIO3_18 YIN   GPIO4_16
+IN11  GPIO3_21 ZIN   GPIO4_15
+IN12  GPIO3_20 AIN   GPIO4_14
+===== ======== ===== ========
+
+Digital outputs OT01 to OT10 are on ``GPIO4_02``, ``GPIO4_01``, then
+``GPIO4_03`` to ``GPIO4_10``.  The MPG handwheel inputs are X100IN
+(``GPIO4_13``), X10IN (``GPIO4_12``) and EP (``GPIO4_11``).
+
+Flashing
+========
+
+The EC300 boots from its QSPI NOR flash, a Winbond W25Q32 (JEDEC ID
+``0xef4016``).  The NuttX image includes the FlexSPI configuration block,
+image vector table and boot data needed by the i.MX RT boot ROM, so the
+image is flashed at the start of the flash (``0x60000000``).  The
+configurations generate a raw binary (``nuttx.bin``) for this.
+
+The flash is programmed through the SWD port.  OpenOCD has no flash driver
+for the i.MX RT FlexSPI controller, so the board provides an OpenOCD
+configuration that implements the QSPI NOR erase, program, verify and read
+operations as Tcl commands:
+``boards/arm/imxrt/ddcnc-ec300/tools/ddcnc-ec300.cfg``.  It has been tested
+with OpenOCD 0.12.0 and an ST-Link/V2 probe; other probes can be selected
+by setting ``INTERFACE`` (e.g. ``-c "set INTERFACE cmsis-dap"``).
+
+.. warning::
+
+   Flashing NuttX erases the original Mach3 firmware.  Make a backup of the
+   flash first, so it can be restored later.
+
+Backup the whole 4 MiB flash::
+
+    $ openocd -f boards/arm/imxrt/ddcnc-ec300/tools/ddcnc-ec300.cfg \
+        -c "init; ec300_flash_dump ec300-original.bin; reset run; shutdown"
+
+Program NuttX, verify it and reboot the board::
+
+    $ openocd -f boards/arm/imxrt/ddcnc-ec300/tools/ddcnc-ec300.cfg \
+        -c "init; ec300_program nuttx.bin; shutdown"
+
+Restore the original firmware from the backup::
+
+    $ openocd -f boards/arm/imxrt/ddcnc-ec300/tools/ddcnc-ec300.cfg \
+        -c "init; ec300_program ec300-original.bin; shutdown"
+
+Other commands provided by the configuration (run them after ``init``):
+
+=================================== ====================================
+Command                             Description
+=================================== ====================================
+``ec300_flash_info``                Show the JEDEC ID and status registers
+``ec300_flash_erase <off> <len>``   Erase a range (4 KiB sectors)
+``ec300_flash_erase_all``           Erase the whole flash
+``ec300_flash_write <file> [off]``  Program a raw binary file
+``ec300_flash_verify <file> [off]`` Compare the flash with a binary file
+``ec300_flash_dump <file> [off]``   Read the flash into a file
+=================================== ====================================
+
+Programming runs at about 7 KiB/s with an ST-Link/V2, so a NuttX image
+takes around 25 seconds.
+
+Configurations
+==============
+
+Each configuration is set up and built like this::
+
+    $ ./tools/configure.sh ddcnc-ec300:<subdir>
+    $ make
+
+Where ``<subdir>`` is one of the following:
+
+nsh
+---
+
+A basic NuttShell (NSH) configuration on the LPUART4 serial console.
+
+netnsh
+------
+
+Same as ``nsh``, plus Ethernet networking with TCP, UDP, ICMP (ping) and
+the Telnet daemon.  The network is initialized in a background thread that
+keeps monitoring the link state, so the Ethernet cable can be connected
+after the board has booted.  The board uses a static IPv4 address that matches 
the
+Remora / LinuxCNC defaults:
+
+=========== ===========
+Setting     Value
+=========== ===========
+IP address  10.10.10.10
+Netmask     255.255.255.0
+Gateway     10.10.10.1
+=========== ===========
+
+To test it, set the host's Ethernet interface to an address in the
+``10.10.10.x`` network, then::
+
+    $ ping 10.10.10.10
+    $ telnet 10.10.10.10
+
+On the board you can check the interface with::
+
+    nsh> ifconfig
+    nsh> ping 10.10.10.1

Reply via email to