Commit 335982b1 authored by Frank Li's avatar Frank Li Committed by Christopher Friedt
Browse files

boards: mm_feather: add board support for Feather



Add new board to support Madmachine Feather.

Signed-off-by: default avatarFrank Li <lgl88911@163.com>
parent 5c8f7bf8
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
#
# Copyright (c) 2021 MADMACHINE LIMITED
#
# SPDX-License-Identifier: Apache-2.0
#

zephyr_library()
zephyr_library_sources(pinmux.c)
zephyr_sources_ifdef(CONFIG_BOOT_FLEXSPI_NOR flexspi_nor_config.c)
zephyr_sources_ifdef(CONFIG_DEVICE_CONFIGURATION_DATA mmfeather_sdram_ini_dcd.c)
+10 −0
Original line number Diff line number Diff line
#
# Copyright (c) 2021, MADMACHINE LIMITED
#
# SPDX-License-Identifier: Apache-2.0
#

config BOARD_MM_FEATHER
	bool "MM MM-FEATHER"
	depends on SOC_SERIES_IMX_RT
	select SOC_PART_NUMBER_MIMXRT1062DVL6A
+18 −0
Original line number Diff line number Diff line
# MM-FEATHER board

# Copyright (c) 2021, MADMACHINE LIMITED
# SPDX-License-Identifier: Apache-2.0

if BOARD_MM_FEATHER

config BOARD
	default "mm_feather"

choice CODE_LOCATION
	default CODE_FLEXSPI
endchoice

config DISK_DRIVER_SDMMC
	default y if DISK_DRIVERS

endif # BOARD_MM_FEATHER
+12 −0
Original line number Diff line number Diff line
#
# Copyright (c) 2021, MADMACHINE LIMITED
#
# SPDX-License-Identifier: Apache-2.0
#

board_set_debugger_ifnset(pyocd)
board_set_flasher_ifnset(pyocd)

board_runner_args(pyocd "--target=mimxrt1050_quadspi")

include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)
+239 −0
Original line number Diff line number Diff line
.. _mm_feather:

MadMachine SwiftIO Feather
##########################

Overview
********

The SwiftIO Feather board, designed by MadMachine is
designed with support for the modern `Swift language
<https://docs.swift.org/swift-book/>`_.  Zephyr provides basic
low-level capabilities for the SwiftIO Feather board. Swift application would
run on top of Zephyr. More information about the board can be found
at:

- `MadMachine Homepage`_
- `SwiftIO API Reference`_

.. image:: ./mm_feather.jpg
   :width: 720px
   :align: center
   :alt: SwiftIO Feather Board

Hardware
********

- MIMXRT1062DVL6B MCU (Cortex-M7 at 600MHz, 2048KB on-chip memory)

- Memory

   - 8MB QSPI Flash
   - 32MB SDRAM
   - TF socket for SD card

- USB

   - USB-C 2.0 OTG connector

- Power

   - 5V USB power
   - 4.2V DC jack

- Debug

   - SWD connector


- RGB LED


Supported Features
==================

The mm_feather board configuration supports the following hardware
features:

+-----------+------------+-------------------------------------+
| Interface | Controller | Driver/Component                    |
+===========+============+=====================================+
| NVIC      | on-chip    | nested vector interrupt controller  |
+-----------+------------+-------------------------------------+
| SYSTICK   | on-chip    | systick                             |
+-----------+------------+-------------------------------------+
| DISPLAY   | on-chip    | display                             |
+-----------+------------+-------------------------------------+
| GPIO      | on-chip    | gpio                                |
+-----------+------------+-------------------------------------+
| I2C       | on-chip    | i2c                                 |
+-----------+------------+-------------------------------------+
| SPI       | on-chip    | spi                                 |
+-----------+------------+-------------------------------------+
| UART      | on-chip    | serial port-polling;                |
|           |            | serial port-interrupt               |
+-----------+------------+-------------------------------------+
| I2S       | on-chip    | I2S                                 |
+-----------+------------+-------------------------------------+
| USB       | on-chip    | USB device                          |
+-----------+------------+-------------------------------------+



Connections and IOs
===================

Note:
The following SwiftIO Feather pinout diagram is used for Swift programming.
The Swift ID is not the same as the Zephyr driver ID.

+-----------+---------------+----------+---------------+--------------------------+
| Name                      | GPIO                     | Other peripherals        |
+===========+===============+==========+===============+==========+===============+
| Swift ID  | Pin name      | Swift ID | Zephyr driver | Swift ID | Zephyr driver |
+-----------+---------------+----------+---------------+----------+---------------+
| P0        | GPIO_AD_B1_04 | D0       | GPIO1_IO20    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P1        | GPIO_AD_B1_08 | D1       | GPIO1_IO24    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P2        | GPIO_AD_B1_09 | D2       | GPIO1_IO25    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P3        | GPIO_AD_B1_10 | D3       | GPIO1_IO26    |          |               |
+-----------+---------------+----------+---------------+ UART1    | UART_8        |
| P4        | GPIO_AD_B1_11 | D4       | GPIO1_IO27    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P5        | GPIO_AD_B1_12 | D5       | GPIO1_IO28    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P6        | GPIO_AD_B1_15 | D6       | GPIO1_IO31    |          |               |
+-----------+---------------+----------+---------------+          |               |
| P7        | GPIO_AD_B1_14 | D7       | GPIO1_IO30    | SPI0     | SPI_3         |
+-----------+---------------+----------+---------------+          |               |
| P8        | GPIO_AD_B1_13 | D8       | GPIO1_IO29    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P9        | GPIO_AD_B1_03 | D9       | GPIO1_IO19    |          |               |
+-----------+---------------+----------+---------------+ UART0    | UART_2        |
| P10       | GPIO_AD_B1_02 | D10      | GPIO1_IO18    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P11       | GPIO_AD_B1_05 | D11      | GPIO1_IO21    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P12       | GPIO_AD_B0_14 | D12      | GPIO1_IO14    |          |               |
+-----------+---------------+----------+---------------+ CAN0     | CAN_3         |
| P13       | GPIO_AD_B0_15 | D13      | GPIO1_IO15    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P14       | GPIO_B0_00    | D14      | GPIO2_IO00    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P15       | GPIO_B1_03    | D15      | GPIO2_IO19    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P16       | GPIO_B1_02    | D16      | GPIO2_IO18    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P17       | GPIO_B1_01    | D17      | GPIO2_IO17    |          |               |
+-----------+---------------+----------+---------------+ UART2    | UART_4        |
| P18       | GPIO_B1_00    | D18      | GPIO2_IO16    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P19       | GPIO_B1_15    | D19      | GPIO2_IO31    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P20       | GPIO_B1_14    | D20      | GPIO2_IO30    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P21       | GPIO_B0_03    | D21      | GPIO2_IO03    |          |               |
+-----------+---------------+----------+---------------+          |               |
| P22       | GPIO_B0_02    | D22      | GPIO2_IO02    | SPI1     | SPI_4         |
+-----------+---------------+----------+---------------+          |               |
| P23       | GPIO_B0_01    | D23      | GPIO2_IO01    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P24       | GPIO_B0_04    | D24      | GPIO2_IO04    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P25       | GPIO_B0_05    | D25      | GPIO2_IO05    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P26       | GPIO_B0_06    | D26      | GPIO2_IO06    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P27       | GPIO_B0_07    | D27      | GPIO2_IO07    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P28       | GPIO_B0_08    | D28      | GPIO2_IO08    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P29       | GPIO_B0_09    | D29      | GPIO2_IO09    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P30       | GPIO_B0_10    | D30      | GPIO2_IO10    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P31       | GPIO_B0_11    | D31      | GPIO2_IO11    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P32       | GPIO_B0_12    | D32      | GPIO2_IO12    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P33       | GPIO_B0_13    | D33      | GPIO2_IO13    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P34       | GPIO_B0_14    | D34      | GPIO2_IO14    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
| P35       | GPIO_B0_15    | D35      | GPIO2_IO15    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
|           | GPIO_AD_B1_07 |          | GPIO1_IO23    |          |               |
+-----------+---------------+----------+---------------+ I2C0     | I2C_3         |
|           | GPIO_AD_B1_06 |          | GPIO1_IO22    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+
|           | GPIO_AD_B1_00 |          | GPIO1_IO16    |          |               |
+-----------+---------------+----------+---------------+ I2C1     | I2C_1         |
|           | GPIO_AD_B1_00 |          | GPIO1_IO17    |          |               |
+-----------+---------------+----------+---------------+----------+---------------+


Programming and Flash
*************************

Build and flash applications as usual (see :ref:`build_an_application` and
:ref:`application_run` for more details).

Configuring a Console
=====================

Connect a USB-to-serial adapter from your PC to corresponding UART pins of SwiftIO Feather.

Use the following settings with your serial terminal of choice (minicom, putty,
etc.):

- Speed: 115200
- Data: 8 bits
- Parity: None
- Stop bits: 1

Flashing
========

Here is an example for the :ref:`hello_world` application.

Connect a DAPLink debuger from your PC to corresponding SWD pins of SwiftIO Feather.

.. zephyr-app-commands::
   :zephyr-app: samples/hello_world
   :board: mm_feather
   :goals: flash

Open a serial terminal, reset the board (press the "reset" button), and you should
see the following message in the terminal:

.. code-block:: console

   *** Booting Zephyr OS build v2.6.0-rc1-301-gd9c666a5abf8  ***
   Hello World! mm_feather

Debugging
=========

Here is an example for the :ref:`hello_world` application.

.. zephyr-app-commands::
   :zephyr-app: samples/hello_world
   :board: mm_feather
   :goals: debug

Open a serial terminal, step through the application in your debugger, and you
should see the following message in the terminal:

.. code-block:: console

   *** Booting Zephyr OS build v2.6.0-rc1-301-gd9c666a5abf8  ***
   Hello World! mm_feather


.. _MadMachine Homepage:
   https://madmachine.io

.. _SwiftIO API Reference:
   https://swiftioapi.madmachine.io
Loading