Compare commits
40 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a7b170fff | ||
|
|
0a851ba3ac | ||
|
|
ada0f2fb94 | ||
|
|
dc22fd241f | ||
|
|
357deb6a58 | ||
|
|
18fa0f626d | ||
|
|
8e8c57eead | ||
|
|
38c1f7abb7 | ||
| 94caa83e30 | |||
|
|
5d76f8f4f8 | ||
|
|
acf1f3940b | ||
|
|
e6e27ac7bb | ||
|
|
668e93b6a3 | ||
|
|
f94c67ef72 | ||
|
|
d8b420a144 | ||
|
|
8908aad44c | ||
|
|
0bd1c9e95f | ||
|
|
1da39f9bff | ||
|
|
c07b6b1a82 | ||
|
|
7e7483b0ed | ||
|
|
5d9851660f | ||
|
|
67a514750c | ||
|
|
cdb128e620 | ||
|
|
67249d4e40 | ||
|
|
317d4423f3 | ||
|
|
92f679b8a9 | ||
| dfebaa31ab | |||
| fe467db893 | |||
| f7d2040b3e | |||
| a353dbc3a0 | |||
|
|
a8c9e15c3a | ||
|
|
cd51846063 | ||
|
|
1a9f480c96 | ||
|
|
75eee06ea6 | ||
|
|
98211c291f | ||
|
|
6b833f1791 | ||
|
|
b99b49597c | ||
|
|
cfd76b7793 | ||
|
|
1874e63581 | ||
|
|
e6353f8e29 |
20
.github/workflows/release-test.yml
vendored
20
.github/workflows/release-test.yml
vendored
@ -139,16 +139,16 @@ jobs:
|
||||
GITHUB_REPOSITORY=${GITHUB_REPOSITORY} \
|
||||
GITHUB_RUN_ID=${GITHUB_RUN_ID} \
|
||||
GITHUB_SERVER_URL=${GITHUB_SERVER_URL} \
|
||||
APPKEY="${{ secrets.CI_TTN_APPKEY }}" \
|
||||
NWKSKEY="${{ secrets.CI_TTN_NWKSKEY_ABP }}" \
|
||||
APPSKEY="${{ secrets.CI_TTN_APPSKEY_ABP }}" \
|
||||
LORAWAN_DL_KEY="${{ secrets.CI_TTN_APPID_KEY }}" \
|
||||
DEVEUI="009E40529364FBE6" \
|
||||
APPEUI="70B3D57ED003B26A" \
|
||||
DEVADDR="26011EB0" \
|
||||
TTN_APP_ID="11-lorawan" \
|
||||
TTN_DEV_ID="riot_lorawan_1" \
|
||||
TTN_DEV_ID_ABP="riot_lorawan_1_abp" \
|
||||
APPKEY="${{ secrets.CI_TTN_APPKEY }}" \
|
||||
NWKSKEY="${{ secrets.CI_TTN_NWKSKEY_ABP }}" \
|
||||
APPSKEY="${{ secrets.CI_TTN_APPSKEY_ABP }}" \
|
||||
DEVEUI="70B3D57ED00463E7" \
|
||||
APPEUI="0000000000000000" \
|
||||
DEVADDR="260B41C7" \
|
||||
TTN_DL_KEY="${{ secrets.CI_TTN_DL_KEY }}" \
|
||||
TTN_APP_ID="release-tests" \
|
||||
TTN_DEV_ID="eui-70b3d57ed00463e7-otaa" \
|
||||
TTN_DEV_ID_ABP="eui-70b3d57ed0046d5d-abp" \
|
||||
RIOTBASE=${RIOTBASE} \
|
||||
$(which tox) -e test -- ${TOX_ARGS} \
|
||||
${K} "${{ github.event.inputs.filter }}" -m "${{ matrix.pytest_mark }}"
|
||||
|
||||
6
.murdock
6
.murdock
@ -70,7 +70,11 @@ NIGHTLY=${NIGHTLY:-0}
|
||||
RUN_TESTS=${RUN_TESTS:-${NIGHTLY}}
|
||||
|
||||
DWQ_ENV="-E BOARDS -E APPS -E NIGHTLY -E RUN_TESTS -E ENABLE_TEST_CACHE
|
||||
-E TEST_HASH -E CI_PULL_LABELS"
|
||||
-E TEST_HASH -E CI_PULL_LABELS -EPKG_USE_MIRROR"
|
||||
|
||||
if [ ${NIGHTLY} -eq 1 ]; then
|
||||
export PKG_USE_MIRROR=0
|
||||
fi
|
||||
|
||||
get_supported_kconfig_board_app() {
|
||||
local board=$1
|
||||
|
||||
@ -18,7 +18,7 @@ _MOD := $(shell basename $(CURDIR))
|
||||
MODULE ?= $(_MOD)
|
||||
|
||||
.PHONY: all clean $(DIRS:%=ALL--%) $(DIRS:%=CLEAN--%) $(MODULE).module \
|
||||
compile-commands $(DIRS:%=COMPILE-COMMANDS--%)
|
||||
compile-commands $(DIRS:%=COMPILE-COMMANDS--%) $(MODULE).cleanup
|
||||
|
||||
all: $(MODULE).module ..nothing
|
||||
|
||||
@ -113,9 +113,20 @@ include $(RIOTMAKE)/tools/fixdep.inc.mk
|
||||
$(BINDIR)/$(MODULE)/:
|
||||
$(Q)mkdir -p $@
|
||||
|
||||
OLD_OBJECTS = $(wildcard $(BINDIR)/$(MODULE)/*.o)
|
||||
|
||||
# do not clean objects from bindist modules
|
||||
ifeq (,$(filter $(MODULE),$(BIN_USEMODULE)))
|
||||
OBJECTS_TO_REMOVE = $(filter-out $(OBJ),$(OLD_OBJECTS))
|
||||
endif
|
||||
|
||||
$(MODULE).module compile-commands $(OBJ): | $(BINDIR)/$(MODULE)/
|
||||
|
||||
$(MODULE).module: $(OBJ) | $(DIRS:%=ALL--%)
|
||||
$(MODULE).module: $(OBJ) $(if $(OBJECTS_TO_REMOVE),$(MODULE).cleanup) | $(DIRS:%=ALL--%)
|
||||
|
||||
$(MODULE).cleanup:
|
||||
$(Q)# cleanup non selected source files objects
|
||||
$(Q)$(RM) $(OBJECTS_TO_REMOVE)
|
||||
|
||||
CXXFLAGS = $(filter-out $(CXXUWFLAGS), $(CFLAGS)) $(CXXEXFLAGS)
|
||||
CCASFLAGS = $(filter-out $(CCASUWFLAGS), $(CFLAGS)) $(CCASEXFLAGS)
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
RAM_LEN = 8K
|
||||
ROM_LEN = 128K
|
||||
|
||||
LINKER_SCRIPT ?= avr51.ld
|
||||
|
||||
# CPU depends on the atmega common module, so include it
|
||||
include $(RIOTCPU)/atmega_common/Makefile.include
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
RAM_LEN = 16K
|
||||
ROM_LEN = 128K
|
||||
|
||||
LINKER_SCRIPT ?= avr51.ld
|
||||
|
||||
# CPU depends on the atmega common module, so include it
|
||||
include $(RIOTCPU)/atmega_common/Makefile.include
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
RAM_LEN = 16K
|
||||
ROM_LEN = 128K
|
||||
|
||||
LINKER_SCRIPT ?= avr51.ld
|
||||
|
||||
# CPU depends on the atmega common module, so include it
|
||||
include $(RIOTCPU)/atmega_common/Makefile.include
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
RAM_LEN = 8K
|
||||
ROM_LEN = 256K
|
||||
|
||||
LINKER_SCRIPT ?= avr6.ld
|
||||
|
||||
# CPU depends on the atmega common module, so include it
|
||||
include $(RIOTCPU)/atmega_common/Makefile.include
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
RAM_LEN = 32K
|
||||
ROM_LEN = 256K
|
||||
|
||||
LINKER_SCRIPT ?= avr6.ld
|
||||
|
||||
# CPU depends on the atmega common module, so include it
|
||||
include $(RIOTCPU)/atmega_common/Makefile.include
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
RAM_LEN = 2K
|
||||
ROM_LEN = 32K
|
||||
|
||||
LINKER_SCRIPT ?= avr51.ld
|
||||
|
||||
# CPU depends on the atmega common module, so include it
|
||||
include $(RIOTCPU)/atmega_common/Makefile.include
|
||||
|
||||
@ -4,5 +4,7 @@ export ATMEGA_COMMON = $(RIOTCPU)/atmega_common/
|
||||
RAM_LEN = 2560
|
||||
ROM_LEN = 32K
|
||||
|
||||
LINKER_SCRIPT ?= avr51.ld
|
||||
|
||||
# CPU depends on the atmega common module, so include it
|
||||
include $(ATMEGA_COMMON)Makefile.include
|
||||
|
||||
@ -26,8 +26,6 @@
|
||||
* @}
|
||||
*/
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
#include "board.h"
|
||||
#include "cpu.h"
|
||||
#include "panic.h"
|
||||
@ -100,8 +98,7 @@ ISR(BADISR_vect)
|
||||
LED_PANIC;
|
||||
#endif
|
||||
|
||||
core_panic(PANIC_GENERAL_ERROR, PSTR("FATAL ERROR: BADISR_vect called, unprocessed Interrupt.\n"
|
||||
"STOP Execution.\n"));
|
||||
core_panic(PANIC_GENERAL_ERROR, "BADISR");
|
||||
}
|
||||
|
||||
#if defined(CPU_ATMEGA128RFA1) || defined (CPU_ATMEGA256RFR2)
|
||||
|
||||
@ -44,6 +44,12 @@ ifneq (,$(findstring a1,$(shell echo $(CPU_MODEL) | cut -c8-)))
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq (,$(filter atxmega128a1 atxmega128a1u atxmega128a4u,$(CPU_MODEL)))
|
||||
LINKER_SCRIPT ?= avrxmega7.ld
|
||||
else
|
||||
LINKER_SCRIPT ?= avrxmega6.ld
|
||||
endif
|
||||
|
||||
# CPU depends on the avr8 common module, so include it
|
||||
include $(RIOTCPU)/avr8_common/Makefile.include
|
||||
|
||||
|
||||
@ -18,8 +18,6 @@
|
||||
* @}
|
||||
*/
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
#include "cpu.h"
|
||||
#include "cpu_clock.h"
|
||||
#include "cpu_pm.h"
|
||||
@ -121,7 +119,5 @@ ISR(BADISR_vect)
|
||||
LED_PANIC;
|
||||
#endif
|
||||
|
||||
core_panic(PANIC_GENERAL_ERROR,
|
||||
PSTR("FATAL ERROR: BADISR_vect called, unprocessed Interrupt.\n"
|
||||
"STOP Execution.\n"));
|
||||
core_panic(PANIC_GENERAL_ERROR, "BADISR");
|
||||
}
|
||||
|
||||
27
cpu/avr8_common/ldscripts/avr51.ld
Normal file
27
cpu/avr8_common/ldscripts/avr51.ld
Normal file
@ -0,0 +1,27 @@
|
||||
/* Copyright (C) 2014-2021 Free Software Foundation, Inc.
|
||||
Copying and distribution of this script, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. */
|
||||
OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr")
|
||||
OUTPUT_ARCH(avr:51)
|
||||
|
||||
__TEXT_REGION_LENGTH__ = DEFINED(__TEXT_REGION_LENGTH__) ? __TEXT_REGION_LENGTH__ : 128K;
|
||||
__DATA_REGION_LENGTH__ = DEFINED(__DATA_REGION_LENGTH__) ? __DATA_REGION_LENGTH__ : 0xff00;
|
||||
__EEPROM_REGION_LENGTH__ = DEFINED(__EEPROM_REGION_LENGTH__) ? __EEPROM_REGION_LENGTH__ : 64K;
|
||||
__FUSE_REGION_LENGTH__ = DEFINED(__FUSE_REGION_LENGTH__) ? __FUSE_REGION_LENGTH__ : 1K;
|
||||
__LOCK_REGION_LENGTH__ = DEFINED(__LOCK_REGION_LENGTH__) ? __LOCK_REGION_LENGTH__ : 1K;
|
||||
__SIGNATURE_REGION_LENGTH__ = DEFINED(__SIGNATURE_REGION_LENGTH__) ? __SIGNATURE_REGION_LENGTH__ : 1K;
|
||||
__USER_SIGNATURE_REGION_LENGTH__ = DEFINED(__USER_SIGNATURE_REGION_LENGTH__) ? __USER_SIGNATURE_REGION_LENGTH__ : 1K;
|
||||
|
||||
MEMORY
|
||||
{
|
||||
text (rx) : ORIGIN = 0, LENGTH = __TEXT_REGION_LENGTH__
|
||||
data (rw!x) : ORIGIN = 0x800100, LENGTH = __DATA_REGION_LENGTH__
|
||||
eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = __EEPROM_REGION_LENGTH__
|
||||
fuse (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__
|
||||
lock (rw!x) : ORIGIN = 0x830000, LENGTH = __LOCK_REGION_LENGTH__
|
||||
signature (rw!x) : ORIGIN = 0x840000, LENGTH = __SIGNATURE_REGION_LENGTH__
|
||||
user_signatures (rw!x) : ORIGIN = 0x850000, LENGTH = __USER_SIGNATURE_REGION_LENGTH__
|
||||
}
|
||||
|
||||
INCLUDE avr_common.ld
|
||||
27
cpu/avr8_common/ldscripts/avr6.ld
Normal file
27
cpu/avr8_common/ldscripts/avr6.ld
Normal file
@ -0,0 +1,27 @@
|
||||
/* Copyright (C) 2014-2021 Free Software Foundation, Inc.
|
||||
Copying and distribution of this script, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. */
|
||||
OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr")
|
||||
OUTPUT_ARCH(avr:6)
|
||||
|
||||
__TEXT_REGION_LENGTH__ = DEFINED(__TEXT_REGION_LENGTH__) ? __TEXT_REGION_LENGTH__ : 1024K;
|
||||
__DATA_REGION_LENGTH__ = DEFINED(__DATA_REGION_LENGTH__) ? __DATA_REGION_LENGTH__ : 0xfe00;
|
||||
__EEPROM_REGION_LENGTH__ = DEFINED(__EEPROM_REGION_LENGTH__) ? __EEPROM_REGION_LENGTH__ : 64K;
|
||||
__FUSE_REGION_LENGTH__ = DEFINED(__FUSE_REGION_LENGTH__) ? __FUSE_REGION_LENGTH__ : 1K;
|
||||
__LOCK_REGION_LENGTH__ = DEFINED(__LOCK_REGION_LENGTH__) ? __LOCK_REGION_LENGTH__ : 1K;
|
||||
__SIGNATURE_REGION_LENGTH__ = DEFINED(__SIGNATURE_REGION_LENGTH__) ? __SIGNATURE_REGION_LENGTH__ : 1K;
|
||||
__USER_SIGNATURE_REGION_LENGTH__ = DEFINED(__USER_SIGNATURE_REGION_LENGTH__) ? __USER_SIGNATURE_REGION_LENGTH__ : 1K;
|
||||
|
||||
MEMORY
|
||||
{
|
||||
text (rx) : ORIGIN = 0, LENGTH = __TEXT_REGION_LENGTH__
|
||||
data (rw!x) : ORIGIN = 0x800200, LENGTH = __DATA_REGION_LENGTH__
|
||||
eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = __EEPROM_REGION_LENGTH__
|
||||
fuse (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__
|
||||
lock (rw!x) : ORIGIN = 0x830000, LENGTH = __LOCK_REGION_LENGTH__
|
||||
signature (rw!x) : ORIGIN = 0x840000, LENGTH = __SIGNATURE_REGION_LENGTH__
|
||||
user_signatures (rw!x) : ORIGIN = 0x850000, LENGTH = __USER_SIGNATURE_REGION_LENGTH__
|
||||
}
|
||||
|
||||
INCLUDE avr_common.ld
|
||||
255
cpu/avr8_common/ldscripts/avr_common.ld
Normal file
255
cpu/avr8_common/ldscripts/avr_common.ld
Normal file
@ -0,0 +1,255 @@
|
||||
/* Copyright (C) 2014-2021 Free Software Foundation, Inc.
|
||||
Copying and distribution of this script, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. */
|
||||
SECTIONS
|
||||
{
|
||||
/* Read-only sections, merged into text segment: */
|
||||
.hash : { *(.hash) }
|
||||
.dynsym : { *(.dynsym) }
|
||||
.dynstr : { *(.dynstr) }
|
||||
.gnu.version : { *(.gnu.version) }
|
||||
.gnu.version_d : { *(.gnu.version_d) }
|
||||
.gnu.version_r : { *(.gnu.version_r) }
|
||||
.rel.init : { *(.rel.init) }
|
||||
.rela.init : { *(.rela.init) }
|
||||
.rel.text :
|
||||
{
|
||||
*(.rel.text)
|
||||
*(.rel.text.*)
|
||||
*(.rel.gnu.linkonce.t*)
|
||||
}
|
||||
.rela.text :
|
||||
{
|
||||
*(.rela.text)
|
||||
*(.rela.text.*)
|
||||
*(.rela.gnu.linkonce.t*)
|
||||
}
|
||||
.rel.fini : { *(.rel.fini) }
|
||||
.rela.fini : { *(.rela.fini) }
|
||||
.rel.rodata :
|
||||
{
|
||||
*(.rel.rodata)
|
||||
*(.rel.rodata.*)
|
||||
*(.rel.gnu.linkonce.r*)
|
||||
}
|
||||
.rela.rodata :
|
||||
{
|
||||
*(.rela.rodata)
|
||||
*(.rela.rodata.*)
|
||||
*(.rela.gnu.linkonce.r*)
|
||||
}
|
||||
.rel.data :
|
||||
{
|
||||
*(.rel.data)
|
||||
*(.rel.data.*)
|
||||
*(.rel.gnu.linkonce.d*)
|
||||
}
|
||||
.rela.data :
|
||||
{
|
||||
*(.rela.data)
|
||||
*(.rela.data.*)
|
||||
*(.rela.gnu.linkonce.d*)
|
||||
}
|
||||
.rel.ctors : { *(.rel.ctors) }
|
||||
.rela.ctors : { *(.rela.ctors) }
|
||||
.rel.dtors : { *(.rel.dtors) }
|
||||
.rela.dtors : { *(.rela.dtors) }
|
||||
.rel.got : { *(.rel.got) }
|
||||
.rela.got : { *(.rela.got) }
|
||||
.rel.bss : { *(.rel.bss) }
|
||||
.rela.bss : { *(.rela.bss) }
|
||||
.rel.plt : { *(.rel.plt) }
|
||||
.rela.plt : { *(.rela.plt) }
|
||||
/* Internal text space or external memory. */
|
||||
.text :
|
||||
{
|
||||
*(.vectors)
|
||||
KEEP(*(.vectors))
|
||||
/* For data that needs to reside in the lower 64k of progmem. */
|
||||
*(.progmem.gcc*)
|
||||
/* PR 13812: Placing the trampolines here gives a better chance
|
||||
that they will be in range of the code that uses them. */
|
||||
. = ALIGN(2);
|
||||
__trampolines_start = . ;
|
||||
/* The jump trampolines for the 16-bit limited relocs will reside here. */
|
||||
*(.trampolines)
|
||||
*(.trampolines*)
|
||||
__trampolines_end = . ;
|
||||
/* avr-libc expects these data to reside in lower 64K. */
|
||||
*libprintf_flt.a:*(.progmem.data)
|
||||
*libc.a:*(.progmem.data)
|
||||
*(.progmem.*)
|
||||
. = ALIGN(2);
|
||||
/* For code that needs to reside in the lower 128k progmem. */
|
||||
*(.lowtext)
|
||||
*(.lowtext*)
|
||||
__ctors_start = . ;
|
||||
*(.ctors)
|
||||
__ctors_end = . ;
|
||||
__dtors_start = . ;
|
||||
*(.dtors)
|
||||
__dtors_end = . ;
|
||||
KEEP(SORT(*)(.ctors))
|
||||
KEEP(SORT(*)(.dtors))
|
||||
/* From this point on, we do not bother about whether the insns are
|
||||
below or above the 16 bits boundary. */
|
||||
*(.init0) /* Start here after reset. */
|
||||
KEEP (*(.init0))
|
||||
*(.init1)
|
||||
KEEP (*(.init1))
|
||||
*(.init2) /* Clear __zero_reg__, set up stack pointer. */
|
||||
KEEP (*(.init2))
|
||||
*(.init3)
|
||||
KEEP (*(.init3))
|
||||
*(.init4) /* Initialize data and BSS. */
|
||||
KEEP (*(.init4))
|
||||
*(.init5)
|
||||
KEEP (*(.init5))
|
||||
*(.init6) /* C++ constructors. */
|
||||
KEEP (*(.init6))
|
||||
*(.init7)
|
||||
KEEP (*(.init7))
|
||||
*(.init8)
|
||||
KEEP (*(.init8))
|
||||
*(.init9) /* Call main(). */
|
||||
KEEP (*(.init9))
|
||||
*(.text)
|
||||
. = ALIGN(2);
|
||||
*(.text.*)
|
||||
. = ALIGN(2);
|
||||
*(.fini9) /* _exit() starts here. */
|
||||
KEEP (*(.fini9))
|
||||
*(.fini8)
|
||||
KEEP (*(.fini8))
|
||||
*(.fini7)
|
||||
KEEP (*(.fini7))
|
||||
*(.fini6) /* C++ destructors. */
|
||||
KEEP (*(.fini6))
|
||||
*(.fini5)
|
||||
KEEP (*(.fini5))
|
||||
*(.fini4)
|
||||
KEEP (*(.fini4))
|
||||
*(.fini3)
|
||||
KEEP (*(.fini3))
|
||||
*(.fini2)
|
||||
KEEP (*(.fini2))
|
||||
*(.fini1)
|
||||
KEEP (*(.fini1))
|
||||
*(.fini0) /* Infinite loop after program termination. */
|
||||
KEEP (*(.fini0))
|
||||
/* For code that needs not to reside in the lower progmem. */
|
||||
*(.hightext)
|
||||
*(.hightext*)
|
||||
*(.progmemx.*)
|
||||
. = ALIGN(2);
|
||||
/* For tablejump instruction arrays. We do not relax
|
||||
JMP / CALL instructions within these sections. */
|
||||
*(.jumptables)
|
||||
*(.jumptables*)
|
||||
_etext = . ;
|
||||
} > text
|
||||
.data :
|
||||
{
|
||||
PROVIDE (__data_start = .) ;
|
||||
*(.data)
|
||||
*(.data*)
|
||||
/* Changes for XFA */
|
||||
KEEP (*(SORT(.roxfa.*)))
|
||||
KEEP (*(SORT(.xfa.*)))
|
||||
/* End of Changes for XFA*/
|
||||
*(.gnu.linkonce.d*)
|
||||
*(.rodata) /* We need to include .rodata here if gcc is used */
|
||||
*(.rodata*) /* with -fdata-sections. */
|
||||
*(.gnu.linkonce.r*)
|
||||
. = ALIGN(2);
|
||||
_edata = . ;
|
||||
PROVIDE (__data_end = .) ;
|
||||
} > data AT> text
|
||||
.bss ADDR(.data) + SIZEOF (.data) : AT (ADDR (.bss))
|
||||
{
|
||||
PROVIDE (__bss_start = .) ;
|
||||
*(.bss)
|
||||
*(.bss*)
|
||||
*(COMMON)
|
||||
PROVIDE (__bss_end = .) ;
|
||||
} > data
|
||||
__data_load_start = LOADADDR(.data);
|
||||
__data_load_end = __data_load_start + SIZEOF(.data);
|
||||
/* Global data not cleared after reset. */
|
||||
.noinit ADDR(.bss) + SIZEOF (.bss) : AT (ADDR (.noinit))
|
||||
{
|
||||
PROVIDE (__noinit_start = .) ;
|
||||
*(.noinit .noinit.* .gnu.linkonce.n.*)
|
||||
PROVIDE (__noinit_end = .) ;
|
||||
_end = . ;
|
||||
PROVIDE (__heap_start = .) ;
|
||||
} > data
|
||||
.eeprom :
|
||||
{
|
||||
/* See .data above... */
|
||||
KEEP(*(.eeprom*))
|
||||
__eeprom_end = . ;
|
||||
} > eeprom
|
||||
.fuse :
|
||||
{
|
||||
KEEP(*(.fuse))
|
||||
KEEP(*(.lfuse))
|
||||
KEEP(*(.hfuse))
|
||||
KEEP(*(.efuse))
|
||||
} > fuse
|
||||
.lock :
|
||||
{
|
||||
KEEP(*(.lock*))
|
||||
} > lock
|
||||
.signature :
|
||||
{
|
||||
KEEP(*(.signature*))
|
||||
} > signature
|
||||
/* Stabs debugging sections. */
|
||||
.stab 0 : { *(.stab) }
|
||||
.stabstr 0 : { *(.stabstr) }
|
||||
.stab.excl 0 : { *(.stab.excl) }
|
||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
||||
.stab.index 0 : { *(.stab.index) }
|
||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
||||
.comment 0 : { *(.comment) }
|
||||
.note.gnu.build-id : { *(.note.gnu.build-id) }
|
||||
/* DWARF debug sections.
|
||||
Symbols in the DWARF debugging sections are relative to the beginning
|
||||
of the section so we begin them at 0. */
|
||||
/* DWARF 1. */
|
||||
.debug 0 : { *(.debug) }
|
||||
.line 0 : { *(.line) }
|
||||
/* GNU DWARF 1 extensions. */
|
||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
||||
/* DWARF 1.1 and DWARF 2. */
|
||||
.debug_aranges 0 : { *(.debug_aranges) }
|
||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
||||
/* DWARF 2. */
|
||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
||||
.debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) }
|
||||
.debug_frame 0 : { *(.debug_frame) }
|
||||
.debug_str 0 : { *(.debug_str) }
|
||||
.debug_loc 0 : { *(.debug_loc) }
|
||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
||||
/* SGI/MIPS DWARF 2 extensions. */
|
||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
||||
.debug_typenames 0 : { *(.debug_typenames) }
|
||||
.debug_varnames 0 : { *(.debug_varnames) }
|
||||
/* DWARF 3. */
|
||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
||||
.debug_ranges 0 : { *(.debug_ranges) }
|
||||
/* DWARF 5. */
|
||||
.debug_addr 0 : { *(.debug_addr) }
|
||||
.debug_line_str 0 : { *(.debug_line_str) }
|
||||
.debug_loclists 0 : { *(.debug_loclists) }
|
||||
.debug_macro 0 : { *(.debug_macro) }
|
||||
.debug_names 0 : { *(.debug_names) }
|
||||
.debug_rnglists 0 : { *(.debug_rnglists) }
|
||||
.debug_str_offsets 0 : { *(.debug_str_offsets) }
|
||||
.debug_sup 0 : { *(.debug_sup) }
|
||||
}
|
||||
27
cpu/avr8_common/ldscripts/avrxmega6.ld
Normal file
27
cpu/avr8_common/ldscripts/avrxmega6.ld
Normal file
@ -0,0 +1,27 @@
|
||||
/* Copyright (C) 2014-2021 Free Software Foundation, Inc.
|
||||
Copying and distribution of this script, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. */
|
||||
OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr")
|
||||
OUTPUT_ARCH(avr:106)
|
||||
|
||||
__TEXT_REGION_LENGTH__ = DEFINED(__TEXT_REGION_LENGTH__) ? __TEXT_REGION_LENGTH__ : 1024K;
|
||||
__DATA_REGION_LENGTH__ = DEFINED(__DATA_REGION_LENGTH__) ? __DATA_REGION_LENGTH__ : 0xffa0;
|
||||
__EEPROM_REGION_LENGTH__ = DEFINED(__EEPROM_REGION_LENGTH__) ? __EEPROM_REGION_LENGTH__ : 64K;
|
||||
__FUSE_REGION_LENGTH__ = DEFINED(__FUSE_REGION_LENGTH__) ? __FUSE_REGION_LENGTH__ : 1K;
|
||||
__LOCK_REGION_LENGTH__ = DEFINED(__LOCK_REGION_LENGTH__) ? __LOCK_REGION_LENGTH__ : 1K;
|
||||
__SIGNATURE_REGION_LENGTH__ = DEFINED(__SIGNATURE_REGION_LENGTH__) ? __SIGNATURE_REGION_LENGTH__ : 1K;
|
||||
__USER_SIGNATURE_REGION_LENGTH__ = DEFINED(__USER_SIGNATURE_REGION_LENGTH__) ? __USER_SIGNATURE_REGION_LENGTH__ : 1K;
|
||||
|
||||
MEMORY
|
||||
{
|
||||
text (rx) : ORIGIN = 0, LENGTH = __TEXT_REGION_LENGTH__
|
||||
data (rw!x) : ORIGIN = 0x802000, LENGTH = __DATA_REGION_LENGTH__
|
||||
eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = __EEPROM_REGION_LENGTH__
|
||||
fuse (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__
|
||||
lock (rw!x) : ORIGIN = 0x830000, LENGTH = __LOCK_REGION_LENGTH__
|
||||
signature (rw!x) : ORIGIN = 0x840000, LENGTH = __SIGNATURE_REGION_LENGTH__
|
||||
user_signatures (rw!x) : ORIGIN = 0x850000, LENGTH = __USER_SIGNATURE_REGION_LENGTH__
|
||||
}
|
||||
|
||||
INCLUDE avr_common.ld
|
||||
27
cpu/avr8_common/ldscripts/avrxmega7.ld
Normal file
27
cpu/avr8_common/ldscripts/avrxmega7.ld
Normal file
@ -0,0 +1,27 @@
|
||||
/* Copyright (C) 2014-2021 Free Software Foundation, Inc.
|
||||
Copying and distribution of this script, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. */
|
||||
OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr")
|
||||
OUTPUT_ARCH(avr:107)
|
||||
|
||||
__TEXT_REGION_LENGTH__ = DEFINED(__TEXT_REGION_LENGTH__) ? __TEXT_REGION_LENGTH__ : 1024K;
|
||||
__DATA_REGION_LENGTH__ = DEFINED(__DATA_REGION_LENGTH__) ? __DATA_REGION_LENGTH__ : 0xffa0;
|
||||
__EEPROM_REGION_LENGTH__ = DEFINED(__EEPROM_REGION_LENGTH__) ? __EEPROM_REGION_LENGTH__ : 64K;
|
||||
__FUSE_REGION_LENGTH__ = DEFINED(__FUSE_REGION_LENGTH__) ? __FUSE_REGION_LENGTH__ : 1K;
|
||||
__LOCK_REGION_LENGTH__ = DEFINED(__LOCK_REGION_LENGTH__) ? __LOCK_REGION_LENGTH__ : 1K;
|
||||
__SIGNATURE_REGION_LENGTH__ = DEFINED(__SIGNATURE_REGION_LENGTH__) ? __SIGNATURE_REGION_LENGTH__ : 1K;
|
||||
__USER_SIGNATURE_REGION_LENGTH__ = DEFINED(__USER_SIGNATURE_REGION_LENGTH__) ? __USER_SIGNATURE_REGION_LENGTH__ : 1K;
|
||||
|
||||
MEMORY
|
||||
{
|
||||
text (rx) : ORIGIN = 0, LENGTH = __TEXT_REGION_LENGTH__
|
||||
data (rw!x) : ORIGIN = 0x802000, LENGTH = __DATA_REGION_LENGTH__
|
||||
eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = __EEPROM_REGION_LENGTH__
|
||||
fuse (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__
|
||||
lock (rw!x) : ORIGIN = 0x830000, LENGTH = __LOCK_REGION_LENGTH__
|
||||
signature (rw!x) : ORIGIN = 0x840000, LENGTH = __SIGNATURE_REGION_LENGTH__
|
||||
user_signatures (rw!x) : ORIGIN = 0x850000, LENGTH = __USER_SIGNATURE_REGION_LENGTH__
|
||||
}
|
||||
|
||||
INCLUDE avr_common.ld
|
||||
@ -1,16 +0,0 @@
|
||||
SECTIONS
|
||||
{
|
||||
.data :
|
||||
{
|
||||
/* Special case for AVR (Harvard architecture) where .rodata is merged
|
||||
* into .data by the toolchain default ldscripts. */
|
||||
KEEP (*(SORT(.roxfa.*)))
|
||||
KEEP (*(SORT(.xfa.*)))
|
||||
}
|
||||
__data_start = ADDR(.data);
|
||||
__data_load_start = LOADADDR(.data);
|
||||
__data_end = (__data_start + SIZEOF(.data));
|
||||
__data_load_end = (__data_load_start + SIZEOF(.data));
|
||||
}
|
||||
|
||||
INSERT AFTER .text;
|
||||
@ -150,8 +150,8 @@ extern volatile int _native_sigpend;
|
||||
extern volatile int _native_in_isr;
|
||||
extern volatile int _native_in_syscall;
|
||||
|
||||
extern char __isr_stack[SIGSTKSZ];
|
||||
extern char __end_stack[SIGSTKSZ];
|
||||
extern char __isr_stack[];
|
||||
extern char __end_stack[];
|
||||
extern ucontext_t native_isr_context;
|
||||
extern ucontext_t end_context;
|
||||
extern ucontext_t *_native_cur_ctx, *_native_isr_ctx;
|
||||
|
||||
@ -170,7 +170,7 @@ void cpu_switch_context_exit(void)
|
||||
irq_disable();
|
||||
_native_in_isr = 1;
|
||||
native_isr_context.uc_stack.ss_sp = __isr_stack;
|
||||
native_isr_context.uc_stack.ss_size = sizeof(__isr_stack);
|
||||
native_isr_context.uc_stack.ss_size = SIGSTKSZ;
|
||||
native_isr_context.uc_stack.ss_flags = 0;
|
||||
makecontext(&native_isr_context, isr_cpu_switch_context_exit, 0);
|
||||
if (setcontext(&native_isr_context) == -1) {
|
||||
|
||||
@ -14,6 +14,7 @@ class MockSpawn():
|
||||
# set some expected attributes
|
||||
self.before = None
|
||||
self.echo = False
|
||||
self.expect_res = 0
|
||||
|
||||
@property
|
||||
def last_command(self):
|
||||
@ -42,6 +43,9 @@ class MockSpawn():
|
||||
# always match on prompt with replwrap
|
||||
return 0
|
||||
|
||||
def expect(self, *args, **kwargs):
|
||||
return self.expect_res
|
||||
|
||||
|
||||
class MockRIOTCtrl():
|
||||
"""
|
||||
|
||||
@ -151,6 +151,9 @@ void ieee802154_submac_ack_timer_cancel(ieee802154_submac_t *submac)
|
||||
submac);
|
||||
|
||||
xtimer_remove(&netdev_submac->ack_timer);
|
||||
/* Prevent a race condition between the RX_DONE event and the ACK timeout */
|
||||
netdev_submac->isr_flags &= ~NETDEV_SUBMAC_FLAGS_ACK_TIMEOUT;
|
||||
|
||||
}
|
||||
|
||||
static int _send(netdev_t *netdev, const iolist_t *pkt)
|
||||
|
||||
@ -11,6 +11,11 @@ DEVEUI ?= 0000000000000000
|
||||
APPEUI ?= 0000000000000000
|
||||
APPKEY ?= 00000000000000000000000000000000
|
||||
|
||||
# Pass these enviroment variables to docker
|
||||
DOCKER_ENV_VARS += DEVEUI
|
||||
DOCKER_ENV_VARS += APPEUI
|
||||
DOCKER_ENV_VARS += APPKEY
|
||||
|
||||
# Default radio driver is Semtech SX1276 (used by the B-L072Z-LRWAN1 board)
|
||||
DRIVER ?= sx1276
|
||||
|
||||
|
||||
@ -17,10 +17,9 @@ CFLAGS_OPT ?= -Os
|
||||
CFLAGS += $(CFLAGS_CPU) $(CFLAGS_LINK) $(CFLAGS_DBG) $(CFLAGS_OPT)
|
||||
ASFLAGS += $(CFLAGS_CPU) $(CFLAGS_DBG)
|
||||
|
||||
# needed for xfa support. Order is important.
|
||||
LINKFLAGS += -T$(RIOTCPU)/avr8_common/ldscripts/xfa.ld
|
||||
|
||||
LINKFLAGS += $(CFLAGS_CPU) $(CFLAGS_DBG) $(CFLAGS_OPT) -static -lgcc -e reset_handler -Wl,--gc-sections
|
||||
LINKFLAGS += -L$(RIOTCPU)/avr8_common/ldscripts
|
||||
LINKFLAGS += -T$(LINKER_SCRIPT)
|
||||
|
||||
# Use ROM_LEN and RAM_LEN during link
|
||||
$(if $(ROM_LEN),,$(error ROM_LEN is not defined))
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
export DOCKER_IMAGE ?= riot/riotbuild:latest
|
||||
export DOCKER_IMAGE ?= riot/riotbuild:2021.10
|
||||
export DOCKER_BUILD_ROOT ?= /data/riotbuild
|
||||
DOCKER_RIOTBASE ?= $(DOCKER_BUILD_ROOT)/riotbase
|
||||
# List of Docker-enabled make goals
|
||||
|
||||
@ -21,6 +21,7 @@ export CXXINCLUDES # The extra include paths for c++, set by the vario
|
||||
export NATIVEINCLUDES # The native include paths, set by the various native Makefile.include files.
|
||||
|
||||
export USEMODULE # Sys Module dependencies of the application. Set in the application's Makefile.
|
||||
export BIN_USEMODULE # Modules specific to bindist (see bindist.ink.mk). Set in the application's Makefile.
|
||||
export USEPKG # Pkg dependencies (third party modules) of the application. Set in the application's Makefile.
|
||||
export DISABLE_MODULE # Used in the application's Makefile to suppress DEFAULT_MODULEs.
|
||||
# APPDEPS # Files / Makefile targets that need to be created before the application can be build. Set in the application's Makefile.
|
||||
|
||||
@ -7,7 +7,7 @@ PKG_LICENSE=MIT
|
||||
|
||||
include $(RIOTBASE)/pkg/pkg.mk
|
||||
|
||||
CFLAGS += -DKRML_NOUINT128 -Wno-unused-parameter
|
||||
CFLAGS += -DKRML_NOUINT128 -Wno-unused-parameter -Wno-array-parameter
|
||||
|
||||
all:
|
||||
$(QQ)"$(MAKE)" -C $(PKG_SOURCE_DIR) -f $(RIOTBASE)/Makefile.base
|
||||
|
||||
@ -24,6 +24,12 @@ ifeq (,$(PKG_LICENSE))
|
||||
$(error PKG_LICENSE not defined)
|
||||
endif
|
||||
|
||||
ifneq (, $(PKG_MIRROR_URL))
|
||||
ifneq (0, $(PKG_USE_MIRROR))
|
||||
PKG_URL = $(PKG_MIRROR_URL)
|
||||
endif
|
||||
endif
|
||||
|
||||
PKG_DIR ?= $(CURDIR)
|
||||
PKG_PATCH_DIR ?= $(PKG_DIR)/patches
|
||||
|
||||
|
||||
@ -698,10 +698,11 @@ void *_semtech_loramac_event_loop(void *arg)
|
||||
MlmeIndication_t *indication = (MlmeIndication_t *)msg.content.ptr;
|
||||
if (indication->MlmeIndication == MLME_SCHEDULE_UPLINK) {
|
||||
DEBUG("[semtech-loramac] MLME indication: schedule an uplink\n");
|
||||
uint8_t prev_port = mac->port;
|
||||
mac->port = 0;
|
||||
_semtech_loramac_send(mac, NULL, 0);
|
||||
mac->port = prev_port;
|
||||
#ifdef MODULE_SEMTECH_LORAMAC_RX
|
||||
msg_t msg_ret;
|
||||
msg_ret.content.value = SEMTECH_LORAMAC_TX_SCHEDULE;
|
||||
msg_send(&msg_ret, mac->rx_pid);
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -787,18 +788,8 @@ void *_semtech_loramac_event_loop(void *arg)
|
||||
|
||||
/* Check Multicast
|
||||
Check Port
|
||||
Check Datarate
|
||||
Check FramePending */
|
||||
if (indication->FramePending) {
|
||||
/* The server signals that it has pending data to be sent.
|
||||
We schedule an uplink as soon as possible to flush the server. */
|
||||
DEBUG("[semtech-loramac] MCPS indication: pending data, schedule an "
|
||||
"uplink\n");
|
||||
uint8_t prev_port = mac->port;
|
||||
mac->port = 0;
|
||||
_semtech_loramac_send(mac, NULL, 0);
|
||||
mac->port = prev_port;
|
||||
}
|
||||
Check Datarate */
|
||||
|
||||
#ifdef MODULE_SEMTECH_LORAMAC_RX
|
||||
if (indication->RxData) {
|
||||
DEBUG("[semtech-loramac] MCPS indication: data received\n");
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
PKG_NAME=yxml
|
||||
PKG_URL=https://g.blicky.net/yxml.git
|
||||
PKG_MIRROR_URL=https://github.com/RIOT-OS-pkgmirror/yxml.git
|
||||
PKG_VERSION=f9438757fc49b9f86961ddb55ae430e36bb88ebb
|
||||
PKG_LICENSE=MIT
|
||||
|
||||
|
||||
@ -1,3 +1,822 @@
|
||||
RIOT-2021.10 - Release Notes
|
||||
============================
|
||||
RIOT is a multi-threading operating system which enables soft real-time
|
||||
capabilities and comes with support for a range of devices that are typically
|
||||
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
|
||||
light-weight 32-bit processors.
|
||||
|
||||
RIOT is based on the following design principles: energy-efficiency, soft
|
||||
real-time capabilities, small memory footprint, modularity, and uniform API
|
||||
access, independent of the underlying hardware (with partial POSIX compliance).
|
||||
|
||||
RIOT is developed by an international open-source community which is
|
||||
independent of specific vendors (e.g. similarly to the Linux community) and is
|
||||
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
|
||||
business models around the free open-source software platform provided by RIOT.
|
||||
|
||||
|
||||
About this release
|
||||
==================
|
||||
|
||||
The 2021.10 release includes:
|
||||
|
||||
The last three months again brought many new features, fixes and improvements
|
||||
to the RIOT codebase. There is new hardware support, new helper functions and
|
||||
many new modules that help with building IoT applications.
|
||||
|
||||
Some of the new features are:
|
||||
|
||||
GCOAP DTLS
|
||||
----------
|
||||
|
||||
The GCOAP CoAP library now supports transport encryption via tinyDTLS.
|
||||
This is a compile-time toggle, so either all requests are encrypted or none.
|
||||
There is already a PR (#16688) that will allow to mix encrypted and unencrypted
|
||||
requests.
|
||||
|
||||
FIDO2 support
|
||||
-------------
|
||||
|
||||
We now have an implementation of the Fast Identity Online 2 (FIDO2) specification.
|
||||
With this you can use any RIOT device with USB support as an authenticaton token
|
||||
similar to the YubiKey.
|
||||
|
||||
RPL-over-BLE
|
||||
------------
|
||||
|
||||
The 6LoWPAN over Bluetooth Low Energy module has gained support for the RPL
|
||||
routing protocol. With this it's now possible to set up IPv6 based mesh networks
|
||||
over BLE on chips supported by the Nimble Bluetooth stack.
|
||||
|
||||
GNRC TCP
|
||||
--------
|
||||
|
||||
RIOT's native GNRC network stack now has support for the TCP protocol via the
|
||||
socket API. With this you can switch between LWIP and GNRC without changing your
|
||||
application.
|
||||
|
||||
DHCPv6 relay agent
|
||||
------------------
|
||||
|
||||
The DHCP module can now act as a relay, forwarding DHCPv6 requests for
|
||||
multihop-operation.
|
||||
|
||||
DHCPv6 IA_NA support
|
||||
--------------------
|
||||
|
||||
The DHCPv6 client can now also request non-temporary addresses as an alternative
|
||||
to Stateless Access Autoconfiguration (SLAAC) that is used by default.
|
||||
The feature can be enabled by selecting the `dhcpv6_client_ia_na` module.
|
||||
|
||||
gnrc_ipv6_auto_subnets
|
||||
----------------------
|
||||
|
||||
This new module allows to split a large IPv6 prefix into smaller ones that can
|
||||
be used to configure downstream interfaces with a prefix.
|
||||
The process can be repeated recursively for a cascading subnet topology.
|
||||
|
||||
This can be a lightweight alternative to DHCPv6 that only relies on router
|
||||
advertisements.
|
||||
|
||||
For more details on this, see the talk on the 2021 RIOT summit.
|
||||
|
||||
UDP benchmark
|
||||
-------------
|
||||
|
||||
The examples section has gained a UDP benchmark.
|
||||
This can be used as a network stress test and is accompanied by a host tool
|
||||
(`dist/tools/benchmark_udp`) that acts as the benchmark server to which the
|
||||
benchmark clients will connect.
|
||||
|
||||
URI template processor
|
||||
----------------------
|
||||
|
||||
URI templates up to level 3 (according to RFC 6570) can now be parsed with this
|
||||
tool.
|
||||
|
||||
riotboot serial flasher
|
||||
-----------------------
|
||||
|
||||
RIOT's native bootloader has gained the ability to load a firmware via UART.
|
||||
This allows to program a board without the need for external programmers, a
|
||||
serial console is enough.
|
||||
|
||||
RTC mem for sam0 and STM32
|
||||
--------------------------
|
||||
|
||||
Many real-time clocks have the ability to store a few bytes in their memory as
|
||||
user data. This memory is retained across reboots and deep sleep.
|
||||
|
||||
We now have an interface for this feature and implemented it on SAM L21,
|
||||
SAM D5x/E5x and STM32.
|
||||
|
||||
LWIP improvements
|
||||
-----------------
|
||||
|
||||
The alternative LWIP network stack can now make use of multiple interfaces.
|
||||
Initialisation is done using the new XFA (cross-file array) feature so new
|
||||
drivers can be added by only adding a single file.
|
||||
|
||||
Advanced topologies in ZEP dispatcher
|
||||
-------------------------------------
|
||||
|
||||
With `socket_zep` and the ZEP dispatcher it is possible to simulate a virtual
|
||||
IEEE 802.15.4 network with `native` nodes.
|
||||
ZEP dispatcher has now gained support for lossy connections that make this
|
||||
simulation behave closer to reality.
|
||||
|
||||
There are also PRs pending to automatically generate such topologies (#16889)
|
||||
and to hook up the ZEP dispatcher to the foren6 network visualizer (#16879).
|
||||
|
||||
RIOT_VERSION_CODE macro
|
||||
-----------------------
|
||||
|
||||
We have added a `RIOT_VERSION_CODE` macro that can be used by external
|
||||
modules / boards to check against which RIOT version it is compiled.
|
||||
|
||||
This allows to react to API changes if the module is built against different
|
||||
versions of RIOT.
|
||||
|
||||
gnrc_netif_ipv6_wait_for_global_address()
|
||||
-----------------------------------------
|
||||
|
||||
For apps that want to connect to a remote server, send some data and then go back
|
||||
to sleep, there is now the new `gnrc_netif_ipv6_wait_for_global_address()` function.
|
||||
|
||||
This function blocks until a global address has been configured (e.g. via router
|
||||
advertisement) or a timeout happens.
|
||||
So no more guessing if a connection can yet be established or if the interface is
|
||||
not configured yet.
|
||||
|
||||
This feature depends on the `gnrc_netif_bus` module.
|
||||
|
||||
netutils_get_ipv6()
|
||||
-------------------
|
||||
|
||||
This simple function can parse a IPv6 address from a string.
|
||||
But that's not all - if the `sock_dns` module is enabled, the string can also
|
||||
be a hostname which will then be resolved.
|
||||
|
||||
This provides a small and simple alternative to `getaddrinfo()` that can be used
|
||||
by shell commands and applications alike.
|
||||
|
||||
gnrc_icmpv6_echo corruption detection
|
||||
-------------------------------------
|
||||
|
||||
On Linux the `ping` command from iputils has the neat feature that it fills the
|
||||
payload with of the ICMP echo request with a pattern that is then echoed back by
|
||||
the receiver.
|
||||
|
||||
That means it can detect if the payload got corruped on the way, e.g. by broken
|
||||
fragmentation or other errors.
|
||||
|
||||
The RIOT `ping` command now also implements this feature that lets you easily
|
||||
detect if something broke along the way.
|
||||
|
||||
New Hardware Support
|
||||
--------------------
|
||||
|
||||
In this cycle we have seen the addition of three new MCU families!
|
||||
Our latest additions are the Raspberry Pi RP2040 and the GD32VF103 RISC-V MCU
|
||||
from GigaDevice.
|
||||
|
||||
Both only have very basic support so far (only GPIO, UART and timers), which
|
||||
still leaves many low hanging fruits for adding peripheral drivers.
|
||||
Patches welcome!
|
||||
|
||||
The nRF9160 is closer to it's nRF52 siblings, but brings GPS and LTE-M/NB-IoT
|
||||
peripherals. While we are not there yet, there is ongoing work to also support
|
||||
these in RIOT.
|
||||
|
||||
The ATxmega family of 8-bit MCUs can now make use of the EBI interface to use
|
||||
external memory. The new XMEGA-A1 Xplained already makes use of this feature.
|
||||
|
||||
On the STM32 side we have now support for the `nucleo-wl55jc` and it's LoRa
|
||||
transceiver.
|
||||
The IEEE 802.15.4 / BLE radio on the STM32WB family is however still waiting
|
||||
for a driver.
|
||||
|
||||
The common LM75 family of temperature drivers is now supported by RIOT.
|
||||
|
||||
The ethernet driver for the SAM E5x line of MCUs is now stable.
|
||||
|
||||
The sub-MAC layer that implements common MAC features for IEEE 802.15.4 radios
|
||||
has again seen many improvements.
|
||||
It is currently used by the nRF52 and CC2538 line of MCUs.
|
||||
|
||||
API changes
|
||||
-----------
|
||||
|
||||
The `spi_acquire()` no longer returns an error code but will throw an assertion
|
||||
if called with the wrong parameters.
|
||||
This allows to speed up SPI operations a bit as SPI parameters are usually fixed
|
||||
at compile time.
|
||||
|
||||
The `gnrc_netdev_default` was replaced by the network stack agnostic
|
||||
`netdev_default` module.
|
||||
|
||||
For now `gnrc_netdev_default` remains an alias for `netdev_default`, but it will
|
||||
be removed in a future release.
|
||||
|
||||
Summary
|
||||
-------
|
||||
|
||||
263 pull requests, composed of 590 commits, have been merged since the
|
||||
last release, and 14 issues have been solved. 36 people contributed with
|
||||
code in 98 days. 1756 files have been touched with 138909 (+) insertions and
|
||||
12027 deletions (-).
|
||||
|
||||
|
||||
Notations used below
|
||||
====================
|
||||
|
||||
+ means new feature/item
|
||||
* means modified feature/item
|
||||
- means removed feature/item
|
||||
|
||||
|
||||
New features and changes
|
||||
========================
|
||||
|
||||
Core (3)
|
||||
--------
|
||||
|
||||
+ core/sched: add runq_callback hook and runq inspection functions (#16463)
|
||||
+ core: add irq_is_enabled() function to irq interface (#11117)
|
||||
* core/msg doc: Clarify; elaborating on interaction with queue (#16794)
|
||||
|
||||
System Libraries (12)
|
||||
---------------------
|
||||
|
||||
+ riotboot: implement serial flasher (#15493)
|
||||
+ FIDO2 support in RIOT (#16489)
|
||||
+ test_utils: add UDP benchmark (#16710)
|
||||
+ uri_parser: provide function to split query (#16695)
|
||||
+ usbus/hid_io: add missing header file, add RX callback function (#16689)
|
||||
+ ut_process: initial import of a URI template processor (#16702)
|
||||
* sys/picolibc_syscalls_default: support new picolibc stdio globals
|
||||
[backport 2021.10] (#17020)
|
||||
* sys/random/fortuna: change interval ressed to ms (#16594)
|
||||
* sys/shell/commands/gnrc_icmpv6_echo: test for ICMPv6 reply corruption (#15622)
|
||||
* sys/shell/commands: gnrc_icmpv6_echo: use msg_avail() (#16611)
|
||||
* uri_parser: constify result (#16707)
|
||||
+ sys/credman: add key load functions (#16263)
|
||||
|
||||
Networking (49)
|
||||
---------------
|
||||
|
||||
+ dhcpv6_relay: initial import of a lightweight DHCPv6 relay agent (#16606)
|
||||
+ gnrc/netif: add gnrc_netif_ipv6_wait_for_global_address() (#16824)
|
||||
+ gnrc_ipv6_nib: handle route information option and add config to add
|
||||
to final RAs (#16568)
|
||||
+ gnrc_ipv6_simple_subnets: auto-configuration for nested subnets on a
|
||||
simple tree topology (#16536)
|
||||
+ gnrc_netif: add gnrc_netif_ipv6_add_prefix() & helper functions (#16672)
|
||||
+ gnrc_sock_tcp: add gnrc sock tcp (#16494)
|
||||
+ gnrc_tcp: Add GNRC_TCP_NO_TIMEOUT (#16735)
|
||||
+ net/BLE: add support for RPL-over-BLE (#16364)
|
||||
+ net/gcoap: support DTLS (#15549)
|
||||
+ net/gnrc_lorawan: implement unconfirmed uplink redundancy (#15946)
|
||||
+ net/netif: add function to get interface by name from a buffer (#16709)
|
||||
+ netutils: add netutils_get_ipv6() (#16634)
|
||||
+ sys/net/dhcpv6: Add IA_NA support to the DHCPv6 client (#16228)
|
||||
+ tests/gnrc_lorawan: add initial tests (#16654)
|
||||
* dhcpv6_client: make IA_PD an optional module (#16658)
|
||||
* dhcpv6_client: mrd calculation fixed (#16679)
|
||||
* dhcpv6_client: refactor to use `event_timeout` for non-sock timeouts (#16668)
|
||||
* drivers/sx126x : r/NETOPT_RX_TIMEOUT/NETOPT_RX_SYMBOL_TIMEOUT (#16599)
|
||||
* gnrc/ipv6_auto_subnets: relax topology requirements (#16750)
|
||||
* gnrc/nib: consolidate prefix removal code in
|
||||
_nib_offl_remove_prefix() (#16729)
|
||||
* gnrc_ipv6_nib: provide functions to get offset of public timestamps (#16706)
|
||||
* gnrc_netif_pktq: schedule immediately if timer us is equal to zero (#16745)
|
||||
* gnrc_tcp: align with sock tcp (#16493)
|
||||
* gnrc_tcp: experimental feature "dynamic msl" (#16764)
|
||||
* gnrc_tcp: handle zero size buffers (#16738)
|
||||
* ipv6: fix typo in ipv6_addr_to_str documentation (#16828)
|
||||
* netdev/lora: fix size of NETOPT_RX_SYMBOL_TIMEOUT (#16604)
|
||||
* sock_dns: factor out message parsing and composition (#16669)
|
||||
* sys/net/dhcpv6: Refactor DHCPv6 client (#16728)
|
||||
* sys/net/dhcpv6: Refactor IA_NA implementation (#16724)
|
||||
* sys/net/netopt: Drop deprecated NETOPT_MAX_PACKET_SIZE (#16023)
|
||||
* tree-wide: avoid explicit cast to netdev (#16577)
|
||||
|
||||
Packages (8)
|
||||
------------
|
||||
|
||||
+ pkg/wakaama: add get set functions and cleanup client connection (#16203)
|
||||
* make: support package mirrors [backport 2021.10] (#16996)
|
||||
* pkg/edhoc-c: ignore llvm flagged error (#16871)
|
||||
* pkg/edhoc-c: remove nimble blacklist (#16819)
|
||||
* pkg/edhoc: bump version (#16708)
|
||||
* pkg/nanocbor: bump version (#16829)
|
||||
* pkg/tinydtls: bump version (#16624)
|
||||
* pkg/nimble/autoadv: make AD flag optional (#16703)
|
||||
* pkg/nimble: bump version, rmv patches (#16830)
|
||||
* pkg/nimble: configure BLE_LL_INIT_SLOT_SIZE to 1 (#16602)
|
||||
* pkg/nimble: have RIOT always initialize nimble timers (#16623)
|
||||
* pkg/nimble: use tinycrypt pkg (#16540)
|
||||
+ pkg/lwip: add auto-init for DOSE & at86rf215, cc2538_rf (#16761)
|
||||
+ pkg/lwip: Add thread safety check when using DEVELHELP (#16259)
|
||||
+ pkg/nimble/netif: add nimble_netif_accept_direct() (#16603)
|
||||
+ pkg/nimble/scanner: add function to set scan duration (#16701)
|
||||
* pkg/lwip: Allow initializing different types of netifs (#16162)
|
||||
* pkg/lwip: implement netif_get_name() (#16741)
|
||||
* pkg/semtech-loramac: forward uplink schedule request to upper layer (#16961)
|
||||
* pkg/tinydtls: handling of close_notify (#16422)
|
||||
|
||||
Boards (19)
|
||||
-----------
|
||||
|
||||
+ boards/{pic32-wifire,6lowpan-clicker}: Add CLOCK_CORECLOCK (#16607)
|
||||
+ boards: Introduce atxmega-a1-xplained board (#16289)
|
||||
+ gd32v/seeedstudio-gd32: Initial support (#16036)
|
||||
* boards/adafruit-clue: fix doxygen warnings (#16847)
|
||||
* boards/lora-e5-dev: initial support (#16660)
|
||||
* boards/nrf52: replace gnrc_netdev_default with netdev_default (#16788)
|
||||
* boards/saml21-xpro: configure UART & SPI on EXT2, 3 (#16694)
|
||||
|
||||
CPU (27)
|
||||
--------
|
||||
|
||||
+ cpu/atxmega/periph: Add ebi driver (#16288)
|
||||
* cpu/atxmega: Fix features config (#16742)
|
||||
+ cpu/nrf9160: add initial support for nRF9160DK board (#16650)
|
||||
+ cpu/nrf9160: add twi and spi support (#16814)
|
||||
+ cpu/rpx0xx: add periph timer (#16627)
|
||||
+ cpu/rpx0xx: port RIOT to the Raspberry Pi RP2040 MCU (#16609)
|
||||
+ cpu/stm32: added ADC for g0 (#16885)
|
||||
+ cpu/stm32: added APB12 bus multiplier entry for applicable cpus (#16881)
|
||||
+ cpu/nrf52: i2c: add support for 16-bit register addresses (#16711)
|
||||
+ cpu/riscv: add CPU_ARCH information (#16877)
|
||||
+ cpu/stm32: add rtc_mem (#16802)
|
||||
+ cpu/stm32: added RAM_LEN identifier for stm32g03x (#16886)
|
||||
+ stm32/spi : Add check for GPIO_UNDEF (#16625)
|
||||
+ cpu/nrf52: add SAUL driver for VDDH sensor (#16003)
|
||||
* avr_libc_extra: implement strerror() (#16717)
|
||||
* cpu/cc2538: don't pollute global namespace with cc2538_rfcore.h (#16863)
|
||||
* cpu/kinetis: fix RAM_LEN calculation (#16608)
|
||||
* cpu/native: fix thread_yield_higher() with IRQs disabled (#16754)
|
||||
* cpu/native: make use of stdio_read() / stdio_write() (#16822)
|
||||
* cpu/rpx0xx: fix minor gpio warnings (#16685)
|
||||
* cpu/sam0: improve ethernet driver resilience (#16683)
|
||||
* cpu/stm32/periph/rtc_all.c for CPU_FAM_STM32L5 support. (#16656)
|
||||
* riscv: Simplify reset trampoline (#16876)
|
||||
|
||||
Device Drivers (7)
|
||||
------------------
|
||||
|
||||
* drivers/cc2538_rf: remove cc2538_rf_netdev_legacy (#16628)
|
||||
* drivers/nrf802154: remove nrf802154_rf_netdev_legacy (#16630)
|
||||
* drivers/sx127x: remove ZTIMER_USEC dependency (#15030)
|
||||
* ieee802154/radio_hal: detach hal descriptor from driver (#16534)
|
||||
* ieee802154/submac: reimplement using FSM (#16746)
|
||||
* ieee802154/submac: avoid race condition between RX_DONE and
|
||||
ACK_TIMEOUT (#16964)
|
||||
* ieee802154/submac: fix leftovers of #16746 (#16823)
|
||||
+ drivers/dose: make use of start condition received interrupt (#16506)
|
||||
+ drivers/periph: define rtc_mem and implement it for sam0_common (#16758)
|
||||
+ drivers/cc110x: add power off (sleep) functions (#16232)
|
||||
+ drivers/lm75: add SAUL integration (#16763)
|
||||
+ drivers/lpsxxx: add support for lps22hh (#16880)
|
||||
+ rtt_rtc: add rtt_rtc_settimeofday() & rtt_rtc_gettimeofday() (#16682)
|
||||
* drivers/at86rf215: remove msg queue dependency (#16747)
|
||||
* drivers/lm75: driver for the lm75 sensor and derivatives (#16678)
|
||||
+ sx126x: add support for multiple simultaneous variants (#16597)
|
||||
+ drivers/ili9341: add rotation mode to ili9341_params_t (#16773)
|
||||
+ drivers/sx126x: Add support for Nucleo -WL55JC (#16579)
|
||||
* drivers/cc110x: use pseudo-modules for band selection (#16865)
|
||||
|
||||
Documentation (9)
|
||||
-----------------
|
||||
|
||||
+ boards/nrf52840dongle docs: Introduce "quick start" section (#15658)
|
||||
+ dist/tools/doccheck: add exclude file for warnings and use it (#16779)
|
||||
* cpu: fix doxygen grouping warnings (#16813)
|
||||
* doc/doxygen/src/advanced-build-system-tricks: fix no udev link (#16810)
|
||||
* doc/doxygen: increase dot graph max nodes (#16686)
|
||||
* doc/porting-boards.md: improve with porting graph and reference
|
||||
section (#15981)
|
||||
* feather-nrf52840: several fixes to documentation (#16777)
|
||||
* net/ieee802154_security doc: Shape security expectations (#16841)
|
||||
* README.md: fix doc link (#16786)
|
||||
|
||||
Build System / Tooling (8)
|
||||
--------------------------
|
||||
|
||||
+ build system: add machine-readable RIOT_VERSION_CODE macro (#16765)
|
||||
+ build system: add VERBOSE_ASSERT flag (#16884)
|
||||
+ make: add capability to check config for `test-with-config` (#16795)
|
||||
+ makefiles/clang-tidy: initial support (#16509)
|
||||
* dist/tools/compile_and_test_for_board: fix W1514 (#16772)
|
||||
* dist/tools/doccheck: generate exclude_patterns using C.UTF-8 (#16846)
|
||||
* dist/tools/pyterm: ipv6 address support for tcp_serial option (#16726)
|
||||
* dist/tools: use f-strings where possible (#16867)
|
||||
* Makefile.include: only warn if not curl, wget, unzip, 7z (#16784)
|
||||
+ tools/zep_dispatch: add support for advanced topologies (#15773)
|
||||
* Remove `which` from shell invocations (#16776)
|
||||
|
||||
Kconfig (5)
|
||||
-----------
|
||||
|
||||
+ cpu/cc2538: Add Kconfig support (#16719)
|
||||
+ makefiles/kconfig.mk: generate config file from RIOT_CONFIG_%
|
||||
environment variables (#16052)
|
||||
* drivers/lm75: fixed a typo in Kconfig (#16825)
|
||||
* drivers/mtd: fix Kconfig dependencies (#16836)
|
||||
* makefiles/kconfig.mk: force SHOULD_USE_KCONFIG if config file is
|
||||
present (#16641)
|
||||
|
||||
Examples (3)
|
||||
------------
|
||||
|
||||
+ examples/lorawan: add LoRaWAN keys to DOCKER_ENV_VARS (#17010)
|
||||
* examples/nimble_*: use nimble_autoadv module (#13506)
|
||||
+ examples/suit_update: Add compatibility with native (#15994)
|
||||
|
||||
Testing (10)
|
||||
------------
|
||||
|
||||
+ dist/pythonlibs/riotctrl_shell/tests/common: add expect to mock (#17003)
|
||||
+ gnrc_tcp: refactor tests (#16461)
|
||||
+ tests/gnrc_dhcpv6_client: add script to check if $IFACE exists (#16797)
|
||||
* CODEOWNERS: remove Robert Hartung (#16858)
|
||||
* gh/workflows/release-tests: update LoRaWAN parameters to ttnv3
|
||||
[backport 2021.10] (#17013)
|
||||
* Small fatfs usability fixes (#16800)
|
||||
* tests/gnrc_dhcpv6_client: kill potential previous Kea session (#16820)
|
||||
* tests/ieee802154_hal: check error codes and improve error reporting (#16556)
|
||||
* tests/unittests/tests-ipv6_hdr: fix too short ipv6_hdr_t allocations (#16616)
|
||||
* tests/ieee802154_submac: remove netdev dependency (#16826)
|
||||
|
||||
API Changes (5)
|
||||
---------------
|
||||
|
||||
* drivers/ina3221: style fixes and improvements (#15915)
|
||||
* drivers/periph_spi: let spi_acquire return void (#15902)
|
||||
* gnrc_tcp: rewrite passive open (#16459)
|
||||
* nanocoap & gcoap: allow path to be non-`\0`-terminated. (#16712)
|
||||
* sys/net/nanocoap: block_finish returns if more are expected (#16704)
|
||||
|
||||
Uncategorized (3)
|
||||
-----------------
|
||||
+ README.md: add graphical logo (#16856)
|
||||
+ release-notes.txt: add 2021.07 release notes (#16651)
|
||||
* README.md: Expose HiL CI overview link (#16720)
|
||||
* Remove duplicated includes introduced in #15902 (#16798)
|
||||
* treewide: Fix "too many consecutive empty lines" warnings (#16733)
|
||||
|
||||
And 63 minor changes.
|
||||
|
||||
Deprecations
|
||||
============
|
||||
|
||||
Deprecations (1)
|
||||
----------------
|
||||
|
||||
* gnrc: deprecate gnrc_netdev_default, use netdev_default instead (#16744)
|
||||
|
||||
|
||||
Bug fixes (32)
|
||||
==============
|
||||
|
||||
* boards/nucleo-wl55jc: add SX126X_PARAM_TYPE to board.h (#16646)
|
||||
* build system: add fallback for RIOT_VERSION_CODE (#16895)
|
||||
* cpu/avr8_common: Fix link with binutils > 2.35.2 (#16790)
|
||||
* cpu/cortexm: ldscripts: bkup-ram -> bkup_ram (#16753)
|
||||
* cpu/esp_common: fix boot issue on ESP8266 (#16639)
|
||||
* cpu/saml21: uart: use arithmetic baud rate mode (#16693)
|
||||
* dhcpv6_client: keep integers in retransmission calculations signed
|
||||
[backport 2021.10] (#16995)
|
||||
* drivers/cc2538_rf: fix deadlock when receiving too fast. (#16716)
|
||||
* drivers/sx126x: fix netdev send and recv function (#16570)
|
||||
* event_timeout: check clock before removing ztimer on clear (#16667)
|
||||
* gnrc/nib: gnrc_ipv6_nib_get_next_hop_l2addr(): only assume neighbor
|
||||
cache entries to always be on-link (#16671)
|
||||
* gnrc/sock: recv avoid spinning xtimer (#16831)
|
||||
* gnrc_ipv6_nib: consider largest prefix match when deciding if host
|
||||
on-link (#16557)
|
||||
* gnrc_ipv6_nib: queue packets that trigger probing on border router
|
||||
[backport 2021.10] (#16949)
|
||||
* gnrc_lorawan: fix gnrc_pktbuf_release_error (introduced by #16080) (#16617)
|
||||
* gnrc_sock: imply end-point netif only if unset (#16643)
|
||||
* ieee802154/submac: fix initialization code (#16533)
|
||||
* Makefile.base: cleanup non selected source object files [backport
|
||||
2021.10] (#16953)
|
||||
* mtd: fix mtd_write_page() across sector boundaries (#16848)
|
||||
* net/gnrc_lorawan: fix pick channel (#16664)
|
||||
* net/lorawan: Revert #16604 and fix NETOPT_RX_SYMBOL_TIMEOUT
|
||||
documentation (#16640)
|
||||
* netutils: get interface by name rather than ID (#16673)
|
||||
* pkg/lwip: Fix compilation without IPv6 (#16762)
|
||||
* pkg/lwip: Fix DHCP autostart (#16636)
|
||||
* pkg/mynewt-core: initial commit (#16348)
|
||||
* pkg/nimble/autoconn: stop scan/adv on NETIF_ABORT_SLAVE (#16699)
|
||||
* pkg/wakaama: fix object common `get` functions (#16691)
|
||||
* Revert "Remove `which` from shell invocations" (#16803)
|
||||
* tests/gnrc_dhcpv6_client: Fix for newer Kea versions and remove sudo
|
||||
requirement (#16792)
|
||||
* tests/gnrc_dhcpv6_client: honor configured $IFACE in Kea config (#16796)
|
||||
* tinydtls: sock_dtls: only use ifindex with link-local addresses (#16910)
|
||||
|
||||
|
||||
Known issues
|
||||
============
|
||||
|
||||
Network related issues (52)
|
||||
---------------------------
|
||||
|
||||
* 6lo gnrc fragmentation expects driver to block on TX (#7474)
|
||||
* 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
|
||||
* Address registration handling inappropriate (#15867)
|
||||
* app/netdev: application stops working after receiving frames with
|
||||
assertion or completely without error (#8271)
|
||||
* at86rf2xx: Dead lock when sending while receiving (#8242)
|
||||
* at86rf2xx: lost interrupts (#5486)
|
||||
* CC2538 RF overlapping PIN usage (#8779)
|
||||
* core: "Invalid read of size 4" (#7199)
|
||||
* cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
|
||||
* dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on
|
||||
PC (#14689)
|
||||
* driver/mrf24j40: blocks shell input with auto_init_gnrc_netif (#12943)
|
||||
* drivers/at86rf215: Incorrect channel number set for subGHz (#15906)
|
||||
* DTLS examples cannot send message to localhost (#14315)
|
||||
* Emcute cannot create a double-byte name (#12642)
|
||||
* ethernet: Missing multicast addr assignment (#13493)
|
||||
* ethos: fails to respond to first message. (#11988)
|
||||
* ethos: Unable to choose global source address. (#13745)
|
||||
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
|
||||
* examples/cord_ep: Dead lock when (re-)registering in callback
|
||||
function (#12884)
|
||||
* examples/gnrc_border_router: esp_wifi crashes on disconnect (#14679)
|
||||
* Forwarding a packet back to its link layer source should not be
|
||||
allowed (#5051)
|
||||
* gcoap example request on tap I/F fails with NIB issue (#8199)
|
||||
* gcoap: Suspected crosstalk between requests (possible NULL call) (#14390)
|
||||
* General 802.15.4/CC2538 RF driver dislikes fast ACKs (#7304)
|
||||
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
|
||||
* gnrc_border_router stops routing after a while (#16398)
|
||||
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
|
||||
packet buffer (#12565)
|
||||
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
||||
address (#4527)
|
||||
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
|
||||
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
|
||||
* gomach: Resetting netif with cli doesn't return (#10370)
|
||||
* ieee802154_submac: IPv6 fragmentation broken (#16998)
|
||||
* LoRaWan node ISR stack overflowed (#14962)
|
||||
* lwip_sock_tcp / sock_async: received events before calling
|
||||
sock_accept() are lost due to race condition. (#16303)
|
||||
* Missing drop implementations in netdev_driver_t::recv (#10410)
|
||||
* net: netdev_driver_t::send() doc unclear (#10969)
|
||||
* netdev_ieee802154: Mismatch between radio ll address and in memory
|
||||
address (#10380)
|
||||
* nrf52: Not able to add global or ULA address to interface (#13280)
|
||||
* nrfmin: communication not possible after multicast ping with no
|
||||
interval (#11405)
|
||||
* openthread: does not build on current Arch (#10809)
|
||||
* ping6 is failing when testing with cc2538dk (#13997)
|
||||
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
|
||||
* pkg: libcoap is partially broken and outdated (#7737)
|
||||
* Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
|
||||
* Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
|
||||
* samr30 xpro doesn't seem to use its radio ok (#12761)
|
||||
* scan-build errors found during 2019.07 testing (#11852)
|
||||
* send data with UDP at 10HZ, the program die (#11860)
|
||||
* stale border router does not get replaced (#12210)
|
||||
* two nodes livelock sending neighbor solicitations back and forth
|
||||
between each other (#16670)
|
||||
* Unclear how Router Solicitations are (or should be) handled (#15926)
|
||||
* xbee: setting PAN ID sometimes fails (#10338)
|
||||
|
||||
Timer related issues (15)
|
||||
-------------------------
|
||||
|
||||
* cpu/native: timer interrupt issue (#6442)
|
||||
* misc issues with tests/trickle (#9052)
|
||||
* MSP430: periph_timer clock config wrong (#8251)
|
||||
* periph/timer: `timer_set()` underflow safety check (tracking issue) (#13072)
|
||||
* periph_timer: systematic proportional error in timer_set (#10545)
|
||||
* saml21 system time vs rtc (#10523)
|
||||
* Sleep mode for Arduino (#13321)
|
||||
* stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
|
||||
* sys/newlib: gettimeofday() returns time since boot, not current wall
|
||||
time. (#9187)
|
||||
* tests: xtimer_drift gets stuck on native (#6052)
|
||||
* xtimer mis-scaling with long sleep times (#9049)
|
||||
* xtimer: add's items to the wrong list if the timer overflows between
|
||||
_xtimer_now() and irq_disable() (#7114)
|
||||
* xtimer_set_msg: crash when using same message for 2 timers (#10510)
|
||||
* xtimer_usleep stuck for small values (#7347)
|
||||
* xtimer_usleep wrong delay time (#10073)
|
||||
|
||||
Drivers related issues (17)
|
||||
---------------------------
|
||||
|
||||
* (almost solved) SPI SD-Card driver: SPI initialisation freeze until
|
||||
timeout (#14439)
|
||||
* adc is not a ADC-Driver but a analog pin abstraction (#14424)
|
||||
* at86rf2xx: Simultaneous use of different transceiver types is not
|
||||
supported (#4876)
|
||||
* cpu/msp430: GPIO driver doesn't work properly (#9419)
|
||||
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
|
||||
* ESP32 + DHT + SAUL reading two endpoints causes freeze. (#12057)
|
||||
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
|
||||
* fail to send data to can bus (#12371)
|
||||
* floats and doubles being used all over the place. (#12045)
|
||||
* mdt_erase success, but vfs_format resets board (esp32-heltec-
|
||||
lora32-v2) (#14506)
|
||||
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
|
||||
software CS (#6567)
|
||||
* periph: GPIO drivers are not thread safe (#4866)
|
||||
* Potential security and safety race conditions on attached devices (#13444)
|
||||
* PWM: Single-phase initialization creates flicker (#15121)
|
||||
* STM32: SPI clock not returning to idle state and generating
|
||||
additional clock cycles (#11104)
|
||||
* TCP client cannot send read only data (#16541)
|
||||
* Two bugs may lead to NULL dereference. (#15006)
|
||||
|
||||
Native related issues (6)
|
||||
-------------------------
|
||||
|
||||
* examples/ccn-lite: floating point exception while testing on native (#15878)
|
||||
* examples/micropython: floating point exception while testing on
|
||||
native (#15870)
|
||||
* native getchar is blocking RIOT (#16834)
|
||||
* native not float safe (#495)
|
||||
* native: tlsf: early malloc will lead to a crash (#5796)
|
||||
* SIGFPE on native architecture when printing double floats on Ubuntu
|
||||
21.04 (#16282)
|
||||
|
||||
Other platforms related issues (23)
|
||||
-----------------------------------
|
||||
|
||||
* Failing tests on FE310 (Hifive1b) (#13086)
|
||||
* [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
|
||||
* arm7: printf() with float/double not working (#11885)
|
||||
* boards/hifive1: flashing issue (#13104)
|
||||
* Cannot use LLVM with Cortex-M boards (#13390)
|
||||
* cpu/cortexm_common: irq_enable returns the current state of
|
||||
interrupts (not previous) (#10076)
|
||||
* cpu/sam0: flashpage write / read cycle produces different results
|
||||
depending on code layout in flash (#14929)
|
||||
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
|
||||
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
|
||||
* esp32: can't use newer C++ standard than c++11 (#15685)
|
||||
* esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
|
||||
* esp8266: Hangs when erasing spi sector on mtd0 if using esp_wifi (#16281)
|
||||
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
|
||||
* I found stm32 DMA periph driver bugs! when I tested stm32l431rc
|
||||
board. (#16242)
|
||||
* Incorrect default $PORT building for esp32-wroom-32 on macOS (#10258)
|
||||
* MIPS: toolchain objcopy doesn't work and no .bin can be generated (#14410)
|
||||
* MPU doesn't work on cortex-m0+ (#14822)
|
||||
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
|
||||
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
|
||||
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
|
||||
after __WFI() (#14015)
|
||||
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
|
||||
* sys/riotboot/flashwrite: unaligned write when skipping
|
||||
`RIOTBOOT_MAGIC` on stm32wb (#15917)
|
||||
* tests/mpu_noexec_ram: fails on i-nucleo-lrwan1 (#14572)
|
||||
|
||||
Build system related issues (15)
|
||||
--------------------------------
|
||||
|
||||
* `buildtest` uses wrong build directory (#9742)
|
||||
* `make -j flash` fails due to missing make dependencies or `make
|
||||
flash-only` rebuilds the .elf (#16385)
|
||||
* Build dependencies - processing order issues (#9913)
|
||||
* build: info-build doesn't work with boards without port set (#15185)
|
||||
* BUILD_IN_DOCKER ignores USEMODULE (#14504)
|
||||
* Different build behavior between `murdock` and
|
||||
`riot/riotbuild:latest` image (#9645)
|
||||
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
|
||||
1.89 (#12771)
|
||||
* doxygen: riot.css modified by 'make doc' (#8122)
|
||||
* LTO broken (binaries too large) (#16202)
|
||||
* macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
|
||||
* make: ccache leads to differing binaries (#14264)
|
||||
* make: Setting constants on compile time doesn't really set them
|
||||
everywhere (#3256)
|
||||
* make: use of immediate value of variables before they have their
|
||||
final value (#8913)
|
||||
* Tracking: remove harmful use of `export` in make and immediate
|
||||
evaluation (#10850)
|
||||
* Windows AVR Mega development makefile Error (#6120)
|
||||
|
||||
Other issues (45)
|
||||
-----------------
|
||||
|
||||
* [TRACKING] sys/shell refactoring. (#12105)
|
||||
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
|
||||
through shell after flashing with J-Link (#13044)
|
||||
* `make term` no longer works with JLinkExe v6.94 (#16022)
|
||||
* `make term` output is inconsistent between boards, `ethos` and
|
||||
`native` (#12108)
|
||||
* assert: c99 static_assert macro doesn't function for multiple
|
||||
static_asserts in the same scope (#9371)
|
||||
* Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
|
||||
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
|
||||
* Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto (#13285)
|
||||
* C++11 extensions in header files (#5561)
|
||||
* Can't build relic with benchmarks or tests (#12897)
|
||||
* CC2538DK board docs: broken links (#12889)
|
||||
* edbg: long lines flooded over serial become garbled (#14548)
|
||||
* examples / tests: LoRa tests fail on platforms that don't support
|
||||
LoRa (#14520)
|
||||
* File systems report names with leading slashes (#14635)
|
||||
* flashing issue on frdm-k64f (#15903)
|
||||
* Gcoap drops long packages instead of gracefully erring out (#14167)
|
||||
* gcoap_dtls: Selecting transport at run time is not possible (#16674)
|
||||
* I2C not working under RIOT with U8G2 pkg (#16381)
|
||||
* ieee802154_security: Nonce is reused after reboot (#16844)
|
||||
* Making the newlib thread-safe (#4488)
|
||||
* nanocoap: incomplete response to /.well-known/core request (#10731)
|
||||
* Order of auto_init functions (#13541)
|
||||
* pkg/tinydtls: Multiple issues (#16108)
|
||||
* Possible memset optimized out in crypto code (#10751)
|
||||
* Potential race condition in compile_and_test_for_board.py (#12621)
|
||||
* pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
|
||||
* RIOT cannot compile with the latest version of macOS (10.14) and
|
||||
Xcode 10 (#10121)
|
||||
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
|
||||
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
|
||||
* Sam boards: isr_eic call all IRQ raised without taking into account
|
||||
their status (enabled/disabled) (#16978)
|
||||
* scheduler: priority inversion problem (#7365)
|
||||
* sys/fmt: Missing tests for fmt_float, fmt_lpad (#7220)
|
||||
* sys/riotboot: documentation issues (#11243)
|
||||
* sys/stdio_uart: dropped data when received at once (#10639)
|
||||
* tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
|
||||
* tests/lwip target board for python test is hardcoded to native (#6533)
|
||||
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
|
||||
LLVM (#15066)
|
||||
* tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
|
||||
esp32-wroom-32 (#13133)
|
||||
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
|
||||
* tests/thread_float: crashes on avr-rss2 (#16908)
|
||||
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
|
||||
* tests: some tests don't work with `newlib` lock functions. (#12732)
|
||||
* Tracker: Reduce scope on unintended COMMON variables (#2346)
|
||||
* usb-serial/list-ttys.sh: Broken when a debugger offers multiple
|
||||
serial ports (#15814)
|
||||
* Use of multiple CAN bus on compatible boards (#14801)
|
||||
|
||||
There are 173 known issues in this release
|
||||
|
||||
Fixed Issues since the last release (2021.07)
|
||||
=============================================
|
||||
|
||||
- make check_bindist fails to find reference to `main` (#16977)
|
||||
- dhcpv6_client: no prefix on downstream interface via IA_PD (#16971)
|
||||
- Deleted or non selected source files are linked in (#16942)
|
||||
- tests/thread_float: broken on AVR (#16896)
|
||||
- Kconfig/tinydtls: Unable to compile `examples/dtls-sock` with
|
||||
`CONFIG_DTLS_ECC` enabled (#16873)
|
||||
- particle: error while flashing using Docker build and DFU mode (#16749)
|
||||
- test/pkg_u8g2: using SDL is failing (#16714)
|
||||
- cpu/saml21: can't set baud rate on SERCOM5 (#16692)
|
||||
- sam0_eth: extremely long time to RX (frames stuck in buffer?) (#16451)
|
||||
- w5100 driver's improvement (#16417)
|
||||
- border_router: significant packet loss when sending out packets using
|
||||
USB cdc-ecm on nrf52 (#16411)
|
||||
- XFA support on AVR and MSP430 broken with binutils 2.36.1 (#16251)
|
||||
- SDL2 does not work due to missing getpid (#13501)
|
||||
- hello-world example crashes on BOARD=nucleo-f446re (#9775)
|
||||
|
||||
14 fixed issues since last release (2021.07)
|
||||
|
||||
|
||||
Acknowledgements
|
||||
================
|
||||
We would like to thank all companies that provided us with hardware for porting
|
||||
and testing RIOT-OS. Further thanks go to companies and institutions that
|
||||
directly sponsored development time. And finally, big thanks to all of you
|
||||
contributing in so many different ways to make RIOT worthwhile!
|
||||
|
||||
|
||||
More information
|
||||
================
|
||||
http://www.riot-os.org
|
||||
|
||||
|
||||
IRC, Matrix and Forum
|
||||
=====================
|
||||
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
||||
* Join the RIOT Matrix room at: #riot-os:matrix.org
|
||||
* Join the RIOT Forum at: forum.riot-os.org
|
||||
|
||||
|
||||
License
|
||||
=======
|
||||
* The code developed by the RIOT community is licensed under the GNU Lesser
|
||||
General Public License (LGPL) version 2.1 as published by the Free Software
|
||||
Foundation.
|
||||
* Some external sources and packages are published under a separate license.
|
||||
|
||||
All code files contain licensing information.
|
||||
|
||||
RIOT-2021.07 - Release Notes
|
||||
============================
|
||||
RIOT is a multi-threading operating system which enables soft real-time
|
||||
|
||||
@ -38,6 +38,9 @@ extern "C" {
|
||||
#ifndef CONFIG_GNRC_IPV6_NIB_SLAAC
|
||||
#define CONFIG_GNRC_IPV6_NIB_SLAAC 1
|
||||
#endif
|
||||
#ifndef CONFIG_GNRC_IPV6_NIB_QUEUE_PKT
|
||||
#define CONFIG_GNRC_IPV6_NIB_QUEUE_PKT 1
|
||||
#endif
|
||||
#ifndef CONFIG_GNRC_IPV6_NIB_NUMOF
|
||||
#define CONFIG_GNRC_IPV6_NIB_NUMOF (16)
|
||||
#endif
|
||||
|
||||
@ -544,7 +544,9 @@ ieee802154_fsm_state_t ieee802154_submac_process_ev(ieee802154_submac_t *submac,
|
||||
*
|
||||
* This function must be called when the ACK timeout timer fires.
|
||||
*
|
||||
* @note this function should not be called inside ISR context.
|
||||
* @note this function should not be called inside ISR context and MUST NOT
|
||||
* be invoked if @ref ieee802154_submac_ack_timer_cancel was already
|
||||
* called.
|
||||
*
|
||||
* @param[in] submac pointer to the SubMAC descriptor
|
||||
*/
|
||||
|
||||
@ -473,6 +473,8 @@ static inline uint32_t _irt_ms(uint16_t irt, bool greater_irt)
|
||||
if (greater_irt && (factor < 0)) {
|
||||
factor = -factor;
|
||||
}
|
||||
/* random factor is also in ms, but it is supposed to be without unit,
|
||||
* so we need to divide by ms */
|
||||
irt_ms += (factor * irt_ms) / MS_PER_SEC;
|
||||
return irt_ms;
|
||||
}
|
||||
@ -480,12 +482,18 @@ static inline uint32_t _irt_ms(uint16_t irt, bool greater_irt)
|
||||
static inline uint32_t _sub_rt_ms(uint32_t rt_prev_ms, uint16_t mrt)
|
||||
{
|
||||
uint32_t sub_rt_ms = (2 * rt_prev_ms) +
|
||||
((get_rand_ms_factor() * rt_prev_ms) / MS_PER_SEC);
|
||||
/* random factor is also in ms, but it is supposed to
|
||||
* be without unit, so we need to divide by ms */
|
||||
((int32_t)(get_rand_ms_factor() * rt_prev_ms) /
|
||||
(int32_t)MS_PER_SEC);
|
||||
|
||||
if (sub_rt_ms > (mrt * MS_PER_SEC)) {
|
||||
uint32_t mrt_ms = mrt * MS_PER_SEC;
|
||||
|
||||
sub_rt_ms = mrt_ms + ((get_rand_ms_factor() * mrt_ms) / MS_PER_SEC);
|
||||
/* random factor is also in ms, but it is supposed to be without unit,
|
||||
* so we need to divide by ms */
|
||||
sub_rt_ms = mrt_ms + ((int32_t)(get_rand_ms_factor() * mrt_ms) /
|
||||
(int32_t)MS_PER_SEC);
|
||||
}
|
||||
return sub_rt_ms;
|
||||
}
|
||||
|
||||
@ -47,6 +47,7 @@ config GNRC_IPV6_NIB_QUEUE_PKT
|
||||
|
||||
config GNRC_IPV6_NIB_ARSM
|
||||
bool "Use classic NDP address resolution state-machine"
|
||||
default y if USEMODULE_GNRC_IPV6_NIB_6LBR
|
||||
default n if USEMODULE_GNRC_IPV6_NIB_6LN && !GNRC_IPV6_NIB_6LR
|
||||
default y
|
||||
|
||||
|
||||
@ -235,11 +235,17 @@ static int picolibc_get(FILE *file)
|
||||
FILE picolibc_stdio =
|
||||
FDEV_SETUP_STREAM(picolibc_put, picolibc_get, picolibc_flush, _FDEV_SETUP_RW);
|
||||
|
||||
#ifdef PICOLIBC_STDIO_GLOBALS
|
||||
FILE *const stdout = &picolibc_stdio;
|
||||
FILE *const stdin = &picolibc_stdio;
|
||||
FILE *const stderr = &picolibc_stdio;
|
||||
#else
|
||||
FILE *const __iob[] = {
|
||||
&picolibc_stdio, /* stdin */
|
||||
&picolibc_stdio, /* stdout */
|
||||
&picolibc_stdio, /* stderr */
|
||||
&picolibc_stdio, /* stdin */
|
||||
&picolibc_stdio, /* stdout */
|
||||
&picolibc_stdio, /* stderr */
|
||||
};
|
||||
#endif
|
||||
|
||||
#include <thread.h>
|
||||
/**
|
||||
|
||||
@ -139,6 +139,10 @@ void ieee802154_submac_ack_timer_cancel(ieee802154_submac_t *submac)
|
||||
{
|
||||
(void)submac;
|
||||
ztimer_remove(ZTIMER_USEC, &ack_timer);
|
||||
/* Avoid race conditions between RX_DONE and ACK_TIMEOUT */
|
||||
if (ev_ack_timeout.list_node.next) {
|
||||
event_cancel(EVENT_PRIO_HIGHEST, &ev_ack_timeout);
|
||||
}
|
||||
}
|
||||
|
||||
static void _ack_timeout(void *arg)
|
||||
|
||||
@ -60,6 +60,10 @@ static void *_wait_recv(void *arg)
|
||||
puts("Received ACK from network");
|
||||
break;
|
||||
|
||||
case SEMTECH_LORAMAC_TX_SCHEDULE:
|
||||
puts("The Network Server has pending data");
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user