This is the initial commit the port to the SAMD5x/E5x MCU family and also support for the Adafruit Metro M4 board. It port is untested and unfinished. It currently will not even link due to some missing clock related logic.
Squashed commit of the following:
arch/arm/src/samd5e5: Clean-up EIC logic.
arch/arm/src/samd5e5: Fix some compilation issues; Still issues with the EIC logic from samd2x.
arch/arm/src/samd5e5: Fix some compilation issues; bring in some EIC logic from samd2x.
arch/arm/src/samd5e5: Add NVMCTRL header file, fix some compiler problems, misc. clean-up.
configs/metro-m4: Add LED support.
arch/arm/src/samd5e5: Bring in SAML21 clock configuration. This is a WIP; it cannot possible even compile yet.
arch/arm/src/samd5e5: Leverage Cortex-M4 interrupt and SysTick logic from the SAM3/4.
arch/arm/src/samd5e5: Add SERCOM utility function.
arch/arm/src/samd5e5: Bring all SERCOM USART logic from SAMD2L2 to SAMD5E5. This is a brute coy with nothing more than more that name changes and extension from 5 to 7 SERCOMs.
arch/arm/src/samd5e5: Add sam_config.h header file
arch/arm/src/samd5e5/: Add Generic Clock (GCLK) utility functions.
arch/arm/src/samd5e5: Add EVSYS register definition file
arch/arm/src/samd5e5 and configs/metro-m4: Use SERCOM3 for the Arduino serial shield as console.
arch/arm/src/samd5e5/chip: Add SERCOM USART, SPI, I2C master, and slave register defintions header files
arch/arm/src/samd5e5/chip: Add AES, PM, TRNG, and WDT header files.
arch/arm/src/samd5e5/chip: Add pin multiplexing header files.
Various fixes to configuration system; fix metro-m4/nsh defconfig file.
configs/metro-m4: Add initial support for the Adafruit Metro M4 board.
arch/arm/src/samd5e5: Add peripheral clock helpers.
arch/arm/src/samd5e5/chip: Add PAC register definition header file. Fix some errors in the memory map header file.
arch/arm/src/samd5e5: Add chip.h headerf file.
arch/arm/src/samd5e5: Add PORT register definitions and support from SAML21.
arch/arm/include/samd5e5: Add interrupt vector definitions.
arch/arm/src/samd5e5: Add some boilerplate files. Correct some typos.
arch/arm/src/samd5e5/chip/sam_eic.h: Add EIC register definitions.
arch/arm/src/samd5e5/chip: Add OSC32KCTRL and OSCCTRL register definitions.
arch/arm/src/samd5e5/chip: Add GCLK, MCLK, and RSTC header files.
arch/arm/src/samd5e5/chip/sam_cmcc.h: Add CMCC register definitions
arch/arm/src/samd5e5/chip/sam_supc.h: Add SUPC header file.
arch/arm/src/samd5e5: Add start-up logic.
arch/arm/src/samd5e5: Add Make.defs file
arch/arm/src/samd5e5/chip: Add memory map header file.
arch/arm/include/samd5e5: Add chip.h header file.
arch/arm/Kconfig and arch/arm/src/samd5e5/Kconfig: Add configuration logic for the SAMD5x/Ex family.
2018-07-26 20:08:58 +02:00
|
|
|
README
|
|
|
|
======
|
|
|
|
|
|
|
|
This directory contains the port of NuttX to the Adafruit Metro M4. The
|
|
|
|
Metro M4 uses a Arduino form factor and and pinout. It's powered with an
|
|
|
|
ATSAMD51J19:
|
|
|
|
|
|
|
|
o Cortex M4 core running at 120 MHz
|
|
|
|
o Hardware DSP and floating point support
|
|
|
|
o 512 KB flash, 192 KB RAM
|
|
|
|
o 32-bit, 3.3V logic and power
|
|
|
|
o Dual 1 MSPS DAC (A0 and A1)
|
|
|
|
o Dual 1 MSPS ADC (8 analog pins)
|
|
|
|
o 6 x hardware SERCOM (I2C, SPI or UART)
|
|
|
|
o 16 x PWM outputs
|
|
|
|
o Stereo I2S input/output with MCK pin
|
|
|
|
o 10-bit Parallel capture controller (for camera/video in)
|
|
|
|
o Built in crypto engines with AES (256 bit), true RNG, Pubkey controller
|
|
|
|
o 64 QFN
|
|
|
|
|
2018-07-26 20:54:22 +02:00
|
|
|
STATUS
|
|
|
|
======
|
|
|
|
|
|
|
|
2018-07-26: The basic port was merged into master. It is still
|
|
|
|
incomplete and untested. It is missing the clock configuration logic.
|
|
|
|
There is a placeholder from the SAML21, but it is currently stubbed out
|
|
|
|
in the Make.defs file). Configuration options in the board.h header
|
|
|
|
file are bogus and also just cloned from the SAML21.
|
|
|
|
|
This is the initial commit the port to the SAMD5x/E5x MCU family and also support for the Adafruit Metro M4 board. It port is untested and unfinished. It currently will not even link due to some missing clock related logic.
Squashed commit of the following:
arch/arm/src/samd5e5: Clean-up EIC logic.
arch/arm/src/samd5e5: Fix some compilation issues; Still issues with the EIC logic from samd2x.
arch/arm/src/samd5e5: Fix some compilation issues; bring in some EIC logic from samd2x.
arch/arm/src/samd5e5: Add NVMCTRL header file, fix some compiler problems, misc. clean-up.
configs/metro-m4: Add LED support.
arch/arm/src/samd5e5: Bring in SAML21 clock configuration. This is a WIP; it cannot possible even compile yet.
arch/arm/src/samd5e5: Leverage Cortex-M4 interrupt and SysTick logic from the SAM3/4.
arch/arm/src/samd5e5: Add SERCOM utility function.
arch/arm/src/samd5e5: Bring all SERCOM USART logic from SAMD2L2 to SAMD5E5. This is a brute coy with nothing more than more that name changes and extension from 5 to 7 SERCOMs.
arch/arm/src/samd5e5: Add sam_config.h header file
arch/arm/src/samd5e5/: Add Generic Clock (GCLK) utility functions.
arch/arm/src/samd5e5: Add EVSYS register definition file
arch/arm/src/samd5e5 and configs/metro-m4: Use SERCOM3 for the Arduino serial shield as console.
arch/arm/src/samd5e5/chip: Add SERCOM USART, SPI, I2C master, and slave register defintions header files
arch/arm/src/samd5e5/chip: Add AES, PM, TRNG, and WDT header files.
arch/arm/src/samd5e5/chip: Add pin multiplexing header files.
Various fixes to configuration system; fix metro-m4/nsh defconfig file.
configs/metro-m4: Add initial support for the Adafruit Metro M4 board.
arch/arm/src/samd5e5: Add peripheral clock helpers.
arch/arm/src/samd5e5/chip: Add PAC register definition header file. Fix some errors in the memory map header file.
arch/arm/src/samd5e5: Add chip.h headerf file.
arch/arm/src/samd5e5: Add PORT register definitions and support from SAML21.
arch/arm/include/samd5e5: Add interrupt vector definitions.
arch/arm/src/samd5e5: Add some boilerplate files. Correct some typos.
arch/arm/src/samd5e5/chip/sam_eic.h: Add EIC register definitions.
arch/arm/src/samd5e5/chip: Add OSC32KCTRL and OSCCTRL register definitions.
arch/arm/src/samd5e5/chip: Add GCLK, MCLK, and RSTC header files.
arch/arm/src/samd5e5/chip/sam_cmcc.h: Add CMCC register definitions
arch/arm/src/samd5e5/chip/sam_supc.h: Add SUPC header file.
arch/arm/src/samd5e5: Add start-up logic.
arch/arm/src/samd5e5: Add Make.defs file
arch/arm/src/samd5e5/chip: Add memory map header file.
arch/arm/include/samd5e5: Add chip.h header file.
arch/arm/Kconfig and arch/arm/src/samd5e5/Kconfig: Add configuration logic for the SAMD5x/Ex family.
2018-07-26 20:08:58 +02:00
|
|
|
Serial Console
|
|
|
|
==============
|
|
|
|
|
|
|
|
An Arduino compatible serial Shield is assumed (or equivalently, and
|
|
|
|
external RS-232 or serial-to-USB adapter connected on Arduino pins D0 and
|
|
|
|
D1):
|
|
|
|
|
|
|
|
------ ----------------- -----------
|
|
|
|
SHIELD SAMD5E5 FUNCTION
|
|
|
|
------ ----------------- -----------
|
|
|
|
D0 PA23 SERCOM3 PAD2 RXD
|
|
|
|
D1 PA22 SERCOM3 PAD0 TXD
|
|
|
|
|
|
|
|
LEDs
|
|
|
|
====
|
|
|
|
|
|
|
|
The Adafruit Metro M4 has four LEDs, but only two are controllable by software:
|
|
|
|
|
|
|
|
1. The red LED on the Arduino D13 pin, and
|
|
|
|
2. A NeoPixel RGB LED.
|
|
|
|
|
|
|
|
Currently, only the red LED is supported.
|
|
|
|
|
|
|
|
------ ----------------- -----------
|
|
|
|
SHIELD SAMD5E5 FUNCTION
|
|
|
|
------ ----------------- -----------
|
|
|
|
D13 PA16 GPIO output
|
2018-07-26 20:54:22 +02:00
|
|
|
|
|
|
|
Configurations
|
|
|
|
==============
|
|
|
|
|
|
|
|
Each Adafruit Metro M4 configuration is maintained in a sub-directory and
|
|
|
|
can be selected as follow:
|
|
|
|
|
|
|
|
tools/configure.sh [OPTIONS] metro-m4/<subdir>
|
|
|
|
|
|
|
|
Do 'tools/configure.sh -h' for the list of options. If you are building
|
|
|
|
under Windows with Cygwin, you would need the -c option, for example.
|
|
|
|
|
|
|
|
Before building, make sure that the PATH environmental 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 configurations listed in the following paragraph.
|
|
|
|
|
|
|
|
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 of on SERCOM3 which is available on a Arduino Serial
|
|
|
|
Shield (see the section "Serial Console" above).
|
|
|
|
|
|
|
|
3. Unless otherwise stated, the configurations are setup build under
|
|
|
|
Linux with a generic ARM EABI toolchain:
|
|
|
|
|
|
|
|
Configuration sub-directories
|
|
|
|
-----------------------------
|
|
|
|
|
|
|
|
nsh:
|
|
|
|
This configuration directory will built the NuttShell. See NOTES above.
|