From d38f6c68b5df8ed65e0435471286aee8594b1ef7 Mon Sep 17 00:00:00 2001 From: Ollrogge Date: Tue, 19 Oct 2021 09:30:48 +0200 Subject: [PATCH] cpu/cortexm_common: extend flashpage API --- cpu/cortexm_common/ldscripts/cortexm_base.ld | 8 +++++ cpu/cortexm_common/periph/flashpage.c | 37 ++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 cpu/cortexm_common/periph/flashpage.c diff --git a/cpu/cortexm_common/ldscripts/cortexm_base.ld b/cpu/cortexm_common/ldscripts/cortexm_base.ld index d8a11925e77e..91428dcc4311 100644 --- a/cpu/cortexm_common/ldscripts/cortexm_base.ld +++ b/cpu/cortexm_common/ldscripts/cortexm_base.ld @@ -207,6 +207,10 @@ SECTIONS _sram = ORIGIN(ram); _eram = ORIGIN(ram) + LENGTH(ram); + /* Populate information about rom size */ + _srom = ORIGIN(rom); + _erom = ORIGIN(rom) + LENGTH(rom); + _sbackup_data_load = LOADADDR(.backup.data); .backup.data : ALIGN(4) { _sbackup_data = .; @@ -228,4 +232,8 @@ SECTIONS _sheap1 = . ; _eheap1 = ORIGIN(bkup_ram) + LENGTH(bkup_ram); } > bkup_ram + + .end_fw (NOLOAD) : ALIGN(4) { + _end_fw = . ; + } > rom } diff --git a/cpu/cortexm_common/periph/flashpage.c b/cpu/cortexm_common/periph/flashpage.c new file mode 100644 index 000000000000..3ab6c191f524 --- /dev/null +++ b/cpu/cortexm_common/periph/flashpage.c @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2021 Freie Universität Berlin + * + * This file is subject to the terms and conditions of the GNU Lesser + * General Public License v2.1. See the file LICENSE in the top level + * directory for more details. + */ + +/** + * @ingroup cpu_cortexm_common + * @ingroup drivers_periph_pm + * @{ + * @file + * @brief common periph/flashpage functions + * + * @author Nils Ollrogge + * @} + */ + +#include "periph/flashpage.h" + +/** + * @brief Memory markers, defined in the linker script + * @{ + */ +extern uint32_t _end_fw; +extern uint32_t _erom; + +unsigned flashpage_first_free(void) +{ + return flashpage_page(&_end_fw) + 1; +} + +unsigned flashpage_last_free(void) +{ + return flashpage_page(&_erom) - 1; +}