Browse Source

add nuttx for develop

pull/3/head
Wang_Weigen 1 year ago
parent
commit
36f3e40c55
  1. 8
      APP_Framework/Framework/transform_layer/xiuos/user_api/Makefile
  2. 4
      APP_Framework/Framework/transform_layer/xiuos/user_api/posix_support/Kconfig
  3. 18
      APP_Framework/Framework/transform_layer/xiuos/user_api/posix_support/Makefile
  4. 2
      APP_Framework/lib/app_newlib/Makefile
  5. 155
      APP_Framework/lib/app_newlib/stdio.c
  6. 1
      Ubiquitous/Nuttx/apps/builtin/registry/readme.md
  7. 8
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/Kconfig
  8. 149
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/README.txt
  9. 64
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/configs/nsh/defconfig
  10. 62
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/configs/usbnsh/defconfig
  11. 535
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/include/board.h
  12. 63
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/scripts/Make.defs
  13. 111
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/scripts/flash.ld
  14. 51
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/src/Makefile
  15. 122
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/src/arduino_m0.h
  16. 89
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/src/sam_adc.c
  17. 71
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/src/sam_appinit.c
  18. 143
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/src/sam_autoleds.c
  19. 99
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/src/sam_boot.c
  20. 71
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/src/sam_bringup.c
  21. 289
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/src/sam_spi.c
  22. 110
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/src/sam_usb.c
  23. 104
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/src/sam_userleds.c
  24. 82
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd20-xplained/Kconfig
  25. 873
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd20-xplained/README.txt
  26. 65
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd20-xplained/configs/nsh/defconfig
  27. 515
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd20-xplained/include/board.h
  28. 63
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd20-xplained/scripts/Make.defs
  29. 110
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd20-xplained/scripts/flash.ld
  30. 53
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd20-xplained/src/Makefile
  31. 123
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd20-xplained/src/sam_appinit.c
  32. 151
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd20-xplained/src/sam_autoleds.c
  33. 76
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd20-xplained/src/sam_boot.c
  34. 127
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd20-xplained/src/sam_buttons.c
  35. 114
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd20-xplained/src/sam_mmcsd.c
  36. 406
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd20-xplained/src/sam_spi.c
  37. 191
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd20-xplained/src/sam_ug2832hsweg04.c
  38. 107
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd20-xplained/src/sam_userleds.c
  39. 255
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd20-xplained/src/samd20-xplained.h
  40. 82
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd21-xplained/Kconfig
  41. 744
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd21-xplained/README.txt
  42. 65
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd21-xplained/configs/nsh/defconfig
  43. 529
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd21-xplained/include/board.h
  44. 63
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd21-xplained/scripts/Make.defs
  45. 110
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd21-xplained/scripts/flash.ld
  46. 53
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd21-xplained/src/Makefile
  47. 123
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd21-xplained/src/sam_appinit.c
  48. 149
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd21-xplained/src/sam_autoleds.c
  49. 77
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd21-xplained/src/sam_boot.c
  50. 127
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd21-xplained/src/sam_buttons.c
  51. 114
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd21-xplained/src/sam_mmcsd.c
  52. 406
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd21-xplained/src/sam_spi.c
  53. 191
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd21-xplained/src/sam_ug2832hsweg04.c
  54. 107
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd21-xplained/src/sam_userleds.c
  55. 255
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/samd21-xplained/src/samd21-xplained.h
  56. 115
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/saml21-xplained/Kconfig
  57. 895
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/saml21-xplained/README.txt
  58. 68
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/saml21-xplained/configs/nsh/defconfig
  59. 657
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/saml21-xplained/include/board.h
  60. 63
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/saml21-xplained/scripts/Make.defs
  61. 118
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/saml21-xplained/scripts/flash.ld
  62. 53
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/saml21-xplained/src/Makefile
  63. 123
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/saml21-xplained/src/sam_appinit.c
  64. 149
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/saml21-xplained/src/sam_autoleds.c
  65. 77
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/saml21-xplained/src/sam_boot.c
  66. 128
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/saml21-xplained/src/sam_buttons.c
  67. 114
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/saml21-xplained/src/sam_mmcsd.c
  68. 406
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/saml21-xplained/src/sam_spi.c
  69. 191
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/saml21-xplained/src/sam_ug2832hsweg04.c
  70. 108
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/saml21-xplained/src/sam_userleds.c
  71. 254
      Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/saml21-xplained/src/saml21-xplained.h
  72. 108
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/Kconfig
  73. 323
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/README.txt
  74. 47
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/configs/nsh/defconfig
  75. 487
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/include/board.h
  76. 78
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/scripts/Make.defs
  77. 108
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/scripts/flash.ld
  78. 56
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/scripts/nvm.c
  79. 2
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/scripts/nvm.srec
  80. 107
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/scripts/sram.ld
  81. 74
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/src/Makefile
  82. 163
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/src/metro-m4.h
  83. 79
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/src/sam_appinit.c
  84. 125
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/src/sam_at24.c
  85. 285
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/src/sam_autoleds.c
  86. 331
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/src/sam_automount.c
  87. 79
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/src/sam_boot.c
  88. 75
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/src/sam_bq27426.c
  89. 174
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/src/sam_bringup.c
  90. 348
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/src/sam_composite.c
  91. 341
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/src/sam_gpio.c
  92. 87
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/src/sam_i2c.c
  93. 235
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/src/sam_smartfs.c
  94. 92
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/src/sam_usbdev.c
  95. 235
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/src/sam_usbhost.c
  96. 71
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/src/sam_usbmsc.c
  97. 218
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/metro-m4/src/sam_userleds.c
  98. 50
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/same54-xplained-pro/Kconfig
  99. 159
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/same54-xplained-pro/README.txt
  100. 48
      Ubiquitous/Nuttx/nuttx/boards/arm/samd5e5/same54-xplained-pro/configs/nsh/defconfig

8
APP_Framework/Framework/transform_layer/xiuos/user_api/Makefile

@ -1,7 +1,7 @@
SRC_DIR := switch_api posix_support
SRC_DIR := posix_support
# # ifeq ($(CONFIG_SEPARATE_COMPILE),y)
# SRC_DIR += switch_api
# # endif
ifeq ($(CONFIG_SEPARATE_COMPILE),y)
SRC_DIR += switch_api
endif
include $(KERNEL_ROOT)/compiler.mk

4
APP_Framework/Framework/transform_layer/xiuos/user_api/posix_support/Kconfig

@ -1,4 +0,0 @@
config POSIX_API
bool "support posix api"
default n

18
APP_Framework/Framework/transform_layer/xiuos/user_api/posix_support/Makefile

@ -1,21 +1,3 @@
# ifeq ($(CONFIG_POSIX_API),y)
# SRC_FILES += pthread.c
# ifeq ($(CONFIG_KERNEL_SEMAPHORE),y)
# SRC_FILES += semaphore.c
# endif
# ifeq ($(CONFIG_KERNEL_MUTEX),y)
# SRC_FILES += pthread_mutex.c
# endif
# ifeq ($(CONFIG_KERNEL_MESSAGEQUEUE),y)
# SRC_FILES += mqueue.c
# endif
# else
# SRC_FILES :=
# endif
SRC_FILES := pthread.c semaphore.c pthread_mutex.c mqueue.c

2
APP_Framework/lib/app_newlib/Makefile

@ -1,3 +1,3 @@
SRC_FILES := stdio.c fs_syscalls.c mem_syscalls.c
SRC_FILES := fs_syscalls.c mem_syscalls.c
include $(KERNEL_ROOT)/compiler.mk

155
APP_Framework/lib/app_newlib/stdio.c

@ -1,155 +0,0 @@
/*
* Copyright (c) 2006-2018, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2017/10/15 bernard the first version
*/
/**
* @file stdio.c
* @brief support newlib stdio
* @version 1.0
* @author AIIT XUOS Lab
* @date 2021-04-25
*/
/*************************************************
File name: stdio.c
Description: support newlib stdio
Others: take RT-Thread v4.0.2/components/libc/compilers/newlib/stdio.c for references
https://github.com/RT-Thread/rt-thread/tree/v4.0.2
History:
1. Date: 2021-04-25
Author: AIIT XUOS Lab
Modification: Use set and get console functions
*************************************************/
#include <libc.h>
#include <stdio.h>
#include <stdlib.h>
#define STDIO_DEVICE_NAME_MAX 32
static FILE* std_console = NULL;
/**
* This function will set system console device.
*
* @param device_name the name of device
* @param mode the mode
*
* @return file number on success; or -1 on failure
*/
int LibcStdioSetConsole(const char* device_name, int mode)
{
FILE *fp;
char name[STDIO_DEVICE_NAME_MAX];
char *file_mode;
snprintf(name, sizeof(name) - 1, "/dev/%s", device_name);
name[STDIO_DEVICE_NAME_MAX - 1] = '\0';
switch (mode)
{
case O_RDWR:
file_mode = "r+";
break;
case O_WRONLY:
file_mode = "wb";
break;
default:
file_mode = "rb";
break;
}
/* try to open file */
fp = fopen(name, file_mode);
if (fp)
{
/* set the fp buffer */
setvbuf(fp, NULL, _IONBF, 0);
if (std_console)
/* try to close console device */
fclose(std_console);
std_console = fp;
if (mode == O_RDWR)
{
/* set _stdin as std_console */
_GLOBAL_REENT->_stdin = std_console;
}
else
{
/* set NULL */
_GLOBAL_REENT->_stdin = NULL;
}
if (mode == O_RDONLY)
{
/* set the _stdout as NULL */
_GLOBAL_REENT->_stdout = NULL;
/* set the _stderr as NULL */
_GLOBAL_REENT->_stderr = NULL;
}
else
{
/* set the _stdout as std_console */
_GLOBAL_REENT->_stdout = std_console;
/* set the _stderr as std_console */
_GLOBAL_REENT->_stderr = std_console;
}
/* set the __sdidinit as 1 */
_GLOBAL_REENT->__sdidinit = 1;
}
if (std_console)
/* return the file number */
return fileno(std_console);
/* failure and return -1 */
return -1;
}
/**
* This function will get system console device.
*
* @return file number on success; or -1 on failure
*/
int LibcStdioGetConsole(void) {
if (std_console)
/* return the file number */
return fileno(std_console);
else
/* failure and return -1 */
return -1;
}
/**
* This function will initialize the c library system.
*
* @return 0
*/
int LibcSystemInit(void)
{
#if defined(KERNEL_CONSOLE)
HardwareDevType console;
/* try to get console device */
console = ObtainConsole();
if (console)
{
#if defined(LIB_POSIX)
/* set console device mode */
LibcStdioSetConsole(console->dev_name, O_RDWR);
#else
/* set console device mode */
LibcStdioSetConsole(console->dev_name, O_WRONLY);
#endif
}
#endif
return 0;
}

1
Ubiquitous/Nuttx/apps/builtin/registry/readme.md

@ -0,0 +1 @@
this is readme

8
Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/Kconfig

@ -0,0 +1,8 @@
#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
if ARCH_BOARD_ARDUINO_M0
endif

149
Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/README.txt

@ -0,0 +1,149 @@
README
======
This README discusses issues unique to NuttX configurations for the
Arduino M0. I used a compatible board called Wemos SAMD21 M0 board,
but there are other equivalent boards, like the RobotDyn SAMD21 M0.
Unfortunately because the Arduino.cc vs Arduino.org conflict in the past,
we have three types of boards: Arduino Zero, Arduino M0 and Arduino M0 Pro.
The Wemos SAMD21 M0 is compatible with Arduino M0, but not exactly a clone.
You have two options to program it: using the SWD (EDBG) connector that
comes in the board or the Arduino M0 bootloader that comes flashed on it.
Currently only SWD programming is supported. Bootloader skip area should be
implemented to avoid overwriting the bootloader area.
The board uses the ATSAMD21G18A MCU and can work over the Native USB Port.
Contents
========
- STATUS/ISSUES
- LEDs
- Serial Consoles
- Configurations
STATUS/ISSUES
=============
Because the Arduino M0 doesn't have a 12MHz crystal, it uses the internal
RC oscillator.
LEDs
====
There is one yellow LED available on the Arduino M0 and it can be turned
on and off. The LED can be activated by driving the connected
PA17 I/O line to high level.
When CONFIG_ARCH_LEDS is defined in the NuttX configuration, NuttX will
control the LED as follows:
SYMBOL Meaning LED0
------------------- ----------------------- ------
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
Thus is LED is statically on, NuttX has successfully booted and is,
apparently, running normally. If LED is flashing at approximately
2Hz, then a fatal error has been detected and the system has halted.
Serial Consoles
===============
SERCOM5
------
SERCOM5 is available on pins PB22 (TXD) and PB23 (RXD). You will need to
solder a two pins header to RXD and TXD labels, near to ICSP pin header.
PIN GPIO Function
---- ---- ------------------
37 PB22 SERCOM5 / USART RX
38 PB23 SERCOM5 / USART TX
If you have a 3.3V USB/Serial adapter then this is the most convenient
serial console to use (because you don't lose the console device each time
you lose the USB connection). It is the default in all of these
configurations. An option is to use the virtual COM port.
Native USB Port
---------------
You can access the NSH shell directly using the USB connector. All you need
to do is use the "usbnsh" board profile.
Configurations
==============
Each Arduino M0 configuration is maintained in a sub-directory and
can be selected as follow:
tools/configure.sh arduino-m0:<subdir>
Before building, make sure the PATH environment variable include 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 the following.
NOTE: 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.
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.
Configuration sub-directories
-----------------------------
nsh:
This configuration directory will built the NuttShell. See NOTES above
and below:
NOTES:
1. This configuration is set up to build on Windows using the Cygwin
environment using the ARM EABI toolchain. This can be easily
changed as described above under "Configurations."
2. By default, this configuration provides a serial console on SERCOM5
at 115200 8N1 via RXD/TXD pads:
PIN EXT3 GPIO Function
---- ---- ------------------
37 PB22 SERCOM5 / USART RX
38 PB23 SERCOM5 / USART TX
usbnsh:
This configuration directory will build the NuttShell to work over USB.
It uses the internal SAMD21 USB port working as CDC/ACM Serial/Modem.
Using the configuration you don't need to solder the header pins RXD/TXD
to get access the NSH terminal.

64
Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/configs/nsh/defconfig

@ -0,0 +1,64 @@
#
# This file is autogenerated: PLEASE DO NOT EDIT IT.
#
# You can use "make menuconfig" to make any modifications to the installed .config file.
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
# modifications.
#
# CONFIG_DISABLE_POSIX_TIMERS is not set
# CONFIG_NSH_DISABLEBG is not set
# CONFIG_NSH_DISABLESCRIPT is not set
# CONFIG_NSH_DISABLE_CMP is not set
# CONFIG_NSH_DISABLE_DD is not set
# CONFIG_NSH_DISABLE_EXEC is not set
# CONFIG_NSH_DISABLE_EXIT is not set
# CONFIG_NSH_DISABLE_GET is not set
# CONFIG_NSH_DISABLE_HEXDUMP is not set
# CONFIG_NSH_DISABLE_IFCONFIG is not set
# CONFIG_NSH_DISABLE_ITEF is not set
# CONFIG_NSH_DISABLE_LOOPS is not set
# CONFIG_NSH_DISABLE_LOSETUP is not set
# CONFIG_NSH_DISABLE_MKRD is not set
# CONFIG_NSH_DISABLE_PS is not set
# CONFIG_NSH_DISABLE_PUT is not set
# CONFIG_NSH_DISABLE_SEMICOLON is not set
# CONFIG_NSH_DISABLE_WGET is not set
# CONFIG_NSH_DISABLE_XD is not set
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="arduino-m0"
CONFIG_ARCH_BOARD_ARDUINO_M0=y
CONFIG_ARCH_CHIP="samd2l2"
CONFIG_ARCH_CHIP_SAMD21G18A=y
CONFIG_ARCH_CHIP_SAMD2X=y
CONFIG_ARCH_STACKDUMP=y
CONFIG_BOARD_LOOPSPERMSEC=3410
CONFIG_BUILTIN=y
CONFIG_DEFAULT_SMALL=y
CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_MAX_TASKS=16
CONFIG_NSH_BUILTIN_APPS=y
CONFIG_PREALLOC_TIMERS=4
CONFIG_PTHREAD_STACK_DEFAULT=1536
CONFIG_RAM_SIZE=32768
CONFIG_RAM_START=0x20000000
CONFIG_RAW_BINARY=y
CONFIG_RR_INTERVAL=200
CONFIG_SAMD2L2_SERCOM3=y
CONFIG_SAMD2L2_SERCOM4=y
CONFIG_SAMD2L2_SERCOM5=y
CONFIG_SCHED_WAITPID=y
CONFIG_SDCLONE_DISABLE=y
CONFIG_START_DAY=21
CONFIG_START_MONTH=6
CONFIG_START_YEAR=2015
CONFIG_SYSTEM_NSH=y
CONFIG_TASK_NAME_SIZE=0
CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE=1536
CONFIG_USART3_RXBUFSIZE=64
CONFIG_USART3_TXBUFSIZE=64
CONFIG_USART4_RXBUFSIZE=64
CONFIG_USART4_TXBUFSIZE=64
CONFIG_USART5_SERIAL_CONSOLE=y
CONFIG_USERMAIN_STACKSIZE=1536
CONFIG_USER_ENTRYPOINT="nsh_main"

62
Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/configs/usbnsh/defconfig

@ -0,0 +1,62 @@
#
# This file is autogenerated: PLEASE DO NOT EDIT IT.
#
# You can use "make menuconfig" to make any modifications to the installed .config file.
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
# modifications.
#
# CONFIG_DISABLE_POSIX_TIMERS is not set
# CONFIG_NSH_DISABLEBG is not set
# CONFIG_NSH_DISABLESCRIPT is not set
# CONFIG_NSH_DISABLE_CMP is not set
# CONFIG_NSH_DISABLE_DD is not set
# CONFIG_NSH_DISABLE_EXEC is not set
# CONFIG_NSH_DISABLE_EXIT is not set
# CONFIG_NSH_DISABLE_GET is not set
# CONFIG_NSH_DISABLE_HEXDUMP is not set
# CONFIG_NSH_DISABLE_IFCONFIG is not set
# CONFIG_NSH_DISABLE_ITEF is not set
# CONFIG_NSH_DISABLE_LOOPS is not set
# CONFIG_NSH_DISABLE_LOSETUP is not set
# CONFIG_NSH_DISABLE_MKRD is not set
# CONFIG_NSH_DISABLE_PS is not set
# CONFIG_NSH_DISABLE_PUT is not set
# CONFIG_NSH_DISABLE_SEMICOLON is not set
# CONFIG_NSH_DISABLE_WGET is not set
# CONFIG_NSH_DISABLE_XD is not set
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="arduino-m0"
CONFIG_ARCH_BOARD_ARDUINO_M0=y
CONFIG_ARCH_CHIP="samd2l2"
CONFIG_ARCH_CHIP_SAMD21G18A=y
CONFIG_ARCH_CHIP_SAMD2X=y
CONFIG_ARCH_STACKDUMP=y
CONFIG_BOARDCTL_USBDEVCTRL=y
CONFIG_BOARD_LOOPSPERMSEC=3410
CONFIG_BUILTIN=y
CONFIG_CDCACM=y
CONFIG_CDCACM_CONSOLE=y
CONFIG_DEFAULT_SMALL=y
CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_MAX_TASKS=16
CONFIG_NSH_BUILTIN_APPS=y
CONFIG_PREALLOC_TIMERS=4
CONFIG_PTHREAD_STACK_DEFAULT=1536
CONFIG_RAM_SIZE=32768
CONFIG_RAM_START=0x20000000
CONFIG_RAW_BINARY=y
CONFIG_RR_INTERVAL=200
CONFIG_SAMD2L2_SERCOM5=y
CONFIG_SAMD2L2_USB=y
CONFIG_SCHED_WAITPID=y
CONFIG_SDCLONE_DISABLE=y
CONFIG_START_DAY=22
CONFIG_START_MONTH=9
CONFIG_START_YEAR=2019
CONFIG_SYSTEM_NSH=y
CONFIG_TASK_NAME_SIZE=0
CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE=1536
CONFIG_USBDEV=y
CONFIG_USERMAIN_STACKSIZE=1536
CONFIG_USER_ENTRYPOINT="nsh_main"

535
Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/include/board.h

@ -0,0 +1,535 @@
/****************************************************************************
* boards/arm/samd2l2/arduino-m0/include/board.h
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
#ifndef __BOARDS_ARM_SAMD2L2_ARDUINO_M0_INCLUDE_BOARD_H
#define __BOARDS_ARM_SAMD2L2_ARDUINO_M0_INCLUDE_BOARD_H
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#ifndef __ASSEMBLY__
# include <stdint.h>
# ifdef CONFIG_SAMD2L2_GPIOIRQ
# include <arch/irq.h>
# endif
#endif
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/* Clocking *****************************************************************/
/* Overview
*
* OSC8M Output = 8MHz
* `- GCLK1 Input = 8MHz Prescaler = 1 output = 8MHz
* `- DFLL Input = 8MHz Multiplier = 6 output = 48MHz
* `- GCLK0 Input = 48MHz Prescaler = 1 output = 48MHz
* `- PM Input = 48Mhz CPU divider = 1 CPU frequency = 48MHz
* APBA divider = 1 APBA frequency = 48MHz
* APBB divider = 1 APBB frequency = 48MHz
* APBC divider = 1 APBC frequency = 48MHz
*
* The Arduino M0 has one on-board crystal:
*
* XC101 32.768KHz XOSC32
*
* REVISIT: Not currently used, may want to use as GCLK1 source with
* DFLL multiplier of ((48000000+16384)/32768) = 1465 which would yield
* a clock of 48,005,120 MHz.
*/
/* XOSC Configuration -- Not available
*
* BOARD_XOSC_ENABLE - Boolean (defined / not defined)
* BOARD_XOSC_FREQUENCY - In Hz
* BOARD_XOSC_STARTUPTIME - See SYSCTRL_XOSC_STARTUP_* definitions
* BOARD_XOSC_ISCRYSTAL - Boolean (defined / not defined)
* BOARD_XOSC_AMPGC - Boolean (defined / not defined)
* BOARD_XOSC_ONDEMAND - Boolean (defined / not defined)
* BOARD_XOSC_RUNINSTANDBY - Boolean (defined / not defined)
*/
#undef BOARD_XOSC_ENABLE
#define BOARD_XOSC_FREQUENCY 12000000UL
#define BOARD_XOSC_STARTUPTIME SYSCTRL_XOSC_STARTUP_1S
#define BOARD_XOSC_ISCRYSTAL 1
#define BOARD_XOSC_AMPGC 1
#define BOARD_XOSC_ONDEMAND 1
#undef BOARD_XOSC_RUNINSTANDBY
/* XOSC32 Configuration -- Not used
*
* BOARD_XOSC32K_ENABLE - Boolean (defined / not defined)
* BOARD_XOSC32K_FREQUENCY - In Hz
* BOARD_XOSC32K_STARTUPTIME - See SYSCTRL_XOSC32K_STARTUP_* definitions
* BOARD_XOSC32K_ISCRYSTAL - Boolean (defined / not defined)
* BOARD_XOSC32K_AAMPEN - Boolean (defined / not defined)
* BOARD_XOSC32K_EN1KHZ - Boolean (defined / not defined)
* BOARD_XOSC32K_EN32KHZ - Boolean (defined / not defined)
* BOARD_XOSC32K_ONDEMAND - Boolean (defined / not defined)
* BOARD_XOSC32K_RUNINSTANDBY - Boolean (defined / not defined)
*/
#undef BOARD_XOSC32K_ENABLE
#define BOARD_XOSC32K_FREQUENCY 32768 /* 32.768KHz XTAL */
#define BOARD_XOSC32K_STARTUPTIME SYSCTRL_XOSC32K_STARTUP_2S
#define BOARD_XOSC32K_ISCRYSTAL 1
#define BOARD_XOSC32K_AAMPEN 1
#undef BOARD_XOSC32K_EN1KHZ
#define BOARD_XOSC32K_EN32KHZ 1
#define BOARD_XOSC32K_ONDEMAND 1
#undef BOARD_XOSC32K_RUNINSTANDBY
/* OSC32 Configuration -- not used
*
* BOARD_OSC32K_ENABLE - Boolean (defined / not defined)
* BOARD_OSC32K_FREQUENCY - In Hz
* BOARD_OSC32K_STARTUPTIME - See SYSCTRL_OSC32K_STARTUP_* definitions
* BOARD_OSC32K_EN1KHZ - Boolean (defined / not defined)
* BOARD_OSC32K_EN32KHZ - Boolean (defined / not defined)
* BOARD_OSC32K_ONDEMAND - Boolean (defined / not defined)
* BOARD_OSC32K_RUNINSTANDBY - Boolean (defined / not defined)
*/
#undef BOARD_OSC32K_ENABLE
#define BOARD_OSC32K_FREQUENCY 32768 /* 32.768kHz internal oscillator */
#define BOARD_OSC32K_STARTUPTIME SYSCTRL_OSC32K_STARTUP_4MS
#define BOARD_OSC32K_EN1KHZ 1
#define BOARD_OSC32K_EN32KHZ 1
#define BOARD_OSC32K_ONDEMAND 1
#undef BOARD_OSC32K_RUNINSTANDBY
/* OSC8M Configuration -- always enabled
*
* BOARD_OSC8M_PRESCALER - See SYSCTRL_OSC8M_PRESC_DIV* definitions
* BOARD_OSC8M_ONDEMAND - Boolean (defined / not defined)
* BOARD_OSC8M_RUNINSTANDBY - Boolean (defined / not defined)
*/
#define BOARD_OSC8M_PRESCALER SYSCTRL_OSC8M_PRESC_DIV1
#define BOARD_OSC8M_ONDEMAND 1
#undef BOARD_OSC8M_RUNINSTANDBY
#define BOARD_OSC8M_FREQUENCY 8000000 /* 8MHz high-accuracy internal oscillator */
/* OSCULP32K Configuration -- not used. */
#define BOARD_OSCULP32K_FREQUENCY 32000 /* 32kHz ultra-low-power internal oscillator */
/* Digital Frequency Locked Loop configuration. In closed-loop mode, the
* DFLL output frequency (Fdfll) is given by:
*
* Fdfll = DFLLmul * Frefclk
* = 6 * 8000000 = 48MHz
*
* Where the reference clock is Generic Clock Channel 0 output of GLCK1.
* GCLCK1 provides OSC8M, undivided.
*
* When operating in open-loop mode, the output frequency of the DFLL will
* be determined by the values written to the DFLL Coarse Value bit group
* and the DFLL Fine Value bit group in the DFLL Value register.
*
* BOARD_DFLL_OPENLOOP - Boolean (defined / not defined)
* BOARD_DFLL_TRACKAFTERFINELOCK - Boolean (defined / not defined)
* BOARD_DFLL_KEEPLOCKONWAKEUP - Boolean (defined / not defined)
* BOARD_DFLL_ENABLECHILLCYCLE - Boolean (defined / not defined)
* BOARD_DFLL_QUICKLOCK - Boolean (defined / not defined)
* BOARD_DFLL_ONDEMAND - Boolean (defined / not defined)
*
* Closed loop mode only:
* BOARD_DFLL_GCLKGEN - GCLK index
* BOARD_DFLL_MULTIPLIER - Value
* BOARD_DFLL_MAXCOARSESTEP - Value
* BOARD_DFLL_MAXFINESTEP - Value
*
* BOARD_DFLL_FREQUENCY - The resulting frequency
*/
#define BOARD_DFLL_ENABLE 1
#define BOARD_DFLL_OPENLOOP 1
#undef BOARD_DFLL_ONDEMAND
#undef BOARD_DFLL_RUNINSTANDBY
/* DFLL closed loop mode configuration */
#define BOARD_DFLL_SRCGCLKGEN 1
#define BOARD_DFLL_MULTIPLIER 6
#define BOARD_DFLL_QUICKLOCK 1
#define BOARD_DFLL_TRACKAFTERFINELOCK 1
#define BOARD_DFLL_KEEPLOCKONWAKEUP 1
#define BOARD_DFLL_ENABLECHILLCYCLE 1
#define BOARD_DFLL_MAXCOARSESTEP (0x1f / 4)
#define BOARD_DFLL_MAXFINESTEP (0xff / 4)
#define BOARD_DFLL_FREQUENCY (48000000)
/* GCLK Configuration
*
* Global enable/disable.
*
* BOARD_GCLK_ENABLE - Boolean (defined / not defined)
*
* For n=1-7:
* BOARD_GCLKn_ENABLE - Boolean (defined / not defined)
*
* For n=0-8:
* BOARD_GCLKn_RUN_IN_STANDBY - Boolean (defined / not defined)
* BOARD_GCLKn_CLOCK_SOURCE - See GCLK_GENCTRL_SRC_* definitions
* BOARD_GCLKn_PRESCALER - Value
* BOARD_GCLKn_OUTPUT_ENABLE - Boolean (defined / not defined)
*/
#define BOARD_GCLK_ENABLE 1
/* GCLK generator 0 (Main Clock) - Source is the DFLL */
#undef BOARD_GCLK0_RUN_IN_STANDBY
#define BOARD_GCLK0_CLOCK_SOURCE GCLK_GENCTRL_SRC_DFLL48M
#define BOARD_GCLK0_PRESCALER 1
#undef BOARD_GCLK0_OUTPUT_ENABLE
#define BOARD_GCLK0_FREQUENCY (BOARD_DFLL_FREQUENCY / BOARD_GCLK0_PRESCALER)
/* Configure GCLK generator 1 - Drives the DFLL */
#define BOARD_GCLK1_ENABLE 1
#undef BOARD_GCLK1_RUN_IN_STANDBY
#define BOARD_GCLK1_CLOCK_SOURCE GCLK_GENCTRL_SRC_OSC8M
#define BOARD_GCLK1_PRESCALER 1
#undef BOARD_GCLK1_OUTPUT_ENABLE
#define BOARD_GCLK1_FREQUENCY (BOARD_OSC8M_FREQUENCY / BOARD_GCLK1_PRESCALER)
/* Configure GCLK generator 2 (RTC) */
#undef BOARD_GCLK2_ENABLE
#undef BOARD_GCLK2_RUN_IN_STANDBY
#define BOARD_GCLK2_CLOCK_SOURCE GCLK_GENCTRL_SRC_OSC32K
#define BOARD_GCLK2_PRESCALER 32
#undef BOARD_GCLK2_OUTPUT_ENABLE
#define BOARD_GCLK2_FREQUENCY (BOARD_OSC8M_FREQUENCY / BOARD_GCLK2_PRESCALER)
/* Configure GCLK generator 3 */
#undef BOARD_GCLK3_ENABLE
#undef BOARD_GCLK3_RUN_IN_STANDBY
#define BOARD_GCLK3_CLOCK_SOURCE GCLK_GENCTRL_SRC_OSC8M
#define BOARD_GCLK3_PRESCALER 1
#undef BOARD_GCLK3_OUTPUT_ENABLE
#define BOARD_GCLK3_FREQUENCY (BOARD_OSC8M_FREQUENCY / BOARD_GCLK3_PRESCALER)
/* Configure GCLK generator 4 */
#undef BOARD_GCLK4_ENABLE
#undef BOARD_GCLK4_RUN_IN_STANDBY
#define BOARD_GCLK4_CLOCK_SOURCE GCLK_GENCTRL_SRC_OSC8M
#define BOARD_GCLK4_PRESCALER 1
#undef BOARD_GCLK4_OUTPUT_ENABLE
#define BOARD_GCLK4_FREQUENCY (BOARD_OSC8M_FREQUENCY / BOARD_GCLK4_PRESCALER)
/* Configure GCLK generator 5 */
#undef BOARD_GCLK5_ENABLE
#undef BOARD_GCLK5_RUN_IN_STANDBY
#define BOARD_GCLK5_CLOCK_SOURCE GCLK_GENCTRL_SRC_OSC8M
#define BOARD_GCLK5_PRESCALER 1
#undef BOARD_GCLK5_OUTPUT_ENABLE
#define BOARD_GCLK5_FREQUENCY (BOARD_OSC8M_FREQUENCY / BOARD_GCLK5_PRESCALER)
/* Configure GCLK generator 6 */
#undef BOARD_GCLK6_ENABLE
#undef BOARD_GCLK6_RUN_IN_STANDBY
#define BOARD_GCLK6_CLOCK_SOURCE GCLK_GENCTRL_SRC_OSC8M
#define BOARD_GCLK6_PRESCALER 1
#undef BOARD_GCLK6_OUTPUT_ENABLE
#define BOARD_GCLK6_FREQUENCY (BOARD_OSC8M_FREQUENCY / BOARD_GCLK6_PRESCALER)
/* Configure GCLK generator 7 */
#undef BOARD_GCLK7_ENABLE
#undef BOARD_GCLK7_RUN_IN_STANDBY
#define BOARD_GCLK7_CLOCK_SOURCE GCLK_GENCTRL_SRC_OSC8M
#define BOARD_GCLK7_PRESCALER 1
#undef BOARD_GCLK7_OUTPUT_ENABLE
#define BOARD_GCLK7_FREQUENCY (BOARD_OSC8M_FREQUENCY / BOARD_GCLK7_PRESCALER)
/* The source of the main clock is always GCLK_MAIN. Also called GCLKGEN[0],
* this is the clock feeding the Power Manager.
* The Power Manager, in turn, generates main clock which is divided down to
* produce the CPU, AHB, and APB clocks.
*
* The main clock is initially OSC8M divided by 8.
*/
#define BOARD_GCLK_MAIN_FREQUENCY BOARD_GCLK0_FREQUENCY
/* Main clock dividers
*
* BOARD_CPU_DIVIDER - See PM_CPUSEL_CPUDIV_* definitions
* BOARD_CPU_FRQUENCY - In Hz
* BOARD_CPU_FAILDECT - Boolean (defined / not defined)
* BOARD_APBA_DIVIDER - See M_APBASEL_APBADIV_* definitions
* BOARD_APBA_FRQUENCY - In Hz
* BOARD_APBB_DIVIDER - See M_APBBSEL_APBBDIV_* definitions
* BOARD_APBB_FRQUENCY - In Hz
* BOARD_APBC_DIVIDER - See M_APBCSEL_APBCDIV_* definitions
* BOARD_APBC_FRQUENCY - In Hz
*/
#define BOARD_CPU_FAILDECT 1
#define BOARD_CPU_DIVIDER PM_CPUSEL_CPUDIV_1
#define BOARD_APBA_DIVIDER PM_APBASEL_APBADIV_1
#define BOARD_APBB_DIVIDER PM_APBBSEL_APBBDIV_1
#define BOARD_APBC_DIVIDER PM_APBCSEL_APBCDIV_1
/* Resulting frequencies */
#define BOARD_MCK_FREQUENCY (BOARD_GCLK_MAIN_FREQUENCY)
#define BOARD_CPU_FREQUENCY (BOARD_MCK_FREQUENCY)
#define BOARD_PBA_FREQUENCY (BOARD_MCK_FREQUENCY)
#define BOARD_PBB_FREQUENCY (BOARD_MCK_FREQUENCY)
#define BOARD_PBC_FREQUENCY (BOARD_MCK_FREQUENCY)
#define BOARD_PBD_FREQUENCY (BOARD_MCK_FREQUENCY)
/* FLASH wait states
*
* Vdd Range Wait states Maximum Operating Frequency
* ------------- -------------- ---------------------------
* 1.62V to 2.7V 0 14 MHz
* 1 28 MHz
* 2 42 MHz
* 3 48 MHz
* 2.7V to 3.63V 0 24 MHz
* 1 48 MHz
*/
#if 0 /* REVISIT -- should not be necessary */
# define BOARD_FLASH_WAITSTATES 1
#else
# define BOARD_FLASH_WAITSTATES 2
#endif
/* SERCOM definitions *******************************************************/
/* This is the source clock generator for the GCLK_SERCOM_SLOW clock that is
* common to all SERCOM modules.
*/
#define BOARD_SERCOM05_SLOW_GCLKGEN 0
/* SERCOM0 SPI is available on EXT1
*
* PIN PORT SERCOM FUNCTION
* --- ------------------ -----------
* 15 PA5 SERCOM0 PAD1 SPI SS
* 16 PA6 SERCOM0 PAD2 SPI MOSI
* 17 PA4 SERCOM0 PAD0 SPI MISO
* 18 PA7 SERCOM0 PAD3 SPI SCK
*/
#define BOARD_SERCOM0_GCLKGEN 0
#define BOARD_SERCOM0_SLOW_GCLKGEN BOARD_SERCOM05_SLOW_GCLKGEN
#define BOARD_SERCOM0_MUXCONFIG (SPI_CTRLA_DOPO_DOPAD231 | SPI_CTRLA_DIPAD0)
#define BOARD_SERCOM0_PINMAP_PAD0 PORT_SERCOM0_PAD0_2 /* SPI_MISO */
#define BOARD_SERCOM0_PINMAP_PAD1 0 /* microSD_SS */
#define BOARD_SERCOM0_PINMAP_PAD2 PORT_SERCOM0_PAD2_2 /* SPI_MOSI */
#define BOARD_SERCOM0_PINMAP_PAD3 PORT_SERCOM0_PAD3_2 /* SPI_SCK */
#define BOARD_SERCOM0_FREQUENCY BOARD_GCLK0_FREQUENCY
/* SERCOM1 SPI is available on EXT2
*
* PIN PORT SERCOM FUNCTION
* --- ------------------ -----------
* 15 PA17 SERCOM1 PAD1 SPI SS
* 16 PA18 SERCOM1 PAD2 SPI MOSI
* 17 PA16 SERCOM1 PAD0 SPI MISO
* 18 PA19 SERCOM1 PAD3 SPI SCK
*/
#define BOARD_SERCOM1_GCLKGEN 0
#define BOARD_SERCOM1_SLOW_GCLKGEN BOARD_SERCOM05_SLOW_GCLKGEN
#define BOARD_SERCOM1_MUXCONFIG (SPI_CTRLA_DOPO_DOPAD231 | SPI_CTRLA_DIPAD0)
#define BOARD_SERCOM1_PINMAP_PAD0 PORT_SERCOM1_PAD0_1 /* SPI_MISO */
#define BOARD_SERCOM1_PINMAP_PAD1 0 /* microSD_SS */
#define BOARD_SERCOM1_PINMAP_PAD2 PORT_SERCOM1_PAD2_1 /* SPI_MOSI */
#define BOARD_SERCOM1_PINMAP_PAD3 PORT_SERCOM1_PAD3_1 /* SPI_SCK */
#define BOARD_SERCOM1_FREQUENCY BOARD_GCLK0_FREQUENCY
/* The Arduino M0 contains an Embedded Debugger (EDBG) that can be
* used to program and debug the ATSAMD21J18A using Serial Wire Debug (SWD).
* The Embedded debugger also include a Virtual COM port interface over
* SERCOM3. Virtual COM port connections:
*
* PA22 SERCOM3 PAD[0] / USART TXD
* PA23 SERCOM3 PAD[1] / USART RXD
*/
#define BOARD_SERCOM3_GCLKGEN 0
#define BOARD_SERCOM3_SLOW_GCLKGEN BOARD_SERCOM05_SLOW_GCLKGEN
#define BOARD_SERCOM3_MUXCONFIG (USART_CTRLA_RXPAD1 | USART_CTRLA_TXPAD0_1)
#define BOARD_SERCOM3_PINMAP_PAD0 PORT_SERCOM3_PAD0_1 /* USART TX */
#define BOARD_SERCOM3_PINMAP_PAD1 PORT_SERCOM3_PAD1_1 /* USART RX */
#define BOARD_SERCOM3_PINMAP_PAD2 0
#define BOARD_SERCOM3_PINMAP_PAD3 0
#define BOARD_SERCOM3_FREQUENCY BOARD_GCLK0_FREQUENCY
/* The SERCOM4 USART is available on connectors EXT1, EXT2, and EXT3
*
* PIN EXT1 EXT2 EXT3 GPIO Function
* ---- ---- ---- ---- ------------------
* 13 PB09 PB10 PB10 SERCOM4 / USART RX
* 14 PB08 PB11 PB11 SERCOM4 / USART TX
* 19 GND GND GND N/A
* 20 VCC VCC VCC N/A
*
* If you have a TTL to RS-232 converter then this is the most convenient
* serial console to use (because you don't lose the console device each time
* you lose the USB connection). It is the default in all of the SAMD21
* configurations.
*/
#define BOARD_SERCOM4_GCLKGEN 0
#define BOARD_SERCOM4_SLOW_GCLKGEN BOARD_SERCOM05_SLOW_GCLKGEN
#if defined(CONFIG_ARDUINO_M0_USART4_EXT1)
# define BOARD_SERCOM4_MUXCONFIG (USART_CTRLA_RXPAD1 | USART_CTRLA_TXPAD0)
# define BOARD_SERCOM4_PINMAP_PAD0 PORT_SERCOM4_PAD0_3 /* USART TX */
# define BOARD_SERCOM4_PINMAP_PAD1 PORT_SERCOM4_PAD1_3 /* USART RX */
# define BOARD_SERCOM4_PINMAP_PAD2 0
# define BOARD_SERCOM4_PINMAP_PAD3 0
#elif defined(CONFIG_ARDUINO_M0_USART4_EXT2)
# define BOARD_SERCOM4_MUXCONFIG (USART_CTRLA_RXPAD3 | USART_CTRLA_TXPAD2)
# define BOARD_SERCOM4_PINMAP_PAD0 0
# define BOARD_SERCOM4_PINMAP_PAD1 0
# define BOARD_SERCOM4_PINMAP_PAD2 PORT_SERCOM4_PAD2_3 /* USART TX */
# define BOARD_SERCOM4_PINMAP_PAD3 PORT_SERCOM4_PAD3_3 /* USART RX */
#else /* if defined(CONFIG_ARDUINO_M0_USART4_EXT3) */
# define BOARD_SERCOM4_MUXCONFIG (USART_CTRLA_RXPAD3 | USART_CTRLA_TXPAD2)
# define BOARD_SERCOM4_PINMAP_PAD0 0
# define BOARD_SERCOM4_PINMAP_PAD1 0
# define BOARD_SERCOM4_PINMAP_PAD2 PORT_SERCOM4_PAD2_3 /* USART TX */
# define BOARD_SERCOM4_PINMAP_PAD3 PORT_SERCOM4_PAD3_3 /* USART RX */
#endif
#define BOARD_SERCOM4_FREQUENCY BOARD_GCLK0_FREQUENCY
/* SERCOM5 USART used to Serial Console
*
* PIN PORT SERCOM FUNCTION
* --- ------------------ -----------
* 31 PB02 SERCOM5 PAD0 USART TXD
* 32 PB03 SERCOM5 PAD1 USART RXD
*/
#define BOARD_SERCOM5_GCLKGEN 0
#define BOARD_SERCOM5_SLOW_GCLKGEN BOARD_SERCOM05_SLOW_GCLKGEN
#define BOARD_SERCOM5_MUXCONFIG (USART_CTRLA_RXPAD3 | USART_CTRLA_TXPAD2)
#define BOARD_SERCOM5_PINMAP_PAD0 0
#define BOARD_SERCOM5_PINMAP_PAD1 0
#define BOARD_SERCOM5_PINMAP_PAD2 PORT_SERCOM5_PAD2_4 /* USART 5 TXD */
#define BOARD_SERCOM5_PINMAP_PAD3 PORT_SERCOM5_PAD3_4 /* USART 5 RXD */
#define BOARD_SERCOM5_FREQUENCY BOARD_GCLK0_FREQUENCY
/* ADC definitions **********************************************************/
#define BOARD_ADC_GCLKGEN 0
/* We are using PA3 as Analog Input */
#define PORT_AIN1 PORT_AIN1_1
#define BOARD_ADC_INPUT1 1
#define BOARD_ADC_NUM_CHANNELS 1
/* The negative input is the internal GND */
#define BOARD_ADC_NEG ADC_INPUTCTRL_MUXNEG_GND
/* The VREF is the INTVCC1 = 1/2 VDDANA */
#define BOARD_ADC_REF ADC_REFCTRL_REFSEL_INTVCC1
/* USB definitions **********************************************************/
/* This is the source clock generator for the GCLK_USB clock
*/
#define BOARD_USB_GCLKGEN 0
#define BOARD_USB_FREQUENCY BOARD_GCLK0_FREQUENCY
/* default USB Pad calibration (not used yet by USB driver) */
#define BOARD_USB_PADCAL_P 29
#define BOARD_USB_PADCAL_N 5
#define BOARD_USB_PADCAL_TRIM 3
/* LED definitions **********************************************************/
/* There are three LEDs on board the Arduino M0 board: The EDBG
* controls two of the LEDs, a power LED and a status LED. There is only
* one user controllable LED, a yellow LED labelled STATUS near the SAMD21
* USB connector.
*
* This LED is controlled by PC07 and the LED can be activated by driving
* the PB30 to GND.
*/
/* LED index values for use with board_userled() */
#define BOARD_STATUS_LED 0
#define BOARD_NLEDS 1
/* LED bits for use with board_userled_all() */
#define BOARD_STATUS LED_BIT (1 << BOARD_STATUS_LED)
/* When CONFIG_ARCH_LEDS is defined in the NuttX configuration, NuttX will
* control the LED as defined below. Thus if the LED is statically on, NuttX
* has successfully booted and is, apparently, running normally.
* If the LED is flashing at approximately 2Hz, then a fatal error
* has been detected and the system has halted.
*/
#define LED_STARTED 0 /* STATUS LED=OFF */
#define LED_HEAPALLOCATE 0 /* STATUS LED=OFF */
#define LED_IRQSENABLED 0 /* STATUS LED=OFF */
#define LED_STACKCREATED 1 /* STATUS LED=ON */
#define LED_INIRQ 2 /* STATUS LED=no change */
#define LED_SIGNAL 2 /* STATUS LED=no change */
#define LED_ASSERTION 2 /* STATUS LED=no change */
#define LED_PANIC 3 /* STATUS LED=flashing */
/* Button definitions *******************************************************/
/* Mechanical buttons:
*
* The Arduino M0 doesn't contain mechanical buttons.
*/
#define NUM_BUTTONS 0
#endif /* __BOARDS_ARM_SAMD2L2_ARDUINO_M0_INCLUDE_BOARD_H */

63
Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/scripts/Make.defs

@ -0,0 +1,63 @@
############################################################################
# boards/arm/samd2l2/arduino-m0/scripts/Make.defs
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
############################################################################
include $(TOPDIR)/.config
include $(TOPDIR)/tools/Config.mk
include $(TOPDIR)/arch/arm/src/armv6-m/Toolchain.defs
LDSCRIPT = flash.ld
ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
ARCHSCRIPT = -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT)}"
else
ARCHSCRIPT = -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT)
endif
ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
ARCHOPTIMIZATION = -g
endif
ifneq ($(CONFIG_DEBUG_NOOPT),y)
ARCHOPTIMIZATION += $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
endif
ARCHCFLAGS = -fno-builtin
ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fcheck-new -fno-rtti
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef
ARCHWARNINGSXX = -Wall -Wshadow -Wundef
ARCHPICFLAGS = -fpic -msingle-pic-base -mpic-register=r10
CFLAGS := $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
AFLAGS := $(CFLAGS) -D__ASSEMBLY__
NXFLATLDFLAGS1 = -r -d -warn-common
NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -no-check-sections
LDNXFLATFLAGS = -e main -s 2048
ifneq ($(CROSSDEV),arm-nuttx-elf-)
LDFLAGS += -nostartfiles -nodefaultlibs
endif
ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
LDFLAGS += -g
endif

111
Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/scripts/flash.ld

@ -0,0 +1,111 @@
/****************************************************************************
* boards/arm/samd2l2/arduino-m0/scripts/flash.ld
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
/* The ATSAMD21J18A has 256KB of FLASH beginning at address 0x0000:0000 and
* 32KB of SRAM beginning at address 0x2000:0000
*/
MEMORY
{
flash (rx) : ORIGIN = 0x00000000, LENGTH = 256K
sram (rwx) : ORIGIN = 0x20000000, LENGTH = 32K
}
OUTPUT_ARCH(arm)
EXTERN(_vectors)
ENTRY(_stext)
SECTIONS
{
.text : {
_stext = ABSOLUTE(.);
*(.vectors)
*(.text .text.*)
*(.fixup)
*(.gnu.warning)
*(.rodata .rodata.*)
*(.gnu.linkonce.t.*)
*(.glue_7)
*(.glue_7t)
*(.got)
*(.gcc_except_table)
*(.gnu.linkonce.r.*)
_etext = ABSOLUTE(.);
} > flash
.init_section : {
_sinit = ABSOLUTE(.);
*(.init_array .init_array.*)
_einit = ABSOLUTE(.);
} > flash
.ARM.extab : {
*(.ARM.extab*)
} >flash
.ARM.exidx : {
__exidx_start = ABSOLUTE(.);
*(.ARM.exidx*)
__exidx_end = ABSOLUTE(.);
} >flash
.data : {
_sdata = ABSOLUTE(.);
*(.data .data.*)
*(.gnu.linkonce.d.*)
CONSTRUCTORS
. = ALIGN(4);
_edata = ABSOLUTE(.);
} > sram AT > flash
_eronly = LOADADDR(.data);
.ramfunc ALIGN(4): {
_sramfuncs = ABSOLUTE(.);
*(.ramfunc .ramfunc.*)
_eramfuncs = ABSOLUTE(.);
} > sram AT > flash
_framfuncs = LOADADDR(.ramfunc);
.bss : {
_sbss = ABSOLUTE(.);
*(.bss .bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
. = ALIGN(4);
_ebss = ABSOLUTE(.);
} > sram
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_info 0 : { *(.debug_info) }
.debug_line 0 : { *(.debug_line) }
.debug_pubnames 0 : { *(.debug_pubnames) }
.debug_aranges 0 : { *(.debug_aranges) }
}

51
Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/src/Makefile

@ -0,0 +1,51 @@
############################################################################
# boards/arm/samd2l2/arduino-m0/src/Makefile
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
############################################################################
include $(TOPDIR)/Make.defs
CSRCS = sam_boot.c sam_bringup.c
ifeq ($(CONFIG_SAMD2L2_SERCOM0),y)
CSRCS += sam_spi.c
endif
ifeq ($(CONFIG_ARCH_LEDS),y)
CSRCS += sam_autoleds.c
else
CSRCS += sam_userleds.c
endif
ifeq ($(CONFIG_ARCH_BUTTONS),y)
CSRCS += sam_buttons.c
endif
ifeq ($(CONFIG_SAMD2L2_ADC),y)
CSRCS += sam_adc.c
endif
ifeq ($(CONFIG_LIB_BOARDCTL),y)
CSRCS += sam_appinit.c
endif
ifeq ($(CONFIG_USBDEV),y)
CSRCS += sam_usb.c
endif
include $(TOPDIR)/boards/Board.mk

122
Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/src/arduino_m0.h

@ -0,0 +1,122 @@
/****************************************************************************
* boards/arm/samd2l2/arduino-m0/src/arduino_m0.h
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
#ifndef __BOARDS_ARM_SAMD2L2_ARDUINO_M0_SRC_ARDUINO_M0_H
#define __BOARDS_ARM_SAMD2L2_ARDUINO_M0_SRC_ARDUINO_M0_H
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#include <nuttx/compiler.h>
#include <stdint.h>
#include <arch/irq.h>
#include <nuttx/irq.h>
#include "sam_config.h"
#include "sam_pinmap.h"
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/* LEDs:
* There is a LED on board the Arduino M0 board.
*
* This LED is controlled by PA17 and the LED can be activated by driving
* PA17 to High.
*
* When CONFIG_ARCH_LEDS is defined in the NuttX configuration, NuttX will
* control the LED as follows:
*
* 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
*
* Thus if the LED is statically on, NuttX has successfully booted and is,
* apparently, running normally. If the LED is flashing at approximately
* 2Hz, then a fatal error has been detected and the system has halted.
*/
#define PORT_STATUS_LED (PORT_OUTPUT | PORT_PULL_NONE | PORT_OUTPUT_SET | \
PORTA | PORT_PIN17)
/****************************************************************************
* Public Types
****************************************************************************/
/****************************************************************************
* Public Data
****************************************************************************/
#ifndef __ASSEMBLY__
/****************************************************************************
* Public Functions Definitions
****************************************************************************/
/****************************************************************************
* Name: sam_bringup
*
* Description:
* Perform architecture-specific initialization
*
* CONFIG_BOARD_LATE_INITIALIZE=y :
* Called from board_late_initialize().
*
* CONFIG_BOARD_LATE_INITIALIZE=y && CONFIG_LIB_BOARDCTL=y :
* Called from the NSH library
*
****************************************************************************/
int sam_bringup(void);
/****************************************************************************
* Name: sam_adc_setup
*
* Description:
* Initialize ADC and register the ADC driver.
*
****************************************************************************/
int sam_adc_setup(void);
/****************************************************************************
* Name: sam_spidev_initialize
*
* Description:
* Called to configure SPI chip select PORT pins for the SAM3U-EK board.
*
****************************************************************************/
void weak_function sam_spidev_initialize(void);
#endif /* __ASSEMBLY__ */
#endif /* __BOARDS_ARM_SAMD2L2_ARDUINO_M0_SRC_ARDUINO_M0_H */

89
Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/src/sam_adc.c

@ -0,0 +1,89 @@
/****************************************************************************
* boards/arm/samd2l2/arduino-m0/src/sam_adc.c
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#include <errno.h>
#include <debug.h>
#include <nuttx/board.h>
#include <nuttx/analog/adc.h>
#include <arch/board/board.h>
#include "chip.h"
#include "sam_adc.h"
#include "arduino_m0.h"
#ifdef CONFIG_ADC
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: sam_adc_setup
*
* Description:
* Initialize ADC and register the ADC driver.
*
****************************************************************************/
int sam_adc_setup(void)
{
static bool initialized = false;
struct adc_dev_s *adc;
int ret;
/* Check if we have already initialized */
if (!initialized)
{
/* Call sam_adcinitialize() to get an instance of the ADC interface */
adc = sam_adcinitialize(0);
if (adc == NULL)
{
aerr("ERROR: Failed to get ADC interface\n");
return -ENODEV;
}
/* Register the ADC driver at "/dev/adc0" */
ret = adc_register("/dev/adc0", adc);
if (ret < 0)
{
aerr("ERROR: adc_register failed: %d\n", ret);
return ret;
}
/* Now we are initialized */
initialized = true;
}
return OK;
}
#endif /* CONFIG_ADC */

71
Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/src/sam_appinit.c

@ -0,0 +1,71 @@
/****************************************************************************
* boards/arm/samd2l2/arduino-m0/src/sam_appinit.c
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#include <stdio.h>
#include <syslog.h>
#include <nuttx/board.h>
#include "sam_config.h"
#include "arduino_m0.h"
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: board_app_initialize
*
* Description:
* Perform application specific initialization. This function is never
* called directly from application code, but only indirectly via the
* (non-standard) boardctl() interface using the command BOARDIOC_INIT.
*
* Input Parameters:
* arg - The boardctl() argument is passed to the board_app_initialize()
* implementation without modification. The argument has no
* meaning to NuttX; the meaning of the argument is a contract
* between the board-specific initialization logic and the
* matching application logic. The value could be such things as a
* mode enumeration value, a set of DIP switch switch settings, a
* pointer to configuration data read from a file or serial FLASH,
* or whatever you would like to do with it. Every implementation
* should accept zero/NULL as a default configuration.
*
* Returned Value:
* Zero (OK) is returned on success; a negated errno value is returned on
* any failure to indicate the nature of the failure.
*
****************************************************************************/
int board_app_initialize(uintptr_t arg)
{
return OK;
}

143
Ubiquitous/Nuttx/nuttx/boards/arm/samd2l2/arduino-m0/src/sam_autoleds.c

@ -0,0 +1,143 @@
/****************************************************************************
* boards/arm/samd2l2/arduino-m0/src/sam_autoleds.c
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
/* There is a LED on board the Arduino M0 board.
*
* When CONFIG_ARCH_LEDS is defined in the NuttX configuration, NuttX will
* control the LED as follows:
<