/** @defgroup boards_arduino-zero Arduino Zero @ingroup boards @brief Support for the Arduino Zero board. ## Overview The `Arduino Zero` is a board by Arduino/Genuino featuring a ATSAMD21G18A. The SAMD21 is a ARM Cortex-M0+ micro-controller. It has 256KiB of flash memory and 32KiB of RAM. This board is available [here](https://store.arduino.cc/product/GBX00003). ## Hardware ![arduino-zero](https://www.arduino.cc/en/uploads/Main/ABX0003_iso_both.jpg) ### MCU | MCU | ATSAMD21G18A | |:------------- |:------------------------------------- | | Family | ARM Cortex-M0+ | | Vendor | Atmel | | RAM | 32KiB | | Flash | 256KiB | | Frequency | up to 48MHz | | FPU | no | | Timers | 6 (1x 16-bit, 2x 24-bit, 3x 32-bit) | | ADCs | 6x 12-bit channels) | | UARTs | 2 | | SPIs | max 6 (see UART) | | I2Cs | max 6 (see UART) | | Vcc | 1.8V - 3.6V | | Datasheet | [Datasheet](http://ww1.microchip.com/downloads/en/DeviceDoc/SAM_D21_DA1_Family_Data%20Sheet_DS40001882E.pdf) | ### User Interface 1 LED: | Device | PIN | |:------ |:---- | | LED0 | PA17 | ## Implementation Status Notice that the initial support for the Arduino Zero was based on samr21-xpro and Sodaq Autonomo. | Device | ID | Supported | Comments | |:------------- |:------------- |:------------- |:------------- | | MCU | samd21 | partly | Energy saving modes not fully utilized | | Low-level driver | GPIO | yes | | | | PWM | to be tested | | | | UART | yes | two UARTs| | | I2C | yes | | | | SPI | yes | | | | ADC | not implemented | | | | USB | no | | | | RTT | yes | | | | RTC | yes | | | | RNG | no | no HW module | | | Timer | yes | | Detailed information on the board can be found on [the official web page](https://www.arduino.cc/en/Main/ArduinoBoardZero). ## Flashing the device The standard method for flashing RIOT to the Arduino Zero is using OpenOCD. For this to work properly, **you have to make sure to use a very recent version of OpenOCD**. Arduino-IDE comes with openocd v0.9.0 which is known to work. Also Ubuntu 16.04 has openocd v0.9.0. Refer to https://github.com/RIOT-OS/RIOT/wiki/OpenOCD for building OpenOCD and make sure "cmsis-dap" and "hidapi-libusb" are enabled. ## Supported Toolchains To build software for the Arduino Zero board we strongly recommend the usage of the [GNU Tools for ARM Embedded Processors](https://launchpad.net/gcc-arm-embedded) toolchain. ## Known Issues / Problems ### Stack sizes The default stack sizes have not been tuned properly yet. If in doubt why your application crashes try increasing the default stack sizes and use `ps` to find out how much stack is being used. Tracked in https://github.com/RIOT-OS/RIOT/issues/2228 */