From 4f41501fc743b70e014231c195bce4508c87d17b Mon Sep 17 00:00:00 2001 From: hathach Date: Wed, 13 Jan 2021 16:59:55 +0700 Subject: [PATCH] move luna into samd21 group --- hw/bsp/luna/board.mk | 46 ------ hw/bsp/luna/luna.c | 144 ------------------ hw/bsp/samd21/boards/luna/board.h | 46 ++++++ hw/bsp/samd21/boards/luna/board.mk | 11 ++ .../boards}/luna/samd21g18a_flash.ld | 0 5 files changed, 57 insertions(+), 190 deletions(-) delete mode 100644 hw/bsp/luna/board.mk delete mode 100644 hw/bsp/luna/luna.c create mode 100644 hw/bsp/samd21/boards/luna/board.h create mode 100644 hw/bsp/samd21/boards/luna/board.mk rename hw/bsp/{ => samd21/boards}/luna/samd21g18a_flash.ld (100%) diff --git a/hw/bsp/luna/board.mk b/hw/bsp/luna/board.mk deleted file mode 100644 index 272c9f4e..00000000 --- a/hw/bsp/luna/board.mk +++ /dev/null @@ -1,46 +0,0 @@ -CFLAGS += \ - -flto \ - -mthumb \ - -mabi=aapcs-linux \ - -mcpu=cortex-m0plus \ - -nostdlib -nostartfiles \ - -D__SAMD21G18A__ \ - -DCONF_DFLL_OVERWRITE_CALIBRATION=0 \ - -DCFG_TUSB_MCU=OPT_MCU_SAMD21 - -# All source paths should be relative to the top level. -LD_FILE = hw/bsp/$(BOARD)/samd21g18a_flash.ld - -SRC_C += \ - hw/mcu/microchip/asf4/samd21/gcc/gcc/startup_samd21.c \ - hw/mcu/microchip/asf4/samd21/gcc/system_samd21.c \ - hw/mcu/microchip/asf4/samd21/hpl/gclk/hpl_gclk.c \ - hw/mcu/microchip/asf4/samd21/hpl/pm/hpl_pm.c \ - hw/mcu/microchip/asf4/samd21/hpl/sysctrl/hpl_sysctrl.c \ - hw/mcu/microchip/asf4/samd21/hal/src/hal_atomic.c - -INC += \ - $(TOP)/hw/mcu/microchip/asf4/samd21/ \ - $(TOP)/hw/mcu/microchip/asf4/samd21/config \ - $(TOP)/hw/mcu/microchip/asf4/samd21/include \ - $(TOP)/hw/mcu/microchip/asf4/samd21/hal/include \ - $(TOP)/hw/mcu/microchip/asf4/samd21/hal/utils/include \ - $(TOP)/hw/mcu/microchip/asf4/samd21/hpl/pm/ \ - $(TOP)/hw/mcu/microchip/asf4/samd21/hpl/port \ - $(TOP)/hw/mcu/microchip/asf4/samd21/hri \ - $(TOP)/hw/mcu/microchip/asf4/samd21/CMSIS/Include - -# For TinyUSB port source -VENDOR = microchip -CHIP_FAMILY = samd - -# For freeRTOS port source -FREERTOS_PORT = ARM_CM0 - -# For flash-jlink target -JLINK_DEVICE = ATSAMD21G18 - -# flash using jlink -flash: $(BUILD)/$(BOARD)-firmware.bin - dfu-util -a 0 -d 1d50:615c -D $< || dfu-util -a 0 -d 16d0:05a5 -D $< - diff --git a/hw/bsp/luna/luna.c b/hw/bsp/luna/luna.c deleted file mode 100644 index fa321aa4..00000000 --- a/hw/bsp/luna/luna.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2019 Ha Thach (tinyusb.org) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - * This file is part of the TinyUSB stack. - */ - -#include "bsp/board.h" - -#include "sam.h" -#include "hal/include/hal_gpio.h" -#include "hal/include/hal_init.h" -#include "hri/hri_nvmctrl_d21.h" - -#include "hpl/gclk/hpl_gclk_base.h" -#include "hpl_pm_config.h" -#include "hpl/pm/hpl_pm_base.h" - -//--------------------------------------------------------------------+ -// Forward USB interrupt events to TinyUSB IRQ Handler -//--------------------------------------------------------------------+ -void USB_Handler(void) -{ - tud_int_handler(0); -} - - -//--------------------------------------------------------------------+ -// MACRO TYPEDEF CONSTANT ENUM DECLARATION -//--------------------------------------------------------------------+ -#define LED_PIN PIN_PA22 // pin PA22 -#define BUTTON_PIN PIN_PB22 // pin PB22 - -/* Referenced GCLKs, should be initialized firstly */ -#define _GCLK_INIT_1ST (1 << 0 | 1 << 1) - -/* Not referenced GCLKs, initialized last */ -#define _GCLK_INIT_LAST (~_GCLK_INIT_1ST) - -void board_init(void) -{ - // Clock init ( follow hpl_init.c ) - hri_nvmctrl_set_CTRLB_RWS_bf(NVMCTRL, 2); - - _pm_init(); - _sysctrl_init_sources(); -#if _GCLK_INIT_1ST - _gclk_init_generators_by_fref(_GCLK_INIT_1ST); -#endif - _sysctrl_init_referenced_generators(); - _gclk_init_generators_by_fref(_GCLK_INIT_LAST); - - // 1ms tick timer (samd SystemCoreClock may not correct) - SystemCoreClock = CONF_CPU_FREQUENCY; - SysTick_Config(CONF_CPU_FREQUENCY / 1000); - - // Led init - gpio_set_pin_direction(LED_PIN, GPIO_DIRECTION_OUT); - gpio_set_pin_level(LED_PIN, 0); - - // Button init - gpio_set_pin_direction(BUTTON_PIN, GPIO_DIRECTION_IN); - gpio_set_pin_pull_mode(BUTTON_PIN, GPIO_PULL_UP); - - /* USB Clock init - * The USB module requires a GCLK_USB of 48 MHz ~ 0.25% clock - * for low speed and full speed operation. */ - _pm_enable_bus_clock(PM_BUS_APBB, USB); - _pm_enable_bus_clock(PM_BUS_AHB, USB); - _gclk_enable_channel(USB_GCLK_ID, GCLK_CLKCTRL_GEN_GCLK0_Val); - - // USB Pin Init - gpio_set_pin_direction(PIN_PA24, GPIO_DIRECTION_OUT); - gpio_set_pin_level(PIN_PA24, false); - gpio_set_pin_pull_mode(PIN_PA24, GPIO_PULL_OFF); - gpio_set_pin_direction(PIN_PA25, GPIO_DIRECTION_OUT); - gpio_set_pin_level(PIN_PA25, false); - gpio_set_pin_pull_mode(PIN_PA25, GPIO_PULL_OFF); - - gpio_set_pin_function(PIN_PA24, PINMUX_PA24G_USB_DM); - gpio_set_pin_function(PIN_PA25, PINMUX_PA25G_USB_DP); -} - -//--------------------------------------------------------------------+ -// Board porting API -//--------------------------------------------------------------------+ - -void board_led_write(bool state) -{ - gpio_set_pin_level(LED_PIN, state); -} - -uint32_t board_button_read(void) -{ - // button is active low - return gpio_get_pin_level(BUTTON_PIN) ? 0 : 1; -} - -int board_uart_read(uint8_t* buf, int len) -{ - (void) buf; (void) len; - return 0; -} - -int board_uart_write(void const * buf, int len) -{ - (void) buf; (void) len; - return 0; -} - -#if CFG_TUSB_OS == OPT_OS_NONE - -volatile uint32_t system_ticks = 0; - -void SysTick_Handler (void) -{ - system_ticks++; -} - -uint32_t board_millis(void) -{ - return system_ticks; -} - -#endif diff --git a/hw/bsp/samd21/boards/luna/board.h b/hw/bsp/samd21/boards/luna/board.h new file mode 100644 index 00000000..2e0a2a60 --- /dev/null +++ b/hw/bsp/samd21/boards/luna/board.h @@ -0,0 +1,46 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2021, Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef BOARD_H_ +#define BOARD_H_ + +#ifdef __cplusplus + extern "C" { +#endif + +// LED +#define LED_PIN PIN_PA22 +#define LED_STATE_ON 1 + +// Button +#define BUTTON_PIN PIN_PB22 +#define BUTTON_STATE_ACTIVE 0 + +#ifdef __cplusplus + } +#endif + +#endif /* BOARD_H_ */ diff --git a/hw/bsp/samd21/boards/luna/board.mk b/hw/bsp/samd21/boards/luna/board.mk new file mode 100644 index 00000000..0feae931 --- /dev/null +++ b/hw/bsp/samd21/boards/luna/board.mk @@ -0,0 +1,11 @@ +CFLAGS += -D__SAMD21G18A__ + +LD_FILE = $(BOARD_PATH)/samd21g18a_flash.ld + +# For flash-jlink target +JLINK_DEVICE = ATSAMD21G18 + +# flash using dfu-util +flash: $(BUILD)/$(BOARD)-firmware.bin + dfu-util -a 0 -d 1d50:615c -D $< || dfu-util -a 0 -d 16d0:05a5 -D $< + diff --git a/hw/bsp/luna/samd21g18a_flash.ld b/hw/bsp/samd21/boards/luna/samd21g18a_flash.ld similarity index 100% rename from hw/bsp/luna/samd21g18a_flash.ld rename to hw/bsp/samd21/boards/luna/samd21g18a_flash.ld