[riot-notifications] [RIOT-OS/RIOT] Introduce ATxmega CPU and Boards (#15758)

Gerson Fernando Budke notifications at github.com
Tue Jan 12 22:57:37 CET 2021


### Contribution description

Add ATxmega CPU and 4 boards. This is an attempt to implement the #15703 Feature Request.

Details:

#### cpu/atxmega

This concentrate all MCU family. This means, all drivers should be put in here. There is no necessity to create an atxmega_common structure.

Drivers:

- CPUID: Full functional, it gets the 11 bytes unique identification from NVM
- NVM: minimal implementation to supply cpuid.
- GPIO: Full functional driver including interrupts.
- PM: Full functional with all 4 MCU levels.
- Timer: Functional, I believe can be improved in future but already provide some good stuff.
- USART: Full functional asynchronous mode. It support all multiple instances.

Interrupt: The XMEGA have a HW multilevel interrupt controller and current version already enable all levels. However, the implementation selects at board configs all interrupts as LOW LEVEL. This means, the behavior will be same as any other MEGA MCU. User can increase the priority but need understand the implications. The Round Robin queue can be enabled at board start-up to avoid starvation from LOW LEVEL interrupts.

SAUL: Supported

#### boards/atxmega

Follow same structure to concentrate all board common code.

### Testing procedure

Tests were conducted on the following boards:
- atxmega-a1-xplained (XMEGA-A1)
- atxmega-a1-xpro (XMEGA-A1U)
- WM-200  (XMEGA-A3U)

Applications:
- examples/saul
- examples/timer_periodic_wakeup
- tests/buttons
- Tutorials/task-01

In general, the attempts were to make sure code not only builds but it run on real hardware.

### Issues/PRs references

Dependencies: #15712
You can view, comment on, or merge this pull request online at:

  https://github.com/RIOT-OS/RIOT/pull/15758

-- Commit Summary --

  * cpu: Introduce Atmel XMEGA CPU
  * cpu/avr8_common: Add ATxmega reset cause register
  * cpu/avr8_common: Rework and add xmega registers
  * cpu/avr8_common/avr8_cpu: Enable XMEGA PMIC
  * makefiles/arch/atmega: Fix xmega linker
  * makefiles/tools/avrdude: Fix xmega CPU
  * boards/common: Introduce Atmel XMEGA common
  * boards: Introduce atxmega-a1-xpro board
  * boards: Introduce atxmega-a1-xplained board
  * boards: Introduce atxmega-a3bu-xplained board
  * boards: Introduce WM-200 module board

-- File Changes --

    A boards/atxmega-a1-xplained/Kconfig (21)
    A boards/atxmega-a1-xplained/Makefile (5)
    A boards/atxmega-a1-xplained/Makefile.dep (5)
    A boards/atxmega-a1-xplained/Makefile.features (3)
    A boards/atxmega-a1-xplained/Makefile.include (3)
    A boards/atxmega-a1-xplained/doc.txt (8)
    A boards/atxmega-a1-xplained/include/board.h (196)
    A boards/atxmega-a1-xplained/include/gpio_params.h (137)
    A boards/atxmega-a1-xplained/include/periph_conf.h (117)
    A boards/atxmega-a1-xpro/Kconfig (22)
    A boards/atxmega-a1-xpro/Makefile (5)
    A boards/atxmega-a1-xpro/Makefile.dep (5)
    A boards/atxmega-a1-xpro/Makefile.features (3)
    A boards/atxmega-a1-xpro/Makefile.include (3)
    A boards/atxmega-a1-xpro/doc.txt (172)
    A boards/atxmega-a1-xpro/include/board.h (113)
    A boards/atxmega-a1-xpro/include/gpio_params.h (53)
    A boards/atxmega-a1-xpro/include/periph_conf.h (84)
    A boards/atxmega-a3bu-xplained/Kconfig (21)
    A boards/atxmega-a3bu-xplained/Makefile (5)
    A boards/atxmega-a3bu-xplained/Makefile.dep (5)
    A boards/atxmega-a3bu-xplained/Makefile.features (3)
    A boards/atxmega-a3bu-xplained/Makefile.include (3)
    A boards/atxmega-a3bu-xplained/doc.txt (8)
    A boards/atxmega-a3bu-xplained/include/board.h (126)
    A boards/atxmega-a3bu-xplained/include/gpio_params.h (71)
    A boards/atxmega-a3bu-xplained/include/periph_conf.h (101)
    A boards/common/atxmega/Makefile (3)
    A boards/common/atxmega/Makefile.features (8)
    A boards/common/atxmega/Makefile.include (51)
    A boards/common/atxmega/board.c (117)
    A boards/common/atxmega/doc.txt (5)
    A boards/common/atxmega/include/periph_conf_atxmega_common.h (122)
    A boards/wm-200/Kconfig (21)
    A boards/wm-200/Makefile (5)
    A boards/wm-200/Makefile.dep (5)
    A boards/wm-200/Makefile.features (3)
    A boards/wm-200/Makefile.include (4)
    A boards/wm-200/doc.txt (5)
    A boards/wm-200/include/board.h (129)
    A boards/wm-200/include/gpio_params.h (65)
    A boards/wm-200/include/periph_conf.h (100)
    A cpu/atxmega/Kconfig (101)
    A cpu/atxmega/Kconfig.XMEGAA (124)
    A cpu/atxmega/Kconfig.XMEGAB (29)
    A cpu/atxmega/Kconfig.XMEGAC (53)
    A cpu/atxmega/Kconfig.XMEGAD (65)
    A cpu/atxmega/Kconfig.XMEGAE (20)
    A cpu/atxmega/Makefile (7)
    A cpu/atxmega/Makefile.dep (11)
    A cpu/atxmega/Makefile.features (10)
    A cpu/atxmega/Makefile.include (42)
    A cpu/atxmega/atxmega_cpu.c (81)
    A cpu/atxmega/doc.txt (5)
    A cpu/atxmega/include/cpu_clock.h (81)
    A cpu/atxmega/include/cpu_conf.h (80)
    A cpu/atxmega/include/nvm.h (56)
    A cpu/atxmega/include/periph_cpu.h (194)
    A cpu/atxmega/ldscripts_compat/README.md (8)
    A cpu/atxmega/ldscripts_compat/avrxmega1.x (263)
    A cpu/atxmega/ldscripts_compat/avrxmega1.xbn (263)
    A cpu/atxmega/ldscripts_compat/avrxmega1.xn (263)
    A cpu/atxmega/ldscripts_compat/avrxmega1.xr (215)
    A cpu/atxmega/ldscripts_compat/avrxmega1.xu (223)
    A cpu/atxmega/ldscripts_compat/avrxmega2.x (263)
    A cpu/atxmega/ldscripts_compat/avrxmega2.xbn (263)
    A cpu/atxmega/ldscripts_compat/avrxmega2.xn (263)
    A cpu/atxmega/ldscripts_compat/avrxmega2.xr (215)
    A cpu/atxmega/ldscripts_compat/avrxmega2.xu (223)
    A cpu/atxmega/ldscripts_compat/avrxmega3.x (267)
    A cpu/atxmega/ldscripts_compat/avrxmega3.xbn (267)
    A cpu/atxmega/ldscripts_compat/avrxmega3.xn (267)
    A cpu/atxmega/ldscripts_compat/avrxmega3.xr (218)
    A cpu/atxmega/ldscripts_compat/avrxmega3.xu (226)
    A cpu/atxmega/ldscripts_compat/avrxmega4.x (263)
    A cpu/atxmega/ldscripts_compat/avrxmega4.xbn (263)
    A cpu/atxmega/ldscripts_compat/avrxmega4.xn (263)
    A cpu/atxmega/ldscripts_compat/avrxmega4.xr (215)
    A cpu/atxmega/ldscripts_compat/avrxmega4.xu (223)
    A cpu/atxmega/ldscripts_compat/avrxmega5.x (263)
    A cpu/atxmega/ldscripts_compat/avrxmega5.xbn (263)
    A cpu/atxmega/ldscripts_compat/avrxmega5.xn (263)
    A cpu/atxmega/ldscripts_compat/avrxmega5.xr (215)
    A cpu/atxmega/ldscripts_compat/avrxmega5.xu (223)
    A cpu/atxmega/ldscripts_compat/avrxmega6.x (263)
    A cpu/atxmega/ldscripts_compat/avrxmega6.xbn (263)
    A cpu/atxmega/ldscripts_compat/avrxmega6.xn (263)
    A cpu/atxmega/ldscripts_compat/avrxmega6.xr (215)
    A cpu/atxmega/ldscripts_compat/avrxmega6.xu (223)
    A cpu/atxmega/ldscripts_compat/avrxmega7.x (263)
    A cpu/atxmega/ldscripts_compat/avrxmega7.xbn (263)
    A cpu/atxmega/ldscripts_compat/avrxmega7.xn (263)
    A cpu/atxmega/ldscripts_compat/avrxmega7.xr (215)
    A cpu/atxmega/ldscripts_compat/avrxmega7.xu (223)
    A cpu/atxmega/periph/Makefile (3)
    A cpu/atxmega/periph/cpuid.c (59)
    A cpu/atxmega/periph/gpio.c (475)
    A cpu/atxmega/periph/nvm.c (77)
    A cpu/atxmega/periph/pm.c (75)
    A cpu/atxmega/periph/timer.c (224)
    A cpu/atxmega/periph/uart.c (371)
    M cpu/avr8_common/avr8_cpu.c (12)
    A cpu/avr8_common/include/helper.h (34)
    M cpu/avr8_common/thread_arch.c (277)
    M makefiles/arch/atmega.inc.mk (14)
    M makefiles/tools/avrdude.inc.mk (8)

-- Patch Links --

https://github.com/RIOT-OS/RIOT/pull/15758.patch
https://github.com/RIOT-OS/RIOT/pull/15758.diff

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/RIOT-OS/RIOT/pull/15758
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.riot-os.org/pipermail/notifications/attachments/20210112/4cec88b2/attachment-0001.htm>


More information about the notifications mailing list