Merge branch 'develop' into contrib/cc13xx-tsch
This commit is contained in:
commit
8014524dd1
@ -46,11 +46,6 @@ UPPERCASE = _ABCDEFGHIJKLMNOPQRSTUVWXYZ_
|
||||
TARGET_UPPERCASE := ${strip ${shell echo $(TARGET) | sed y!$(LOWERCASE)!$(UPPERCASE)!}}
|
||||
CFLAGS += -DCONTIKI=1 -DCONTIKI_TARGET_$(TARGET_UPPERCASE)=1
|
||||
CFLAGS += -DCONTIKI_TARGET_STRING=\"$(TARGET)\"
|
||||
ifneq ($(BOARD),)
|
||||
TARGET_BOARD_UPPERCASE := ${strip ${shell echo $(BOARD) | sed y!$(LOWERCASE)!$(UPPERCASE)!}}
|
||||
CFLAGS += -DCONTIKI_BOARD_$(TARGET_BOARD_UPPERCASE)=1
|
||||
CFLAGS += -DCONTIKI_BOARD_STRING=\"$(BOARD)\"
|
||||
endif
|
||||
|
||||
CFLAGS += -Wno-unused-const-variable
|
||||
|
||||
@ -129,6 +124,12 @@ endif # $(BOARD) not empty
|
||||
|
||||
PLATFORM_ACTION ?= build
|
||||
|
||||
ifneq ($(BOARD),)
|
||||
TARGET_BOARD_UPPERCASE := ${strip ${shell echo $(BOARD) | sed y!$(LOWERCASE)!$(UPPERCASE)!}}
|
||||
CFLAGS += -DCONTIKI_BOARD_$(TARGET_BOARD_UPPERCASE)=1
|
||||
CFLAGS += -DCONTIKI_BOARD_STRING=\"$(BOARD)\"
|
||||
endif
|
||||
|
||||
# Configure MAC layer
|
||||
|
||||
# The different options
|
||||
|
@ -1,3 +1,14 @@
|
||||
CONTIKI_ARM_DIRS += cortex-m cortex-m/CMSIS
|
||||
|
||||
### Build syscalls for newlib
|
||||
MODULES += os/lib/newlib
|
||||
|
||||
CUSTOM_RULE_LINK = 1
|
||||
|
||||
.SECONDEXPANSION:
|
||||
|
||||
%.elf: $(CPU_STARTFILES) $$(CONTIKI_OBJECTFILES) %.o $(PROJECT_OBJECTFILES) $(PROJECT_LIBRARIES) $(LDSCRIPT) $(TARGET_LIBS)
|
||||
$(TRACE_LD)
|
||||
$(Q)$(LD) $(LDFLAGS) ${filter-out $(LDSCRIPT) %.a,$^} ${filter %.a,$^} $(TARGET_LIBFLAGS) -o $@
|
||||
|
||||
include $(CONTIKI)/arch/cpu/arm/Makefile.arm
|
||||
|
@ -9,22 +9,10 @@ LDFLAGS += -Wl,-Map=$(CONTIKI_NG_PROJECT_MAP),--cref,--no-warn-mismatch
|
||||
|
||||
OBJCOPY_FLAGS += --gap-fill 0xff
|
||||
|
||||
### Build syscalls for newlib
|
||||
MODULES += os/lib/newlib
|
||||
|
||||
CPU_STARTFILES = ${addprefix $(OBJECTDIR)/,${call oname, $(CPU_START_SOURCEFILES)}}
|
||||
|
||||
### Compilation rules
|
||||
CUSTOM_RULE_LINK = 1
|
||||
|
||||
### Resolve any potential circular dependencies between the linked libraries
|
||||
### See: https://stackoverflow.com/questions/5651869/gcc-what-are-the-start-group-and-end-group-command-line-options/5651895
|
||||
TARGET_LIBFLAGS := -Wl,--start-group $(TARGET_LIBFILES) -lm -Wl,--end-group
|
||||
|
||||
.SECONDEXPANSION:
|
||||
|
||||
%.elf: $(CPU_STARTFILES) $$(CONTIKI_OBJECTFILES) %.o $(PROJECT_OBJECTFILES) $(PROJECT_LIBRARIES) $(LDSCRIPT)
|
||||
$(TRACE_LD)
|
||||
$(Q)$(LD) $(LDFLAGS) ${filter-out $(LDSCRIPT) %.a,$^} ${filter %.a,$^} $(TARGET_LIBFLAGS) -o $@
|
||||
|
||||
include $(CONTIKI)/arch/cpu/arm/cortex-m/Makefile.cortex-m
|
||||
|
@ -9,20 +9,10 @@ LDFLAGS += -Wl,-Map=$(CONTIKI_NG_PROJECT_MAP),--cref,--no-warn-mismatch
|
||||
|
||||
OBJCOPY_FLAGS += --gap-fill 0xff
|
||||
|
||||
### Build syscalls for newlib
|
||||
MODULES += os/lib/newlib
|
||||
|
||||
CPU_STARTFILES = ${addprefix $(OBJECTDIR)/,${call oname, $(CPU_START_SOURCEFILES)}}
|
||||
|
||||
### Compilation rules
|
||||
CUSTOM_RULE_LINK = 1
|
||||
|
||||
### Resolve any potential circular dependencies between the linked libraries
|
||||
### See: https://stackoverflow.com/questions/5651869/gcc-what-are-the-start-group-and-end-group-command-line-options/5651895
|
||||
TARGET_LIBFLAGS := -Wl,--start-group $(TARGET_LIBFILES) -Wl,--end-group
|
||||
|
||||
%.elf: $(CPU_STARTFILES) %.o $(PROJECT_OBJECTFILES) $(PROJECT_LIBRARIES) $(CONTIKI_NG_TARGET_LIB) $(TARGET_LIBS)
|
||||
$(TRACE_LD)
|
||||
$(Q)$(LD) $(LDFLAGS) ${filter %.o %.a,$^} $(TARGET_LIBFLAGS) -o $@
|
||||
|
||||
include $(CONTIKI)/arch/cpu/arm/cortex-m/Makefile.cortex-m
|
||||
|
@ -36,11 +36,13 @@
|
||||
/*---------------------------------------------------------------------------*/
|
||||
#define RTIMER_ARCH_SECOND 32768
|
||||
/*---------------------------------------------------------------------------*/
|
||||
#define CC2538_PHY_OVERHEAD 3
|
||||
#define CC2538_BYTE_AIR_TIME 32
|
||||
/* 352us from calling transmit() until the SFD byte has been sent */
|
||||
#define CC2538_DELAY_BEFORE_TX ((unsigned)US_TO_RTIMERTICKS(352))
|
||||
#define CC2538_DELAY_BEFORE_TX ((unsigned)US_TO_RTIMERTICKS(352))
|
||||
/* 192us as in datasheet but ACKs are not always received, so adjusted to 250us */
|
||||
#define CC2538_DELAY_BEFORE_RX ((unsigned)US_TO_RTIMERTICKS(250))
|
||||
#define CC2538_DELAY_BEFORE_DETECT 0
|
||||
#define CC2538_DELAY_BEFORE_RX ((unsigned)US_TO_RTIMERTICKS(250))
|
||||
#define CC2538_DELAY_BEFORE_DETECT 0
|
||||
/* Frame filtering done in software */
|
||||
#define TSCH_CONF_HW_FRAME_FILTERING 0
|
||||
|
||||
|
@ -96,6 +96,8 @@ SECTIONS
|
||||
/* These symbols are used by the stack check library. */
|
||||
_stack = .;
|
||||
_stack_origin = ORIGIN(SRAM) + LENGTH(SRAM);
|
||||
_heap = _stack;
|
||||
_eheap = _stack_origin;
|
||||
|
||||
.ccfg :
|
||||
{
|
||||
|
@ -20,6 +20,30 @@ endif
|
||||
CFLAGSNO = -Wall -g -I/usr/local/include $(CFLAGSWERROR)
|
||||
CFLAGS += $(CFLAGSNO)
|
||||
|
||||
### Are we building with code size optimisations?
|
||||
SMALL ?= 0
|
||||
|
||||
# The optimizations on native platform cannot be enabled in GCC (not Clang) versions less than 7.2
|
||||
GCC_IS_CLANG := $(shell gcc --version 2> /dev/null | grep clang)
|
||||
ifneq ($(GCC_IS_CLANG),)
|
||||
NATIVE_CAN_OPTIIMIZE = 1
|
||||
else
|
||||
GCC_VERSION := $(shell gcc -dumpfullversion -dumpversion | cut -b1-3)
|
||||
ifeq ($(shell expr $(GCC_VERSION) \>= 7.2), 1)
|
||||
NATIVE_CAN_OPTIIMIZE = 1
|
||||
else
|
||||
NATIVE_CAN_OPTIIMIZE = 0
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(NATIVE_CAN_OPTIIMIZE),1)
|
||||
ifeq ($(SMALL),1)
|
||||
CFLAGS += -Os
|
||||
else
|
||||
CFLAGS += -O2
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(HOST_OS),Darwin)
|
||||
AROPTS = -rc
|
||||
LDFLAGS_WERROR := -Wl,-fatal_warnings
|
||||
|
@ -14,3 +14,5 @@ INCLUDE "nrf5x_common.ld"
|
||||
/* These symbols are used by the stack check library. */
|
||||
_stack = end;
|
||||
_stack_origin = ORIGIN(RAM) + LENGTH(RAM);
|
||||
_heap = _stack;
|
||||
_eheap = _stack_origin;
|
||||
|
@ -14,3 +14,5 @@ INCLUDE "nrf5x_common.ld"
|
||||
/* These symbols are used by the stack check library. */
|
||||
_stack = end;
|
||||
_stack_origin = ORIGIN(RAM) + LENGTH(RAM);
|
||||
_heap = _stack;
|
||||
_eheap = _stack_origin;
|
||||
|
@ -14,3 +14,5 @@ INCLUDE "nrf5x_common.ld"
|
||||
/* These symbols are used by the stack check library. */
|
||||
_stack = end;
|
||||
_stack_origin = ORIGIN(RAM) + LENGTH(RAM);
|
||||
_heap = _stack;
|
||||
_eheap = _stack_origin;
|
||||
|
@ -220,6 +220,18 @@
|
||||
#endif /* #if SPI1_IN_USE */
|
||||
/** @} */
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/**
|
||||
* \name CC2538 TSCH configuration
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
#define RADIO_PHY_OVERHEAD CC2538_PHY_OVERHEAD
|
||||
#define RADIO_BYTE_AIR_TIME CC2538_BYTE_AIR_TIME
|
||||
#define RADIO_DELAY_BEFORE_TX CC2538_DELAY_BEFORE_TX
|
||||
#define RADIO_DELAY_BEFORE_RX CC2538_DELAY_BEFORE_RX
|
||||
#define RADIO_DELAY_BEFORE_DETECT CC2538_DELAY_BEFORE_DETECT
|
||||
/** @} */
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/**
|
||||
* \name Device string used on startup
|
||||
* @{
|
||||
|
@ -174,6 +174,18 @@
|
||||
#define I2C_SDA_PIN 4
|
||||
/** @} */
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/**
|
||||
* \name CC2538 TSCH configuration
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
#define RADIO_PHY_OVERHEAD CC2538_PHY_OVERHEAD
|
||||
#define RADIO_BYTE_AIR_TIME CC2538_BYTE_AIR_TIME
|
||||
#define RADIO_DELAY_BEFORE_TX CC2538_DELAY_BEFORE_TX
|
||||
#define RADIO_DELAY_BEFORE_RX CC2538_DELAY_BEFORE_RX
|
||||
#define RADIO_DELAY_BEFORE_DETECT CC2538_DELAY_BEFORE_DETECT
|
||||
/** @} */
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/**
|
||||
* \name Device string used on startup
|
||||
* @{
|
||||
|
19
os/dev/spi.h
19
os/dev/spi.h
@ -323,25 +323,6 @@ spi_status_t spi_arch_transfer(const spi_device_t *dev,
|
||||
uint8_t *buf, int rlen,
|
||||
int ignore_len);
|
||||
|
||||
/**
|
||||
* \brief Selects an SPI device
|
||||
* \param dev An SPI device configuration that specifies the CS pin.
|
||||
* \return SPI return code
|
||||
*
|
||||
* Clears the CS pin. It should work only if the device has already
|
||||
* locked the SPI controller.
|
||||
*/
|
||||
spi_status_t spi_arch_select(const spi_device_t *dev);
|
||||
|
||||
/**
|
||||
* \brief Deselects an SPI device
|
||||
* \param dev An SPI device configuration that specifies the CS pin.
|
||||
* \return SPI return code
|
||||
*
|
||||
* Set the CS pin. Locking the SPI controller is not needed.
|
||||
*/
|
||||
spi_status_t spi_arch_deselect(const spi_device_t *dev);
|
||||
|
||||
#endif /* SPI_H_ */
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/**
|
||||
|
@ -872,6 +872,7 @@ parse_publish_vhdr(struct mqtt_connection *conn,
|
||||
|
||||
/* Read out topic length */
|
||||
if(conn->in_packet.topic_len_received == 0) {
|
||||
conn->in_packet.topic_pos = 0;
|
||||
conn->in_packet.topic_len = (input_data_ptr[(*pos)++] << 8);
|
||||
conn->in_packet.byte_counter++;
|
||||
if(*pos >= input_data_len) {
|
||||
@ -880,7 +881,11 @@ parse_publish_vhdr(struct mqtt_connection *conn,
|
||||
conn->in_packet.topic_len |= input_data_ptr[(*pos)++];
|
||||
conn->in_packet.byte_counter++;
|
||||
conn->in_packet.topic_len_received = 1;
|
||||
|
||||
/* Abort if topic is longer than our topic buffer */
|
||||
if(conn->in_packet.topic_len > MQTT_MAX_TOPIC_LENGTH) {
|
||||
DBG("MQTT - topic too long %u/%u\n", conn->in_packet.topic_len, MQTT_MAX_TOPIC_LENGTH);
|
||||
return;
|
||||
}
|
||||
DBG("MQTT - Read PUBLISH topic len %i\n", conn->in_packet.topic_len);
|
||||
/* WARNING: Check here if TOPIC fits in payload area, otherwise error */
|
||||
}
|
||||
|
@ -158,7 +158,7 @@ extern uint8_t tsch_current_channel;
|
||||
extern uint8_t tsch_hopping_sequence[TSCH_HOPPING_SEQUENCE_MAX_LEN];
|
||||
extern struct tsch_asn_divisor_t tsch_hopping_sequence_length;
|
||||
/* TSCH timeslot timing (in micro-second) */
|
||||
uint16_t tsch_timing_us[tsch_ts_elements_count];
|
||||
extern uint16_t tsch_timing_us[tsch_ts_elements_count];
|
||||
/* TSCH timeslot timing (in rtimer ticks) */
|
||||
extern rtimer_clock_t tsch_timing[tsch_ts_elements_count];
|
||||
/* Statistics on the current session */
|
||||
|
@ -24,6 +24,8 @@ rpl-border-router/sky \
|
||||
slip-radio/sky \
|
||||
libs/ipv6-hooks/sky \
|
||||
nullnet/native \
|
||||
nullnet/sky \
|
||||
nullnet/sky:MAKE_MAC=MAKE_MAC_TSCH \
|
||||
mqtt-client/native \
|
||||
coap/coap-example-client/native \
|
||||
coap/coap-example-server/native \
|
||||
|
@ -89,6 +89,8 @@ platform-specific/cc2538-common/pka/cc2538dk \
|
||||
hello-world/cc2538dk \
|
||||
rpl-border-router/cc2538dk \
|
||||
rpl-border-router/cc2538dk:MAKE_ROUTING=MAKE_ROUTING_RPL_CLASSIC \
|
||||
6tisch/simple-node/cc2538dk \
|
||||
6tisch/simple-node/cc2538dk:MAKE_WITH_SECURITY=1,MAKE_WITH_ORCHESTRA=1 \
|
||||
hello-world/nrf52dk \
|
||||
platform-specific/nrf52dk/coap-demo/coap-server/nrf52dk \
|
||||
platform-specific/nrf52dk/coap-demo/coap-client/nrf52dk:SERVER_IPV6_EP=ffff \
|
||||
|
@ -28,6 +28,7 @@ storage/antelope-shell/zoul \
|
||||
6tisch/simple-node/zoul:MAKE_WITH_ORCHESTRA=1 \
|
||||
6tisch/simple-node/zoul:MAKE_WITH_SECURITY=1 \
|
||||
libs/logging/zoul \
|
||||
libs/logging/zoul:MAKE_MAC=MAKE_MAC_TSCH \
|
||||
6tisch/etsi-plugtest-2017/zoul:BOARD=remote \
|
||||
6tisch/6p-packet/zoul \
|
||||
6tisch/sixtop/zoul \
|
||||
@ -68,6 +69,8 @@ libs/ipv6-hooks/openmote-cc2538 \
|
||||
libs/shell/openmote-cc2538 \
|
||||
libs/simple-energest/openmote-cc2538 \
|
||||
libs/deployment/openmote-cc2538 \
|
||||
6tisch/simple-node/openmote-cc2538 \
|
||||
6tisch/simple-node/openmote-cc2538:MAKE_WITH_SECURITY=1,MAKE_WITH_ORCHESTRA=1 \
|
||||
|
||||
TOOLS=
|
||||
|
||||
|
@ -40,17 +40,21 @@
|
||||
# To invoke the building for a specific platform, run:
|
||||
# $ PLATFORMS=zoul ./build.sh
|
||||
#
|
||||
CONTIKI_NG_TOP_DIR="../.."
|
||||
EXAMPLES_DIR=$CONTIKI_NG_TOP_DIR/examples
|
||||
|
||||
if [[ "$PLATFORMS" == "" ]]
|
||||
then
|
||||
PLATFORMS=`ls ../../arch/platform`
|
||||
PLATFORMS=`ls $CONTIKI_NG_TOP_DIR/arch/platform`
|
||||
fi
|
||||
|
||||
if [[ "$MAKEFILES" == "" ]]
|
||||
then
|
||||
MAKEFILES=`find ../../examples/ -name Makefile`
|
||||
MAKEFILES=`find $EXAMPLES_DIR -name Makefile`
|
||||
fi
|
||||
|
||||
HELLO_WORLD=$EXAMPLES_DIR/hello-world
|
||||
|
||||
# Set the make goal the first argument of the script or to "all" if called w/o arguments
|
||||
if [[ $# -gt 0 ]]
|
||||
then
|
||||
@ -97,22 +101,14 @@ do
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ "$platform" == "srf06-cc26xx" ]]
|
||||
# Detect all boards for the current platform by calling
|
||||
# make TARGET=$platform boards
|
||||
# in the hello-world dir.
|
||||
BOARDS=`make -s -C $HELLO_WORLD TARGET=$platform boards \
|
||||
| grep -v "no boards" | rev | cut -f3- -d" " | rev`
|
||||
|
||||
if [[ -z $BOARDS ]]
|
||||
then
|
||||
# srf06-cc26xx has multiple boards
|
||||
BOARDS="srf06/cc26xx srf06/cc13xx launchpad/cc2650 launchpad/cc1310 launchpad/cc1350 sensortag/cc2650 sensortag/cc1350"
|
||||
elif [[ "$platform" == "simplelink" ]]
|
||||
then
|
||||
# SimpleLink has multiple boards
|
||||
BOARDS="launchpad/cc1310 launchpad/cc1350 launchpad/cc1350-4 launchpad/cc2650 \
|
||||
sensortag/cc1350 sensortag/cc2650 srf06/cc13x0 srf06/cc26x0 \
|
||||
launchpad/cc1312r1 launchpad/cc1352r1 launchpad/cc1352p1 launchpad/cc1352p-2 launchpad/cc1352p-4 launchpad/cc26x2r1"
|
||||
elif [[ "$platform" == "zoul" ]]
|
||||
then
|
||||
# Zoul has multiple boards
|
||||
BOARDS="remote-reva remote-revb firefly-reva firefly orion"
|
||||
else
|
||||
# Other platforms have just a single board
|
||||
BOARDS="default"
|
||||
fi
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user