supporting feather52832
This commit is contained in:
107
src/Makefile
107
src/Makefile
@ -15,6 +15,7 @@ SDK11_PATH = ../lib/sdk11/components
|
||||
|
||||
SRC_PATH = .
|
||||
TUSB_PATH = ../lib/tinyusb/src
|
||||
NRFX_PATH = ../lib/nrfx
|
||||
|
||||
|
||||
SD_VER1 = 6
|
||||
@ -26,7 +27,7 @@ SD_VERSION_FULL = $(SD_VERSION)r$(SD_VER4)
|
||||
|
||||
SD_PATH = ../lib/softdevice/$(SD_NAME)/$(SD_VERSION)
|
||||
SD_HEX = $(SD_PATH)/hex/$(SD_NAME)_nrf52_$(SD_VERSION)_softdevice.hex
|
||||
LINKER_SCRIPT = $(SRC_PATH)/$(SD_NAME)_$(SD_VERSION).ld
|
||||
LD_FILE = $(SRC_PATH)/linker/$(SD_NAME)_$(SD_VERSION).ld
|
||||
|
||||
OUTPUT_FILENAME = $(BOARD)_bootloader
|
||||
BOOT_SD_NAME = $(OUTPUT_FILENAME)_$(SD_NAME)_$(SD_VERSION_FULL)
|
||||
@ -108,10 +109,6 @@ remduplicates = $(strip $(if $1,$(firstword $1) $(call remduplicates,$(filter-ou
|
||||
|
||||
C_SOURCE_FILES += $(SRC_PATH)/main.c
|
||||
C_SOURCE_FILES += $(SRC_PATH)/dfu_ble_svc.c
|
||||
C_SOURCE_FILES += $(SRC_PATH)/usb/tusb_descriptors.c
|
||||
C_SOURCE_FILES += $(SRC_PATH)/usb/usb.c
|
||||
C_SOURCE_FILES += $(SRC_PATH)/usb/msc_uf2.c
|
||||
C_SOURCE_FILES += $(SRC_PATH)/usb/uf2/ghostfat.c
|
||||
|
||||
# SDK 11 files
|
||||
C_SOURCE_FILES += $(SDK11_PATH)/libraries/bootloader_dfu/bootloader.c
|
||||
@ -144,6 +141,15 @@ C_SOURCE_FILES += $(SDK_PATH)/libraries/util/nrf_assert.c
|
||||
C_SOURCE_FILES += $(SDK_PATH)/drivers_nrf/common/nrf_drv_common.c
|
||||
C_SOURCE_FILES += $(SDK_PATH)/drivers_nrf/hal/nrf_nvmc.c
|
||||
|
||||
|
||||
ifneq ($(IS_NRF52840),)
|
||||
|
||||
C_SOURCE_FILES += $(SRC_PATH)/usb/tusb_descriptors.c
|
||||
C_SOURCE_FILES += $(SRC_PATH)/usb/usb.c
|
||||
C_SOURCE_FILES += $(SRC_PATH)/usb/msc_uf2.c
|
||||
C_SOURCE_FILES += $(SRC_PATH)/usb/uf2/ghostfat.c
|
||||
|
||||
|
||||
C_SOURCE_FILES += $(SDK_PATH)/toolchain/system_nrf52840.c
|
||||
|
||||
# Tinyusb stack
|
||||
@ -157,6 +163,14 @@ C_SOURCE_FILES += $(TUSB_PATH)/class/msc/msc_device.c
|
||||
C_SOURCE_FILES += $(TUSB_PATH)/class/custom/custom_device.c
|
||||
C_SOURCE_FILES += $(TUSB_PATH)/tusb.c
|
||||
|
||||
else
|
||||
|
||||
C_SOURCE_FILES += $(NRFX_PATH)/mdk/system_nrf52.c
|
||||
|
||||
|
||||
endif
|
||||
|
||||
|
||||
#******************************************************************************
|
||||
# Assembly Files
|
||||
#******************************************************************************
|
||||
@ -165,44 +179,48 @@ ASM_SOURCE_FILES = $(SDK_PATH)/toolchain/gcc/gcc_startup_nrf52840.S
|
||||
#******************************************************************************
|
||||
# INCLUDE PATH
|
||||
#******************************************************************************
|
||||
INC_PATHS += -I$(SRC_PATH)/
|
||||
INC_PATHS += -I$(SRC_PATH)/usb
|
||||
INC_PATHS += -I$(TUSB_PATH)/
|
||||
IPATH += $(SRC_PATH)/
|
||||
IPATH += $(SRC_PATH)/usb
|
||||
IPATH += $(TUSB_PATH)/
|
||||
|
||||
INC_PATHS += -I$(SDK11_PATH)/libraries/bootloader_dfu/hci_transport
|
||||
INC_PATHS += -I$(SDK11_PATH)/libraries/bootloader_dfu
|
||||
INC_PATHS += -I$(SDK11_PATH)/drivers_nrf/pstorage
|
||||
INC_PATHS += -I$(SDK11_PATH)/ble/common
|
||||
INC_PATHS += -I$(SDK11_PATH)/ble/ble_services/ble_dfu
|
||||
INC_PATHS += -I$(SDK11_PATH)/ble/ble_services/ble_dis
|
||||
INC_PATHS += -I$(SDK11_PATH)/libraries/util
|
||||
IPATH += $(NRFX_PATH)/mdk
|
||||
|
||||
INC_PATHS += -I$(SDK_PATH)/libraries/timer
|
||||
INC_PATHS += -I$(SDK_PATH)/libraries/scheduler
|
||||
INC_PATHS += -I$(SDK_PATH)/libraries/crc16
|
||||
INC_PATHS += -I$(SDK_PATH)/libraries/util
|
||||
INC_PATHS += -I$(SDK_PATH)/libraries/hci/config
|
||||
INC_PATHS += -I$(SDK_PATH)/libraries/uart
|
||||
INC_PATHS += -I$(SDK_PATH)/libraries/hci
|
||||
IPATH += $(SDK11_PATH)/libraries/bootloader_dfu/hci_transport
|
||||
IPATH += $(SDK11_PATH)/libraries/bootloader_dfu
|
||||
IPATH += $(SDK11_PATH)/drivers_nrf/pstorage
|
||||
IPATH += $(SDK11_PATH)/ble/common
|
||||
IPATH += $(SDK11_PATH)/ble/ble_services/ble_dfu
|
||||
IPATH += $(SDK11_PATH)/ble/ble_services/ble_dis
|
||||
IPATH += $(SDK11_PATH)/libraries/util
|
||||
|
||||
INC_PATHS += -I$(SDK_PATH)/drivers_nrf/common
|
||||
INC_PATHS += -I$(SDK_PATH)/drivers_nrf/hal
|
||||
INC_PATHS += -I$(SDK_PATH)/drivers_nrf/config
|
||||
INC_PATHS += -I$(SDK_PATH)/drivers_nrf/delay
|
||||
INC_PATHS += -I$(SDK_PATH)/drivers_nrf/uart
|
||||
INC_PATHS += -I$(SDK_PATH)/drivers_nrf/power
|
||||
INC_PATHS += -I$(SDK_PATH)/drivers_nrf/usbd
|
||||
IPATH += $(SDK_PATH)/libraries/timer
|
||||
IPATH += $(SDK_PATH)/libraries/scheduler
|
||||
IPATH += $(SDK_PATH)/libraries/crc16
|
||||
IPATH += $(SDK_PATH)/libraries/util
|
||||
IPATH += $(SDK_PATH)/libraries/hci/config
|
||||
IPATH += $(SDK_PATH)/libraries/uart
|
||||
IPATH += $(SDK_PATH)/libraries/hci
|
||||
|
||||
INC_PATHS += -I$(SDK_PATH)/device
|
||||
IPATH += $(SDK_PATH)/drivers_nrf/common
|
||||
IPATH += $(SDK_PATH)/drivers_nrf/hal
|
||||
IPATH += $(SDK_PATH)/drivers_nrf/config
|
||||
IPATH += $(SDK_PATH)/drivers_nrf/delay
|
||||
IPATH += $(SDK_PATH)/drivers_nrf/uart
|
||||
IPATH += $(SDK_PATH)/drivers_nrf/power
|
||||
IPATH += $(SDK_PATH)/drivers_nrf/usbd
|
||||
|
||||
INC_PATHS += -I$(SDK_PATH)/toolchain/cmsis/include
|
||||
INC_PATHS += -I$(SDK_PATH)/toolchain/gcc
|
||||
INC_PATHS += -I$(SDK_PATH)/toolchain
|
||||
IPATH += $(SDK_PATH)/device
|
||||
|
||||
IPATH += $(SDK_PATH)/toolchain/cmsis/include
|
||||
IPATH += $(SDK_PATH)/toolchain/gcc
|
||||
IPATH += $(SDK_PATH)/toolchain
|
||||
|
||||
|
||||
INC_PATHS += -I$(SD_PATH)/common
|
||||
INC_PATHS += -I$(SD_PATH)/headers
|
||||
INC_PATHS += -I$(SD_PATH)/headers/nrf52
|
||||
IPATH += $(SD_PATH)/headers
|
||||
IPATH += $(SD_PATH)/headers/nrf52
|
||||
|
||||
|
||||
INC_PATHS = $(addprefix -I,$(IPATH))
|
||||
|
||||
#******************************************************************************
|
||||
# Compiler Flags
|
||||
@ -221,9 +239,8 @@ CFLAGS += -fno-builtin --short-enums
|
||||
|
||||
# Defined Symbol (MACROS)
|
||||
CFLAGS += -DBOOTLOADER_VERSION=0x0$(SD_VER1)0$(SD_VER2)0$(SD_VER3)0$(SD_VER4)UL
|
||||
CFLAGS += -DNRF52840_XXAA
|
||||
|
||||
CFLAGS += -D__HEAP_SIZE=0
|
||||
CFLAGS += -DS140
|
||||
CFLAGS += -DCONFIG_GPIO_AS_PINRESET
|
||||
CFLAGS += -DBLE_STACK_SUPPORT_REQD
|
||||
CFLAGS += -DBSP_DEFINES_ONLY
|
||||
@ -235,6 +252,18 @@ CFLAGS += -DDFU_APP_DATA_RESERVED=7*4096
|
||||
|
||||
CFLAGS += -DBOARD_$(shell echo $(BOARD) | tr '[:lower:]' '[:upper:]')
|
||||
|
||||
ifneq ($(IS_NRF52840),)
|
||||
|
||||
CFLAGS += -DNRF52840_XXAA
|
||||
CFLAGS += -DS140
|
||||
|
||||
else
|
||||
|
||||
CFLAGS += -DNRF52
|
||||
CFLAGS += -DS132
|
||||
|
||||
endif
|
||||
|
||||
|
||||
#******************************************************************************
|
||||
# Linker Flags
|
||||
@ -243,7 +272,7 @@ CFLAGS += -DBOARD_$(shell echo $(BOARD) | tr '[:lower:]' '[:upper:]')
|
||||
|
||||
# keep every function in separate section. This will allow linker to dump unused functions
|
||||
LDFLAGS += -Xlinker -Map=$(BUILD)/$(OUTPUT_FILENAME).map
|
||||
LDFLAGS += -mthumb -mabi=aapcs -L$(SRC_PATH)/ -T$(LINKER_SCRIPT)
|
||||
LDFLAGS += -mthumb -mabi=aapcs -L$(SRC_PATH)/ -T$(LD_FILE)
|
||||
LDFLAGS += -mcpu=cortex-m4
|
||||
LDFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16
|
||||
|
||||
|
18
src/main.c
18
src/main.c
@ -64,7 +64,7 @@
|
||||
|
||||
|
||||
void usb_init(void);
|
||||
void usb_teardown();
|
||||
void usb_teardown(void);
|
||||
|
||||
/* tinyusb function that handles power event (detected, ready, removed)
|
||||
* We must call it within SD's SOC event handler, or set it as power event handler if SD is not enabled. */
|
||||
@ -76,6 +76,12 @@ enum {
|
||||
NRFX_POWER_USB_EVT_REMOVED, /**< USB power removed from the connector. */
|
||||
NRFX_POWER_USB_EVT_READY /**< USB power regulator ready. */
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
#define usb_init()
|
||||
#define usb_teardown()
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@ -118,7 +124,12 @@ enum { BLE_CONN_CFG_HIGH_BANDWIDTH = 1 };
|
||||
|
||||
// Adafruit for factory reset
|
||||
#define APPDATA_ADDR_START (BOOTLOADER_REGION_START-DFU_APP_DATA_RESERVED)
|
||||
|
||||
#ifdef NRF52840_XXAA
|
||||
STATIC_ASSERT( APPDATA_ADDR_START == 0xED000);
|
||||
#else
|
||||
STATIC_ASSERT( APPDATA_ADDR_START == 0x6D000);
|
||||
#endif
|
||||
|
||||
|
||||
void adafruit_factory_reset(void);
|
||||
@ -466,7 +477,8 @@ void adafruit_factory_reset(void)
|
||||
//--------------------------------------------------------------------+
|
||||
void app_error_fault_handler(uint32_t id, uint32_t pc, uint32_t info)
|
||||
{
|
||||
verify_breakpoint();
|
||||
volatile uint32_t* ARM_CM_DHCSR = ((volatile uint32_t*) 0xE000EDF0UL); /* Cortex M CoreDebug->DHCSR */
|
||||
if ( (*ARM_CM_DHCSR) & 1UL ) __asm("BKPT #0\n"); /* Only halt mcu if debugger is attached */
|
||||
NVIC_SystemReset();
|
||||
}
|
||||
|
||||
@ -513,12 +525,14 @@ uint32_t proc_soc(void)
|
||||
{
|
||||
pstorage_sys_event_handler(soc_evt);
|
||||
|
||||
#ifdef NRF52840_XXAA
|
||||
/*------------- usb power event handler -------------*/
|
||||
int32_t usbevt = (soc_evt == NRF_EVT_POWER_USB_DETECTED ) ? NRFX_POWER_USB_EVT_DETECTED:
|
||||
(soc_evt == NRF_EVT_POWER_USB_POWER_READY) ? NRFX_POWER_USB_EVT_READY :
|
||||
(soc_evt == NRF_EVT_POWER_USB_REMOVED ) ? NRFX_POWER_USB_EVT_REMOVED : -1;
|
||||
|
||||
if ( usbevt >= 0) tusb_hal_nrf_power_event(usbevt);
|
||||
#endif
|
||||
}
|
||||
|
||||
return err;
|
||||
|
Reference in New Issue
Block a user