.. _mec1501modular_assy6885: Microchip MEC1501 Modular card ASSY6885 ####################################### Overview ******** The MEC1501 Modular card ASSY6885 is a development board to evaluate the Microchip MEC152X series microcontrollers. This board can work standalone or be mated with any platform that complies with MECC specification. .. image:: ../../../../../../../../../zephyr/boards/arm/mec1501modular_assy6885/doc/mec1501modular_assy6885.jpg :align: center :alt: MEC1501 Modular ASSY 6885 Hardware ******** - MEC1521HA0SZ ARM Cortex-M4 Processor - 256 KB RAM and 64 KB boot ROM - GPIO headers - UART1 using microUSB - PECI interface 3.0 - 10 SMBUS instances - FAN, PMW and TACHO pins - VCI interface - Independent Hardware Driven PS/2 Ports At difference from MEC15xx evaluation board, modular MEC1521 exposes the pins in 2 different ways: 1) Standalone mode via headers - GPIOs - PWM5 - JTAG/SWD, ETM and MCHP Trace ports - eSPI bus - SMB0 2) Mated mode with another platform that has a high density MECC connector. - FAN0, PWM0, SMB0, SMB1, SMB4 and SMB5 - eSPI bus - Breathing/Blinking LEDs The board is powered through the +5V USB Micro A connector or from the MECC connector. For more information about the SOC please see the `MEC152x Reference Manual`_ Supported Features ================== The mec1501modular_assy6885 board configuration supports the following hardware features: +-----------+------------+-------------------------------------+ | Interface | Controller | Driver/Component | +===========+============+=====================================+ | NVIC | on-chip | nested vector interrupt controller | +-----------+------------+-------------------------------------+ | SYSTICK | on-chip | systick | +-----------+------------+-------------------------------------+ | UART | on-chip | serial port | +-----------+------------+-------------------------------------+ | GPIO | on-chip | gpio | +-----------+------------+-------------------------------------+ | ESPI | on-chip | espi | +-----------+------------+-------------------------------------+ | I2C | on-chip | i2c | +-----------+------------+-------------------------------------+ | PINMUX | on-chip | pinmux | +-----------+------------+-------------------------------------+ | RTOS | on-chip | timer | +-----------+------------+-------------------------------------+ | TIMER | on-chip | counter | +-----------+------------+-------------------------------------+ | PWM | on-chip | pwm | +-----------+------------+-------------------------------------+ | ADC | on-chip | adc | +-----------+------------+-------------------------------------+ | WATCHDOG | on-chip | watchdog | +-----------+------------+-------------------------------------+ | PS2 | on-chip | ps2 | +-----------+------------+-------------------------------------+ Other hardware features are not currently supported by Zephyr (at the moment) The default configuration can be found in the :zephyr_file:`boards/arm/mec1501modular_assy6885/mec1501modular_assy6885_defconfig` Kconfig file. Connections and IOs =================== This evaluation board kit is comprised of the following HW blocks: - MEC1501 Modular Card ASSY 6885 Rev A0 `MEC1501 Modular EC Card - Assy_6885 Rev A0p1`_ System Clock ============ The MEC1501 MCU is configured to use the 48Mhz internal oscillator with the on-chip PLL to generate a resulting EC clock rate of 12 MHz. See Processor clock control register in chapter 4 "4.0 POWER, CLOCKS, and RESETS" of the data sheet in the references at the end of this document. Serial Port =========== UART1 is configured for serial logs. Jumper settings *************** Please follow the jumper settings below to properly demo this board. Advanced users may deviate from this recommendation. Jumper setting for MEC1501 Modular Assy 6885 Rev A1p0 ===================================================== Power-related jumpers --------------------- If you wish to power from type A/B connector ``P10`` set the jumper ``JP35 1-2``. If you wish to power through MECC connector ``P1`` and mate to external platform, set the jumper to ``JP35 3-4``. .. note:: A single jumper is required in JP35. +------+---------+---------+------+------+------+----------+ | JP30 | JP31 | JP32 | JP33 | JP34 | JP40 | JP21 | | VTR3 | VTR_PLL | VTR_REG | VTR1 | VTR2 | 3.3V | VREF_ADC | +======+=========+=========+======+======+======+==========+ | 1-2 | 1-2 | 1-2 | 1-2 | 1-2 | 1-2 | 1-2 | +------+---------+---------+------+------+------+----------+ +------+------------+------+----------+ | JP6 | JP36 | JP27 | JP4 | | VBAT | VTR_ANALOG | PECI | VREF_VTT | +======+============+======+==========+ | 2-3 | 1-2 | 2-3 | open | +------+------------+------+----------+ These jumpers configure nRESETI and JTAG_STRAP respectively. +-----------+---------------+ | JP22 | JP29 | | (nRESETI) | (JTAG_STRAP) | +===========+===============+ | 11-12 | 1-2 | +-----------+---------------+ Boot-ROM Straps --------------- These jumpers configure MEC1501 Boot-ROM straps. +-------------+------------+--------------+-------------+ | JP37 | J6 | JP41 | JP23 | | (CMP_STRAP) | (CR_STRAP) | (VTR2_STRAP) | (BSS_STRAP) | +=============+============+==============+=============+ | 1-2 | 1-2 | 1-2 | 3-4 | +-------------+------------+--------------+-------------+ ``JP23 3-4`` pulls SHD SPI CS0# up to VTR2. MEC1501 Boot-ROM samples SHD SPI CS0# and if high, it loads code from SHD SPI. This is the recommended setup. +-------------+------------+----------------------------+ | CR_STRAP | BSS_STRAP | SOURCE | +-------------+------------+----------------------------+ | 0 | X | Use 3.3V Private SPI | +-------------+------------+----------------------------+ | 1 | 0 | Use eSPI Flash channel | +-------------+------------+----------------------------+ | | 1 | Use 3.3V Shared channel(R)| +-------------+------------+----------------------------+ Power management ---------------- ``JP20 2-3`` is required so all GPIOs powered by VTR3 rail worked at 1.8V. .. note:: External 1.8V needs to be connected to JP13.1 +-------------------+-----------------+ | JP20 | JP13 | | (VTR3 selection) | (1.8V source) | +===================+=================+ | 2-3 | 1.8V to pin 1 | +-------------------+-----------------+ Jumper location map ------------------- .. code-block:: none +--------------------------------------------------------------------------------------+ | |------------| +----------+ J10 || | | [BT1] + +------------+ J50 ++ ++ || | | | JP38 JP43 ++ || || | | + + + +-+ JP4 + + JP26 || || | | JP6 + + + + + + + + || || | | JP31 ++ JP32 JP36 +-+ JP27 + + + + J6 || | | JP18 JP37 JP41 JP42 ++ | | ++ + + +--------+ J48 | | || JP21 + + +--------+ JP22 +----------+ | | J2 || + JP34 JP30 J11 ++ | | ++ + J44 || | | ++ +----------------+ || | | +---------------+ || + JP24 |----------------| ++ | | |---------------| ++ + +----------+ +----------------+ J47 | | JP20 +---------------+ JP23 JP40 +----------+ ++ | | + ++ JP29 || | | + + +----------+ + || | | J52+---------------+ + + +----------+ J5 +-------------+ ++ | | J45+---------------+ JP33 TP57 JP25 +-------------+ J4 J49 | | | | ++ TP4 +----------+ ++ | | ++ + + + + + + TP61 +----------+ ++ | | JP28 + + + + + TP65 + TP60 J51 JP35 | | TP58 JP16 JP11 JP13 JP15 JP10 | | TP5 | | TP6 TP1 | +--------------------------------------------------------------------------------------+ Programming and Debugging ************************* Setup ===== #. Clone the `MEC152x SPI Image Gen`_ repository or download the files within that directory. For the pre-production MEC150x use the `MEC150x SPI Image Gen`_ repository. #. Make the image generation available for Zephyr, by making the tool searchable by path, or by setting an environment variable ``EVERGLADES_SPI_GEN``, for example: .. code-block:: console export EVERGLADES_SPI_GEN=/everglades_spi_gen_RomE Note that the tools for Linux and Windows have different file names. For the pre-production MEC1501 SOC use everglades_spi_gen_lin64. #. If needed, a custom SPI image configuration file can be specified to override the default one. .. code-block:: console export EVERGLADES_SPI_CFG=custom_spi_cfg.txt Building ========== #. Build :ref:`hello_world` application as you would normally do. #. Once you have ``zephyr.bin``, use the `MEC152x SPI Image Gen`_ microchip tool to create the final binary. You need the output from this tool to flash in the SHD SPI memory. Flashing ======== #. Connect Dediprog into header ``J2``. #. Flash the SPI NOR ``U3`` at offset 0x0 using Dediprog SF100 or a similar tool for flashing SPI chips. #. Run your favorite terminal program to listen for output. Under Linux the terminal should be :code:`/dev/ttyACM0`. For example: .. code-block:: console $ minicom -D /dev/ttyACM0 -o The -o option tells minicom not to send the modem initialization string. Connection should be configured as follows: - Speed: 115200 - Data: 8 bits - Parity: None - Stop bits: 1 #. Connect the MEC1501MODULAR_ASSY6885 board to your host computer using the UART1 port and apply power. You should see ``"Hello World! mec1501modular_assy6885"`` in your terminal. Debugging ========= This board comes with a Cortex ETM port which facilitates tracing and debugging using a single physical connection. In addition, it comes with sockets for JTAG only sessions. HW Issues ========= In case you don't see your application running, please make sure ``LED1`` is lit. If is off, then check the power related jumpers again. References ********** .. target-notes:: .. _MEC152x Preliminary Data Sheet: https://github.com/MicrochipTech/CPGZephyrDocs/blob/master/MEC152x/MEC152x_Datasheet.pdf .. _MEC152x Reference Manual: https://github.com/MicrochipTech/CPGZephyrDocs/blob/master/MEC152x/MEC152x_Datasheet.pdf .. _MEC1501 Modular EC Card - Assy_6885 Rev A0p1: https://github.com/MicrochipTech/CPGZephyrDocs/blob/master/MEC1501/MEC1501%20Modular%20EC%20Card%20-%20Assy_6885%20Rev%20A0p1%20-%20SCH.pdf .. _MEC152x SPI Image Gen: https://github.com/MicrochipTech/CPGZephyrDocs/tree/master/MEC152x/SPI_image_gen .. _MEC150x SPI Image Gen: https://github.com/MicrochipTech/CPGZephyrDocs/tree/master/MEC1501/SPI_image_gen