Merge pull request #13 from jhbruhn/feature/nrf52833
Support for E73-2G4M08S1E (nrf52833) module
This commit is contained in:
commit
5c71363258
4 changed files with 190 additions and 25 deletions
|
|
@ -1,17 +1,41 @@
|
||||||
|
# Supported platforms:
|
||||||
|
# * E73_2G4M08S1C (nrf2480, default)
|
||||||
|
# * E73_2G4M08S1E (nrf2833)
|
||||||
|
# note: the missing whitespace after the = is on purpose here
|
||||||
|
PLATFORM ?=E73_2G4M08S1C
|
||||||
|
|
||||||
|
ifeq ($(PLATFORM),E73_2G4M08S1E)
|
||||||
|
SRC_FILES := \
|
||||||
|
$(SDK_ROOT)/modules/nrfx/mdk/gcc_startup_nrf52833.S \
|
||||||
|
$(SDK_ROOT)/modules/nrfx/mdk/system_nrf52833.c
|
||||||
|
TARGETS := nrf52833_xxaa
|
||||||
|
CFLAGS += -DNRF52833_XXAA
|
||||||
|
ASMFLAGS += -DNRF52833_XXAA
|
||||||
|
LINKER_SCRIPT := b_parasite_gcc_nrf52833.ld
|
||||||
|
HEAP_SIZE := 2048
|
||||||
|
STACK_SIZE := 2048
|
||||||
|
else ifeq ($(PLATFORM),E73_2G4M08S1C)
|
||||||
|
SRC_FILES := \
|
||||||
|
$(SDK_ROOT)/modules/nrfx/mdk/gcc_startup_nrf52840.S \
|
||||||
|
$(SDK_ROOT)/modules/nrfx/mdk/system_nrf52840.c
|
||||||
|
TARGETS := nrf52840_xxaa
|
||||||
|
CFLAGS += -DNRF52840_XXAA
|
||||||
|
ASMFLAGS += -DNRF52840_XXAA
|
||||||
|
LINKER_SCRIPT := b_parasite_gcc_nrf52840.ld
|
||||||
|
HEAP_SIZE := 8192
|
||||||
|
STACK_SIZE := 8192
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
PROJECT_NAME := ble_app_beacon_pca10056_s140
|
PROJECT_NAME := ble_app_beacon_pca10056_s140
|
||||||
TARGETS := nrf52840_xxaa
|
|
||||||
OUTPUT_DIRECTORY := _build
|
OUTPUT_DIRECTORY := _build
|
||||||
|
|
||||||
# Set SDK_ROOT via env vars.
|
# Set SDK_ROOT via env vars.
|
||||||
# SDK_ROOT := ../../../.././..
|
# SDK_ROOT := ../../../.././..
|
||||||
PROJ_DIR := ./src
|
PROJ_DIR := ./src
|
||||||
|
|
||||||
$(OUTPUT_DIRECTORY)/nrf52840_xxaa.out: \
|
|
||||||
LINKER_SCRIPT := b_parasite_gcc_nrf52.ld
|
|
||||||
|
|
||||||
# Source files common to all targets
|
# Source files common to all targets
|
||||||
SRC_FILES += \
|
SRC_FILES += \
|
||||||
$(SDK_ROOT)/modules/nrfx/mdk/gcc_startup_nrf52840.S \
|
|
||||||
$(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_rtt.c \
|
$(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_rtt.c \
|
||||||
$(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_serial.c \
|
$(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_serial.c \
|
||||||
$(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_uart.c \
|
$(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_uart.c \
|
||||||
|
|
@ -39,8 +63,6 @@ SRC_FILES += \
|
||||||
$(SDK_ROOT)/components/libraries/experimental_section_vars/nrf_section_iter.c \
|
$(SDK_ROOT)/components/libraries/experimental_section_vars/nrf_section_iter.c \
|
||||||
$(SDK_ROOT)/components/libraries/sortlist/nrf_sortlist.c \
|
$(SDK_ROOT)/components/libraries/sortlist/nrf_sortlist.c \
|
||||||
$(SDK_ROOT)/components/libraries/strerror/nrf_strerror.c \
|
$(SDK_ROOT)/components/libraries/strerror/nrf_strerror.c \
|
||||||
$(SDK_ROOT)/modules/nrfx/mdk/system_nrf52840.c \
|
|
||||||
$(SDK_ROOT)/components/boards/boards.c \
|
|
||||||
$(SDK_ROOT)/integration/nrfx/legacy/nrf_drv_clock.c \
|
$(SDK_ROOT)/integration/nrfx/legacy/nrf_drv_clock.c \
|
||||||
$(SDK_ROOT)/integration/nrfx/legacy/nrf_drv_twi.c \
|
$(SDK_ROOT)/integration/nrfx/legacy/nrf_drv_twi.c \
|
||||||
$(SDK_ROOT)/modules/nrfx/soc/nrfx_atomic.c \
|
$(SDK_ROOT)/modules/nrfx/soc/nrfx_atomic.c \
|
||||||
|
|
@ -51,7 +73,6 @@ SRC_FILES += \
|
||||||
$(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_twi.c \
|
$(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_twi.c \
|
||||||
$(SDK_ROOT)/modules/nrfx/drivers/src/prs/nrfx_prs.c \
|
$(SDK_ROOT)/modules/nrfx/drivers/src/prs/nrfx_prs.c \
|
||||||
$(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_pwm.c \
|
$(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_pwm.c \
|
||||||
$(SDK_ROOT)/components/libraries/bsp/bsp.c \
|
|
||||||
$(PROJ_DIR)/main.c \
|
$(PROJ_DIR)/main.c \
|
||||||
$(SDK_ROOT)/external/segger_rtt/SEGGER_RTT.c \
|
$(SDK_ROOT)/external/segger_rtt/SEGGER_RTT.c \
|
||||||
$(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_Syscalls_GCC.c \
|
$(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_Syscalls_GCC.c \
|
||||||
|
|
@ -90,7 +111,6 @@ INC_FOLDERS += \
|
||||||
$(SDK_ROOT)/components/libraries/gpiote \
|
$(SDK_ROOT)/components/libraries/gpiote \
|
||||||
$(SDK_ROOT)/components/libraries/bootloader/ble_dfu \
|
$(SDK_ROOT)/components/libraries/bootloader/ble_dfu \
|
||||||
$(SDK_ROOT)/components/nfc/ndef/connection_handover/common \
|
$(SDK_ROOT)/components/nfc/ndef/connection_handover/common \
|
||||||
$(SDK_ROOT)/components/boards \
|
|
||||||
$(SDK_ROOT)/components/nfc/ndef/generic/record \
|
$(SDK_ROOT)/components/nfc/ndef/generic/record \
|
||||||
$(SDK_ROOT)/components/ble/ble_advertising \
|
$(SDK_ROOT)/components/ble/ble_advertising \
|
||||||
$(SDK_ROOT)/external/utf_converter \
|
$(SDK_ROOT)/external/utf_converter \
|
||||||
|
|
@ -108,7 +128,6 @@ INC_FOLDERS += \
|
||||||
$(SDK_ROOT)/components/ble/common \
|
$(SDK_ROOT)/components/ble/common \
|
||||||
$(SDK_ROOT)/components/ble/ble_services/ble_lls \
|
$(SDK_ROOT)/components/ble/ble_services/ble_lls \
|
||||||
$(SDK_ROOT)/components/nfc/platform \
|
$(SDK_ROOT)/components/nfc/platform \
|
||||||
$(SDK_ROOT)/components/libraries/bsp \
|
|
||||||
$(SDK_ROOT)/components/nfc/ndef/connection_handover/ac_rec \
|
$(SDK_ROOT)/components/nfc/ndef/connection_handover/ac_rec \
|
||||||
$(SDK_ROOT)/components/ble/ble_services/ble_bas \
|
$(SDK_ROOT)/components/ble/ble_services/ble_bas \
|
||||||
$(SDK_ROOT)/components/libraries/mpu \
|
$(SDK_ROOT)/components/libraries/mpu \
|
||||||
|
|
@ -211,20 +230,18 @@ OPT = -O3 -g3
|
||||||
CFLAGS += $(OPT)
|
CFLAGS += $(OPT)
|
||||||
CFLAGS += -DAPP_TIMER_V2
|
CFLAGS += -DAPP_TIMER_V2
|
||||||
CFLAGS += -DAPP_TIMER_V2_RTC1_ENABLED
|
CFLAGS += -DAPP_TIMER_V2_RTC1_ENABLED
|
||||||
CFLAGS += -DBOARD_PCA10056
|
|
||||||
CFLAGS += -DCONFIG_GPIO_AS_PINRESET
|
CFLAGS += -DCONFIG_GPIO_AS_PINRESET
|
||||||
CFLAGS += -DFLOAT_ABI_HARD
|
CFLAGS += -DFLOAT_ABI_HARD
|
||||||
CFLAGS += -DNRF52840_XXAA
|
|
||||||
CFLAGS += -DNRF_SD_BLE_API_VERSION=7
|
CFLAGS += -DNRF_SD_BLE_API_VERSION=7
|
||||||
CFLAGS += -DS140
|
CFLAGS += -DS140
|
||||||
CFLAGS += -DSOFTDEVICE_PRESENT
|
CFLAGS += -DSOFTDEVICE_PRESENT
|
||||||
CFLAGS += -DEBUG
|
CFLAGS += -DDEBUG
|
||||||
# Setting -DDEBUG prints info via JLkinkRTTLogger, but hides the stack trace
|
# Setting -DDEBUG prints info via JLkinkRTTLogger, but hides the stack trace
|
||||||
# when debugging with VSCode's Cortex Debug extension.
|
# when debugging with VSCode's Cortex Debug extension.
|
||||||
# CFLAGS += -DDEBUG
|
# CFLAGS += -DDEBUG
|
||||||
CFLAGS += -mcpu=cortex-m4
|
CFLAGS += -mcpu=cortex-m4
|
||||||
CFLAGS += -mthumb -mabi=aapcs
|
CFLAGS += -mthumb -mabi=aapcs
|
||||||
CFLAGS += -Wall -Werror
|
CFLAGS += -Wall -Werror -Wno-maybe-uninitialized
|
||||||
CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16
|
CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16
|
||||||
# keep every function in a separate section, this allows linker to discard unused ones
|
# keep every function in a separate section, this allows linker to discard unused ones
|
||||||
CFLAGS += -ffunction-sections -fdata-sections -fno-strict-aliasing
|
CFLAGS += -ffunction-sections -fdata-sections -fno-strict-aliasing
|
||||||
|
|
@ -239,10 +256,8 @@ ASMFLAGS += -mthumb -mabi=aapcs
|
||||||
ASMFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16
|
ASMFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16
|
||||||
ASMFLAGS += -DAPP_TIMER_V2
|
ASMFLAGS += -DAPP_TIMER_V2
|
||||||
ASMFLAGS += -DAPP_TIMER_V2_RTC1_ENABLED
|
ASMFLAGS += -DAPP_TIMER_V2_RTC1_ENABLED
|
||||||
ASMFLAGS += -DBOARD_PCA10056
|
|
||||||
ASMFLAGS += -DCONFIG_GPIO_AS_PINRESET
|
ASMFLAGS += -DCONFIG_GPIO_AS_PINRESET
|
||||||
ASMFLAGS += -DFLOAT_ABI_HARD
|
ASMFLAGS += -DFLOAT_ABI_HARD
|
||||||
ASMFLAGS += -DNRF52840_XXAA
|
|
||||||
ASMFLAGS += -DNRF_SD_BLE_API_VERSION=7
|
ASMFLAGS += -DNRF_SD_BLE_API_VERSION=7
|
||||||
ASMFLAGS += -DS140
|
ASMFLAGS += -DS140
|
||||||
ASMFLAGS += -DSOFTDEVICE_PRESENT
|
ASMFLAGS += -DSOFTDEVICE_PRESENT
|
||||||
|
|
@ -257,10 +272,10 @@ LDFLAGS += -Wl,--gc-sections
|
||||||
# use newlib in nano version
|
# use newlib in nano version
|
||||||
LDFLAGS += --specs=nano.specs
|
LDFLAGS += --specs=nano.specs
|
||||||
|
|
||||||
nrf52840_xxaa: CFLAGS += -D__HEAP_SIZE=8192
|
$(TARGETS): CFLAGS += -D__HEAP_SIZE=$(HEAP_SIZE)
|
||||||
nrf52840_xxaa: CFLAGS += -D__STACK_SIZE=8192
|
$(TARGETS): CFLAGS += -D__STACK_SIZE=$(STACK_SIZE)
|
||||||
nrf52840_xxaa: ASMFLAGS += -D__HEAP_SIZE=8192
|
$(TARGETS): ASMFLAGS += -D__HEAP_SIZE=$(HEAP_SIZE)
|
||||||
nrf52840_xxaa: ASMFLAGS += -D__STACK_SIZE=8192
|
$(TARGETS): ASMFLAGS += -D__STACK_SIZE=$(STACK_SIZE)
|
||||||
|
|
||||||
# Add standard libraries at the very end of the linker input, after all objects
|
# Add standard libraries at the very end of the linker input, after all objects
|
||||||
# that may need symbols provided by these libraries.
|
# that may need symbols provided by these libraries.
|
||||||
|
|
@ -270,12 +285,12 @@ LIB_FILES += -lc -lnosys -lm
|
||||||
.PHONY: default help
|
.PHONY: default help
|
||||||
|
|
||||||
# Default target - first one defined
|
# Default target - first one defined
|
||||||
default: nrf52840_xxaa
|
default: $(TARGETS)
|
||||||
|
|
||||||
# Print all targets that can be built
|
# Print all targets that can be built
|
||||||
help:
|
help:
|
||||||
@echo following targets are available:
|
@echo following targets are available:
|
||||||
@echo nrf52840_xxaa
|
@echo $(TARGETS)
|
||||||
@echo flash_softdevice
|
@echo flash_softdevice
|
||||||
@echo sdk_config - starting external tool for editing sdk_config.h
|
@echo sdk_config - starting external tool for editing sdk_config.h
|
||||||
@echo flash - flashing binary
|
@echo flash - flashing binary
|
||||||
|
|
@ -291,8 +306,8 @@ $(foreach target, $(TARGETS), $(call define_target, $(target)))
|
||||||
|
|
||||||
# Flash the program
|
# Flash the program
|
||||||
flash: default
|
flash: default
|
||||||
@echo Flashing: $(OUTPUT_DIRECTORY)/nrf52840_xxaa.hex
|
@echo Flashing: $(OUTPUT_DIRECTORY)/$(TARGETS).hex
|
||||||
nrfjprog -f nrf52 --program $(OUTPUT_DIRECTORY)/nrf52840_xxaa.hex --sectorerase
|
nrfjprog -f nrf52 --program $(OUTPUT_DIRECTORY)/$(TARGETS).hex --sectorerase
|
||||||
nrfjprog -f nrf52 --reset
|
nrfjprog -f nrf52 --reset
|
||||||
|
|
||||||
# Flash softdevice
|
# Flash softdevice
|
||||||
|
|
@ -319,4 +334,4 @@ lint:
|
||||||
|
|
||||||
.PHONY: fix
|
.PHONY: fix
|
||||||
lint-fix:
|
lint-fix:
|
||||||
find src -iname *.h -o -iname *.c | xargs clang-format -i
|
find src -iname *.h -o -iname *.c | xargs clang-format -i
|
||||||
|
|
|
||||||
|
|
@ -39,3 +39,23 @@ Sensor data is encoded in unsigned 16 bits (2 bytes), and whenever multiple
|
||||||
| 6-7 | Relative air humidity, scaled from 0 (0%) to 0xffff (100%) |
|
| 6-7 | Relative air humidity, scaled from 0 (0%) to 0xffff (100%) |
|
||||||
| 8-9 | Soil moisture, scaled from from 0 (0%) to 0xffff (100%) |
|
| 8-9 | Soil moisture, scaled from from 0 (0%) to 0xffff (100%) |
|
||||||
| 10-15 | b-parasite's own MAC address, big-endian format |
|
| 10-15 | b-parasite's own MAC address, big-endian format |
|
||||||
|
|
||||||
|
# Supported Modules
|
||||||
|
|
||||||
|
This code supports two E73 modules:
|
||||||
|
* E73-2G4M08S1C (nrf2480, default)
|
||||||
|
* E73-2G4M08S1E (nrf2833)
|
||||||
|
|
||||||
|
To choose for which one you want to compile, just pass PLATFORM as an env variable to make, and set it to the platform you want to use. For example, to compile for E73-2G4M08S1E:
|
||||||
|
|
||||||
|
|
||||||
|
```bash
|
||||||
|
SDK_ROOT=<...> PLATFORM=E73_2G4M08S1E make
|
||||||
|
```
|
||||||
|
|
||||||
|
and vice-versa for E73-2G4M08S1C, although that platform will be chosen as default anyways:
|
||||||
|
|
||||||
|
|
||||||
|
```bash
|
||||||
|
SDK_ROOT=<...> PLATFORM=E73_2G4M08S1C make
|
||||||
|
```
|
||||||
|
|
|
||||||
130
code/b-parasite/b_parasite_gcc_nrf52833.ld
Normal file
130
code/b-parasite/b_parasite_gcc_nrf52833.ld
Normal file
|
|
@ -0,0 +1,130 @@
|
||||||
|
/* Linker script to configure memory regions. */
|
||||||
|
|
||||||
|
SEARCH_DIR(.)
|
||||||
|
GROUP(-lgcc -lc -lnosys)
|
||||||
|
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
FLASH (rx) : ORIGIN = 0x27000, LENGTH = 0x59000
|
||||||
|
RAM (rwx) : ORIGIN = 0x20002300, LENGTH = 0x1dd00
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
. = ALIGN(4);
|
||||||
|
.mem_section_dummy_ram :
|
||||||
|
{
|
||||||
|
}
|
||||||
|
.cli_sorted_cmd_ptrs :
|
||||||
|
{
|
||||||
|
PROVIDE(__start_cli_sorted_cmd_ptrs = .);
|
||||||
|
KEEP(*(.cli_sorted_cmd_ptrs))
|
||||||
|
PROVIDE(__stop_cli_sorted_cmd_ptrs = .);
|
||||||
|
} > RAM
|
||||||
|
.fs_data :
|
||||||
|
{
|
||||||
|
PROVIDE(__start_fs_data = .);
|
||||||
|
KEEP(*(.fs_data))
|
||||||
|
PROVIDE(__stop_fs_data = .);
|
||||||
|
} > RAM
|
||||||
|
.log_dynamic_data :
|
||||||
|
{
|
||||||
|
PROVIDE(__start_log_dynamic_data = .);
|
||||||
|
KEEP(*(SORT(.log_dynamic_data*)))
|
||||||
|
PROVIDE(__stop_log_dynamic_data = .);
|
||||||
|
} > RAM
|
||||||
|
.log_filter_data :
|
||||||
|
{
|
||||||
|
PROVIDE(__start_log_filter_data = .);
|
||||||
|
KEEP(*(SORT(.log_filter_data*)))
|
||||||
|
PROVIDE(__stop_log_filter_data = .);
|
||||||
|
} > RAM
|
||||||
|
|
||||||
|
} INSERT AFTER .data;
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
.mem_section_dummy_rom :
|
||||||
|
{
|
||||||
|
}
|
||||||
|
.sdh_ble_observers :
|
||||||
|
{
|
||||||
|
PROVIDE(__start_sdh_ble_observers = .);
|
||||||
|
KEEP(*(SORT(.sdh_ble_observers*)))
|
||||||
|
PROVIDE(__stop_sdh_ble_observers = .);
|
||||||
|
} > FLASH
|
||||||
|
.sdh_soc_observers :
|
||||||
|
{
|
||||||
|
PROVIDE(__start_sdh_soc_observers = .);
|
||||||
|
KEEP(*(SORT(.sdh_soc_observers*)))
|
||||||
|
PROVIDE(__stop_sdh_soc_observers = .);
|
||||||
|
} > FLASH
|
||||||
|
.sdh_req_observers :
|
||||||
|
{
|
||||||
|
PROVIDE(__start_sdh_req_observers = .);
|
||||||
|
KEEP(*(SORT(.sdh_req_observers*)))
|
||||||
|
PROVIDE(__stop_sdh_req_observers = .);
|
||||||
|
} > FLASH
|
||||||
|
.sdh_state_observers :
|
||||||
|
{
|
||||||
|
PROVIDE(__start_sdh_state_observers = .);
|
||||||
|
KEEP(*(SORT(.sdh_state_observers*)))
|
||||||
|
PROVIDE(__stop_sdh_state_observers = .);
|
||||||
|
} > FLASH
|
||||||
|
.sdh_stack_observers :
|
||||||
|
{
|
||||||
|
PROVIDE(__start_sdh_stack_observers = .);
|
||||||
|
KEEP(*(SORT(.sdh_stack_observers*)))
|
||||||
|
PROVIDE(__stop_sdh_stack_observers = .);
|
||||||
|
} > FLASH
|
||||||
|
.nrf_queue :
|
||||||
|
{
|
||||||
|
PROVIDE(__start_nrf_queue = .);
|
||||||
|
KEEP(*(.nrf_queue))
|
||||||
|
PROVIDE(__stop_nrf_queue = .);
|
||||||
|
} > FLASH
|
||||||
|
.nrf_balloc :
|
||||||
|
{
|
||||||
|
PROVIDE(__start_nrf_balloc = .);
|
||||||
|
KEEP(*(.nrf_balloc))
|
||||||
|
PROVIDE(__stop_nrf_balloc = .);
|
||||||
|
} > FLASH
|
||||||
|
.cli_command :
|
||||||
|
{
|
||||||
|
PROVIDE(__start_cli_command = .);
|
||||||
|
KEEP(*(.cli_command))
|
||||||
|
PROVIDE(__stop_cli_command = .);
|
||||||
|
} > FLASH
|
||||||
|
.crypto_data :
|
||||||
|
{
|
||||||
|
PROVIDE(__start_crypto_data = .);
|
||||||
|
KEEP(*(SORT(.crypto_data*)))
|
||||||
|
PROVIDE(__stop_crypto_data = .);
|
||||||
|
} > FLASH
|
||||||
|
.pwr_mgmt_data :
|
||||||
|
{
|
||||||
|
PROVIDE(__start_pwr_mgmt_data = .);
|
||||||
|
KEEP(*(SORT(.pwr_mgmt_data*)))
|
||||||
|
PROVIDE(__stop_pwr_mgmt_data = .);
|
||||||
|
} > FLASH
|
||||||
|
.log_const_data :
|
||||||
|
{
|
||||||
|
PROVIDE(__start_log_const_data = .);
|
||||||
|
KEEP(*(SORT(.log_const_data*)))
|
||||||
|
PROVIDE(__stop_log_const_data = .);
|
||||||
|
} > FLASH
|
||||||
|
.log_backends :
|
||||||
|
{
|
||||||
|
PROVIDE(__start_log_backends = .);
|
||||||
|
KEEP(*(SORT(.log_backends*)))
|
||||||
|
PROVIDE(__stop_log_backends = .);
|
||||||
|
} > FLASH
|
||||||
|
|
||||||
|
} INSERT AFTER .text
|
||||||
|
|
||||||
|
|
||||||
|
INCLUDE "nrf_common.ld"
|
||||||
Loading…
Add table
Reference in a new issue