mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
Merge pull request #17436 from Ollrogge/reserve_flash
cpu: add flash_writable section to linker script
This commit is contained in:
commit
facb5e633f
@ -12,6 +12,7 @@ config CPU_FAM_CC2538
|
|||||||
select HAS_CPU_CC2538
|
select HAS_CPU_CC2538
|
||||||
select HAS_PERIPH_CPUID
|
select HAS_PERIPH_CPUID
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_GPIO
|
select HAS_PERIPH_GPIO
|
||||||
select HAS_PERIPH_GPIO_IRQ
|
select HAS_PERIPH_GPIO_IRQ
|
||||||
|
@ -3,6 +3,7 @@ CPU_FAM = cc2538
|
|||||||
|
|
||||||
FEATURES_PROVIDED += periph_cpuid
|
FEATURES_PROVIDED += periph_cpuid
|
||||||
FEATURES_PROVIDED += periph_flashpage
|
FEATURES_PROVIDED += periph_flashpage
|
||||||
|
FEATURES_PROVIDED += periph_flashpage_in_address_space
|
||||||
FEATURES_PROVIDED += periph_flashpage_pagewise
|
FEATURES_PROVIDED += periph_flashpage_pagewise
|
||||||
FEATURES_PROVIDED += periph_gpio periph_gpio_irq
|
FEATURES_PROVIDED += periph_gpio periph_gpio_irq
|
||||||
FEATURES_PROVIDED += periph_hwrng
|
FEATURES_PROVIDED += periph_hwrng
|
||||||
|
@ -233,6 +233,10 @@ SECTIONS
|
|||||||
_eheap1 = ORIGIN(bkup_ram) + LENGTH(bkup_ram);
|
_eheap1 = ORIGIN(bkup_ram) + LENGTH(bkup_ram);
|
||||||
} > bkup_ram
|
} > bkup_ram
|
||||||
|
|
||||||
|
.flash_writable (NOLOAD) : {
|
||||||
|
KEEP(*(SORT(.flash_writable.*)))
|
||||||
|
} > rom
|
||||||
|
|
||||||
.end_fw (NOLOAD) : ALIGN(4) {
|
.end_fw (NOLOAD) : ALIGN(4) {
|
||||||
_end_fw = . ;
|
_end_fw = . ;
|
||||||
} > rom
|
} > rom
|
||||||
|
@ -10,6 +10,7 @@ config CPU_COMMON_EFM32
|
|||||||
select HAS_CPU_EFM32
|
select HAS_CPU_EFM32
|
||||||
select HAS_PERIPH_CPUID
|
select HAS_PERIPH_CPUID
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_GPIO
|
select HAS_PERIPH_GPIO
|
||||||
select HAS_PERIPH_GPIO_IRQ
|
select HAS_PERIPH_GPIO_IRQ
|
||||||
|
@ -11,6 +11,7 @@ endif
|
|||||||
FEATURES_PROVIDED += arch_efm32
|
FEATURES_PROVIDED += arch_efm32
|
||||||
FEATURES_PROVIDED += periph_cpuid
|
FEATURES_PROVIDED += periph_cpuid
|
||||||
FEATURES_PROVIDED += periph_flashpage
|
FEATURES_PROVIDED += periph_flashpage
|
||||||
|
FEATURES_PROVIDED += periph_flashpage_in_address_space
|
||||||
FEATURES_PROVIDED += periph_flashpage_pagewise
|
FEATURES_PROVIDED += periph_flashpage_pagewise
|
||||||
FEATURES_PROVIDED += periph_gpio periph_gpio_irq
|
FEATURES_PROVIDED += periph_gpio periph_gpio_irq
|
||||||
FEATURES_PROVIDED += periph_rtt_set_counter
|
FEATURES_PROVIDED += periph_rtt_set_counter
|
||||||
|
@ -12,6 +12,7 @@ config CPU_FAM_GD32V
|
|||||||
select HAS_PERIPH_CLIC
|
select HAS_PERIPH_CLIC
|
||||||
select HAS_PERIPH_GPIO
|
select HAS_PERIPH_GPIO
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_PM
|
select HAS_PERIPH_PM
|
||||||
select HAS_PERIPH_TIMER
|
select HAS_PERIPH_TIMER
|
||||||
|
@ -7,6 +7,7 @@ FEATURES_PROVIDED += periph_timer_periodic
|
|||||||
FEATURES_PROVIDED += periph_wdt
|
FEATURES_PROVIDED += periph_wdt
|
||||||
FEATURES_PROVIDED += periph_pm
|
FEATURES_PROVIDED += periph_pm
|
||||||
FEATURES_PROVIDED += periph_flashpage
|
FEATURES_PROVIDED += periph_flashpage
|
||||||
|
FEATURES_PROVIDED += periph_flashpage_in_address_space
|
||||||
FEATURES_PROVIDED += periph_flashpage_pagewise
|
FEATURES_PROVIDED += periph_flashpage_pagewise
|
||||||
|
|
||||||
include $(RIOTCPU)/riscv_common/Makefile.features
|
include $(RIOTCPU)/riscv_common/Makefile.features
|
||||||
|
@ -30,6 +30,7 @@ config CPU_FAM_K
|
|||||||
bool
|
bool
|
||||||
select CPU_COMMON_KINETIS
|
select CPU_COMMON_KINETIS
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_MCG
|
select HAS_PERIPH_MCG
|
||||||
|
|
||||||
@ -42,6 +43,7 @@ config CPU_FAM_W
|
|||||||
bool
|
bool
|
||||||
select CPU_COMMON_KINETIS
|
select CPU_COMMON_KINETIS
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_MCG
|
select HAS_PERIPH_MCG
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ include $(LAST_MAKEFILEDIR)/kinetis-info.mk
|
|||||||
|
|
||||||
ifneq (,$(filter k w,$(CPU_FAM)))
|
ifneq (,$(filter k w,$(CPU_FAM)))
|
||||||
FEATURES_PROVIDED += periph_flashpage
|
FEATURES_PROVIDED += periph_flashpage
|
||||||
|
FEATURES_PROVIDED += periph_flashpage_in_address_space
|
||||||
FEATURES_PROVIDED += periph_flashpage_pagewise
|
FEATURES_PROVIDED += periph_flashpage_pagewise
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -33,6 +33,7 @@ config CPU_ARCH_MSP430
|
|||||||
select HAS_ARCH_MSP430
|
select HAS_ARCH_MSP430
|
||||||
select HAS_DBGPIN
|
select HAS_DBGPIN
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_NEWLIB
|
select HAS_NEWLIB
|
||||||
select HAS_PERIPH_PM
|
select HAS_PERIPH_PM
|
||||||
|
@ -6,5 +6,6 @@ FEATURES_PROVIDED += arch_msp430
|
|||||||
FEATURES_PROVIDED += dbgpin
|
FEATURES_PROVIDED += dbgpin
|
||||||
FEATURES_PROVIDED += newlib
|
FEATURES_PROVIDED += newlib
|
||||||
FEATURES_PROVIDED += periph_flashpage
|
FEATURES_PROVIDED += periph_flashpage
|
||||||
|
FEATURES_PROVIDED += periph_flashpage_in_address_space
|
||||||
FEATURES_PROVIDED += periph_flashpage_pagewise
|
FEATURES_PROVIDED += periph_flashpage_pagewise
|
||||||
FEATURES_PROVIDED += periph_pm
|
FEATURES_PROVIDED += periph_pm
|
||||||
|
@ -12,6 +12,10 @@ SECTIONS
|
|||||||
_srom = ORIGIN(ROM);
|
_srom = ORIGIN(ROM);
|
||||||
_erom = ORIGIN(ROM) + LENGTH(ROM);
|
_erom = ORIGIN(ROM) + LENGTH(ROM);
|
||||||
|
|
||||||
|
.flash_writable (NOLOAD) : {
|
||||||
|
KEEP(*(SORT(.flash_writable.*)))
|
||||||
|
} > ROM
|
||||||
|
|
||||||
.end_fw (NOLOAD) : ALIGN(4) {
|
.end_fw (NOLOAD) : ALIGN(4) {
|
||||||
_end_fw = . ;
|
_end_fw = . ;
|
||||||
} > ROM
|
} > ROM
|
||||||
|
@ -9,6 +9,7 @@ config CPU_COMMON_NRF5X
|
|||||||
select HAS_BLE_NIMBLE
|
select HAS_BLE_NIMBLE
|
||||||
select HAS_PERIPH_CPUID
|
select HAS_PERIPH_CPUID
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_GPIO
|
select HAS_PERIPH_GPIO
|
||||||
select HAS_PERIPH_GPIO_IRQ
|
select HAS_PERIPH_GPIO_IRQ
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# Put defined MCU peripherals here (in alphabetical order)
|
# Put defined MCU peripherals here (in alphabetical order)
|
||||||
FEATURES_PROVIDED += periph_cpuid
|
FEATURES_PROVIDED += periph_cpuid
|
||||||
FEATURES_PROVIDED += periph_flashpage
|
FEATURES_PROVIDED += periph_flashpage
|
||||||
|
FEATURES_PROVIDED += periph_flashpage_in_address_space
|
||||||
FEATURES_PROVIDED += periph_flashpage_pagewise
|
FEATURES_PROVIDED += periph_flashpage_pagewise
|
||||||
FEATURES_PROVIDED += periph_gpio periph_gpio_irq
|
FEATURES_PROVIDED += periph_gpio periph_gpio_irq
|
||||||
FEATURES_PROVIDED += periph_timer_periodic
|
FEATURES_PROVIDED += periph_timer_periodic
|
||||||
|
@ -9,6 +9,7 @@ config CPU_FAM_NRF9160
|
|||||||
select HAS_CPU_NRF9160
|
select HAS_CPU_NRF9160
|
||||||
select HAS_PERIPH_CPUID
|
select HAS_PERIPH_CPUID
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_GPIO
|
select HAS_PERIPH_GPIO
|
||||||
select HAS_PERIPH_GPIO_IRQ
|
select HAS_PERIPH_GPIO_IRQ
|
||||||
|
@ -229,6 +229,10 @@ SECTIONS
|
|||||||
PROVIDE( _sp = . );
|
PROVIDE( _sp = . );
|
||||||
} >ram AT>ram :ram
|
} >ram AT>ram :ram
|
||||||
|
|
||||||
|
.flash_writable (NOLOAD) : {
|
||||||
|
KEEP(*(SORT(.flash_writable.*)))
|
||||||
|
} > rom
|
||||||
|
|
||||||
.end_fw (NOLOAD) : ALIGN(4) {
|
.end_fw (NOLOAD) : ALIGN(4) {
|
||||||
_end_fw = . ;
|
_end_fw = . ;
|
||||||
} > flash
|
} > flash
|
||||||
|
@ -9,6 +9,7 @@ config CPU_COMMON_SAM0
|
|||||||
bool
|
bool
|
||||||
select HAS_PERIPH_CPUID
|
select HAS_PERIPH_CPUID
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_FLASHPAGE_RWEE
|
select HAS_PERIPH_FLASHPAGE_RWEE
|
||||||
select HAS_PERIPH_GPIO
|
select HAS_PERIPH_GPIO
|
||||||
|
@ -8,6 +8,7 @@ ifeq (,$(filter $(CPU_MODELS_WITHOUT_DMA),$(CPU_MODEL)))
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
FEATURES_PROVIDED += periph_flashpage
|
FEATURES_PROVIDED += periph_flashpage
|
||||||
|
FEATURES_PROVIDED += periph_flashpage_in_address_space
|
||||||
FEATURES_PROVIDED += periph_flashpage_pagewise
|
FEATURES_PROVIDED += periph_flashpage_pagewise
|
||||||
FEATURES_PROVIDED += periph_flashpage_rwee
|
FEATURES_PROVIDED += periph_flashpage_rwee
|
||||||
FEATURES_PROVIDED += periph_gpio periph_gpio_irq
|
FEATURES_PROVIDED += periph_gpio periph_gpio_irq
|
||||||
|
@ -14,6 +14,7 @@ FEATURES_PROVIDED += periph_uart_nonblocking
|
|||||||
|
|
||||||
ifneq (,$(filter $(CPU_FAM),f0 f1 f3 g0 g4 l0 l1 l4 l5 u5 wb wl))
|
ifneq (,$(filter $(CPU_FAM),f0 f1 f3 g0 g4 l0 l1 l4 l5 u5 wb wl))
|
||||||
FEATURES_PROVIDED += periph_flashpage
|
FEATURES_PROVIDED += periph_flashpage
|
||||||
|
FEATURES_PROVIDED += periph_flashpage_in_address_space
|
||||||
FEATURES_PROVIDED += periph_flashpage_pagewise
|
FEATURES_PROVIDED += periph_flashpage_pagewise
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ config CPU_FAM_F0
|
|||||||
select CPU_CORE_CORTEX_M0
|
select CPU_CORE_CORTEX_M0
|
||||||
select HAS_CPU_STM32F0
|
select HAS_CPU_STM32F0
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_FLASHPAGE_RAW
|
select HAS_PERIPH_FLASHPAGE_RAW
|
||||||
select HAS_PERIPH_WDT
|
select HAS_PERIPH_WDT
|
||||||
|
@ -13,6 +13,7 @@ config CPU_FAM_F1
|
|||||||
select HAS_BOOTLOADER_STM32
|
select HAS_BOOTLOADER_STM32
|
||||||
select HAS_CPU_STM32F1
|
select HAS_CPU_STM32F1
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_FLASHPAGE_RAW
|
select HAS_PERIPH_FLASHPAGE_RAW
|
||||||
select HAS_PERIPH_RTT_SET_COUNTER
|
select HAS_PERIPH_RTT_SET_COUNTER
|
||||||
|
@ -11,6 +11,7 @@ config CPU_FAM_F3
|
|||||||
select CPU_CORE_CORTEX_M4F
|
select CPU_CORE_CORTEX_M4F
|
||||||
select HAS_CPU_STM32F3
|
select HAS_CPU_STM32F3
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_FLASHPAGE_RAW
|
select HAS_PERIPH_FLASHPAGE_RAW
|
||||||
select HAS_PERIPH_RTC_MEM
|
select HAS_PERIPH_RTC_MEM
|
||||||
|
@ -11,6 +11,7 @@ config CPU_FAM_G0
|
|||||||
select CPU_CORE_CORTEX_M0PLUS
|
select CPU_CORE_CORTEX_M0PLUS
|
||||||
select HAS_CPU_STM32G0
|
select HAS_CPU_STM32G0
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_FLASHPAGE_RAW
|
select HAS_PERIPH_FLASHPAGE_RAW
|
||||||
select HAS_PERIPH_VBAT
|
select HAS_PERIPH_VBAT
|
||||||
|
@ -12,6 +12,7 @@ config CPU_FAM_G4
|
|||||||
select HAS_CPU_STM32G4
|
select HAS_CPU_STM32G4
|
||||||
select HAS_CORTEXM_MPU
|
select HAS_CORTEXM_MPU
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_HWRNG
|
select HAS_PERIPH_HWRNG
|
||||||
select HAS_PERIPH_VBAT
|
select HAS_PERIPH_VBAT
|
||||||
|
@ -11,6 +11,7 @@ config CPU_FAM_L0
|
|||||||
select CPU_CORE_CORTEX_M0PLUS
|
select CPU_CORE_CORTEX_M0PLUS
|
||||||
select HAS_CPU_STM32L0
|
select HAS_CPU_STM32L0
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_EEPROM
|
select HAS_PERIPH_EEPROM
|
||||||
select HAS_PERIPH_RTC_MEM
|
select HAS_PERIPH_RTC_MEM
|
||||||
|
@ -12,6 +12,7 @@ config CPU_FAM_L1
|
|||||||
select HAS_CPU_STM32L1
|
select HAS_CPU_STM32L1
|
||||||
select HAS_CORTEXM_MPU
|
select HAS_CORTEXM_MPU
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_EEPROM
|
select HAS_PERIPH_EEPROM
|
||||||
select HAS_PERIPH_RTC_MEM
|
select HAS_PERIPH_RTC_MEM
|
||||||
|
@ -12,6 +12,7 @@ config CPU_FAM_L4
|
|||||||
select HAS_CPU_STM32L4
|
select HAS_CPU_STM32L4
|
||||||
select HAS_CORTEXM_MPU
|
select HAS_CORTEXM_MPU
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_HWRNG
|
select HAS_PERIPH_HWRNG
|
||||||
select HAS_PERIPH_RTC_MEM
|
select HAS_PERIPH_RTC_MEM
|
||||||
|
@ -11,6 +11,7 @@ config CPU_FAM_L5
|
|||||||
select CPU_CORE_CORTEX_M33
|
select CPU_CORE_CORTEX_M33
|
||||||
select HAS_CPU_STM32L5
|
select HAS_CPU_STM32L5
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_HWRNG
|
select HAS_PERIPH_HWRNG
|
||||||
select HAS_PERIPH_RTC_MEM
|
select HAS_PERIPH_RTC_MEM
|
||||||
|
@ -12,6 +12,7 @@ config CPU_FAM_U5
|
|||||||
select HAS_BACKUP_RAM
|
select HAS_BACKUP_RAM
|
||||||
select HAS_CPU_STM32U5
|
select HAS_CPU_STM32U5
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_HWRNG
|
select HAS_PERIPH_HWRNG
|
||||||
select HAS_PERIPH_RTC_MEM
|
select HAS_PERIPH_RTC_MEM
|
||||||
|
@ -11,6 +11,7 @@ config CPU_FAM_WB
|
|||||||
select CPU_CORE_CORTEX_M4
|
select CPU_CORE_CORTEX_M4
|
||||||
select HAS_CPU_STM32WB
|
select HAS_CPU_STM32WB
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_HWRNG
|
select HAS_PERIPH_HWRNG
|
||||||
select HAS_PERIPH_RTC_MEM
|
select HAS_PERIPH_RTC_MEM
|
||||||
|
@ -12,6 +12,7 @@ config CPU_FAM_WL
|
|||||||
select CPU_CORE_CORTEX_M4
|
select CPU_CORE_CORTEX_M4
|
||||||
select HAS_CPU_STM32WL
|
select HAS_CPU_STM32WL
|
||||||
select HAS_PERIPH_FLASHPAGE
|
select HAS_PERIPH_FLASHPAGE
|
||||||
|
select HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
select HAS_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
select HAS_PERIPH_RTC_MEM
|
select HAS_PERIPH_RTC_MEM
|
||||||
select HAS_PERIPH_VBAT
|
select HAS_PERIPH_VBAT
|
||||||
|
@ -151,6 +151,31 @@ enum {
|
|||||||
#error "periph/flashpage: FLASHPAGE_NUMOF not defined"
|
#error "periph/flashpage: FLASHPAGE_NUMOF not defined"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef MODULE_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
|
/**
|
||||||
|
* @def FLASH_WRITABLE_INIT(name, size)
|
||||||
|
* @brief Define an array in flash memory
|
||||||
|
*
|
||||||
|
* This macro defines an array stored in the ".flash_writable" section
|
||||||
|
* which is part of flash memory. With this macro it is possible to
|
||||||
|
* reserve flash memory at build time.
|
||||||
|
*
|
||||||
|
* E.g. FLASH_WRITABLE_INIT(a, 2); will create a array with name 'a'
|
||||||
|
* of size 2 * @ref FLASHPAGE_SIZE which is stored in flash memory and takes up
|
||||||
|
* 2 flash pages.
|
||||||
|
*
|
||||||
|
* Symbols created by using this macro are sorted in ascending order by name.
|
||||||
|
* Therefore, &a < &b where a and b are arrays created using this macro.
|
||||||
|
*
|
||||||
|
* @param[in] name name of the array
|
||||||
|
* @param[in] size size of the array in unit of @ref FLASHPAGE_SIZE
|
||||||
|
*/
|
||||||
|
#define FLASH_WRITABLE_INIT(name, size) \
|
||||||
|
__attribute__((aligned(FLASHPAGE_SIZE))) \
|
||||||
|
__attribute__((section(".flash_writable." #name))) \
|
||||||
|
static const uint8_t name [size * FLASHPAGE_SIZE]
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the page size of the given page number
|
* @brief Get the page size of the given page number
|
||||||
*
|
*
|
||||||
|
@ -14,6 +14,11 @@ menuconfig MODULE_PERIPH_FLASHPAGE
|
|||||||
# periph_init_% modules are handled in Makefile. We need to define them to keep
|
# periph_init_% modules are handled in Makefile. We need to define them to keep
|
||||||
# the list the same for now. We should be able to remove them later on.
|
# the list the same for now. We should be able to remove them later on.
|
||||||
|
|
||||||
|
config MODULE_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
|
bool "Static memory sections can fundamentally be turned into flash pages"
|
||||||
|
depends on HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
|
depends on MODULE_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
|
|
||||||
config MODULE_PERIPH_INIT_FLASHPAGE
|
config MODULE_PERIPH_INIT_FLASHPAGE
|
||||||
bool "Auto initialize Flashpage peripheral"
|
bool "Auto initialize Flashpage peripheral"
|
||||||
default y if MODULE_PERIPH_INIT
|
default y if MODULE_PERIPH_INIT
|
||||||
|
@ -73,6 +73,12 @@ config HAS_ETHERNET
|
|||||||
help
|
help
|
||||||
Indicates that Ethernet connectivity is present.
|
Indicates that Ethernet connectivity is present.
|
||||||
|
|
||||||
|
config HAS_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
|
bool
|
||||||
|
help
|
||||||
|
Indicates that static memory sections can fundamentally be turned
|
||||||
|
into flash pages.
|
||||||
|
|
||||||
config HAS_HIGHLEVEL_STDIO
|
config HAS_HIGHLEVEL_STDIO
|
||||||
bool
|
bool
|
||||||
help
|
help
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
config APPLICATION
|
config APPLICATION
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
imply MODULE_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
imply MODULE_PERIPH_FLASHPAGE_PAGEWISE
|
imply MODULE_PERIPH_FLASHPAGE_PAGEWISE
|
||||||
imply MODULE_PERIPH_FLASHPAGE_RWEE
|
imply MODULE_PERIPH_FLASHPAGE_RWEE
|
||||||
depends on TEST_KCONFIG
|
depends on TEST_KCONFIG
|
||||||
|
@ -2,6 +2,7 @@ BOARD ?= iotlab-m3
|
|||||||
include ../Makefile.tests_common
|
include ../Makefile.tests_common
|
||||||
|
|
||||||
FEATURES_REQUIRED += periph_flashpage
|
FEATURES_REQUIRED += periph_flashpage
|
||||||
|
FEATURES_OPTIONAL += periph_flashpage_in_address_space
|
||||||
FEATURES_OPTIONAL += periph_flashpage_pagewise
|
FEATURES_OPTIONAL += periph_flashpage_pagewise
|
||||||
FEATURES_OPTIONAL += periph_flashpage_rwee
|
FEATURES_OPTIONAL += periph_flashpage_rwee
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -55,7 +56,19 @@ static char raw_buf[RAW_BUF_SIZE] ALIGNMENT_ATTR;
|
|||||||
* requires 64 bit alignment.
|
* requires 64 bit alignment.
|
||||||
*/
|
*/
|
||||||
static uint8_t page_mem[FLASHPAGE_SIZE] ALIGNMENT_ATTR;
|
static uint8_t page_mem[FLASHPAGE_SIZE] ALIGNMENT_ATTR;
|
||||||
#endif
|
|
||||||
|
#ifdef MODULE_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
|
/**
|
||||||
|
* @brief Reserve 1 page of flash memory
|
||||||
|
*/
|
||||||
|
FLASH_WRITABLE_INIT(_backing_memory, 0x1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @brief Created to test the sorting of symbols in .flash_writable section
|
||||||
|
*/
|
||||||
|
FLASH_WRITABLE_INIT(_abacking_memory, 0x1);
|
||||||
|
#endif /* MODULE_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE */
|
||||||
|
#endif /* MODULE_PERIPH_FLASHPAGE_PAGEWISE */
|
||||||
|
|
||||||
static int getpage(const char *str)
|
static int getpage(const char *str)
|
||||||
{
|
{
|
||||||
@ -361,7 +374,63 @@ static int cmd_test_last(int argc, char **argv)
|
|||||||
puts("wrote local page buffer to last flash page");
|
puts("wrote local page buffer to last flash page");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
#ifdef MODULE_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
|
/**
|
||||||
|
* @brief Does a write and verify test on reserved page
|
||||||
|
*/
|
||||||
|
static int cmd_test_reserved(int argc, char **argv)
|
||||||
|
{
|
||||||
|
(void) argc;
|
||||||
|
(void) argv;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Arrays created by the FLASH_WRITABLE_INIT macro should be sorted in
|
||||||
|
* ascending order by name.
|
||||||
|
*/
|
||||||
|
assert(&_abacking_memory < &_backing_memory);
|
||||||
|
|
||||||
|
char fill = 'a';
|
||||||
|
const char sig[] = {"RIOT"};
|
||||||
|
unsigned page = flashpage_page((void *)_backing_memory);
|
||||||
|
|
||||||
|
printf("Reserved page num: %u \n", page);
|
||||||
|
|
||||||
|
flashpage_read(page, page_mem);
|
||||||
|
|
||||||
|
/* test is running for the first time so initialize flash */
|
||||||
|
if (memcmp(sig, &page_mem[1], sizeof(sig)) != 0) {
|
||||||
|
page_mem[0] = 0;
|
||||||
|
memcpy(&page_mem[1], sig, sizeof(sig));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
page_mem[0]++;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Since the last firmware update this test has been run "
|
||||||
|
"%u times \n", page_mem[0]);
|
||||||
|
|
||||||
|
/* fill memory after counter and signature */
|
||||||
|
for (unsigned i = 0x1 + sizeof(sig); i < sizeof(page_mem); i++) {
|
||||||
|
page_mem[i] = (uint8_t)fill++;
|
||||||
|
if (fill > 'z') {
|
||||||
|
fill = 'a';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flashpage_write_and_verify(page, page_mem) != FLASHPAGE_OK) {
|
||||||
|
puts("error verifying the content of reserved page");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
puts("wrote local page buffer to reserved flash page");
|
||||||
|
puts("\nWhen running on a bootloader, as an extra check, try restarting "
|
||||||
|
"the board and check whether this application still comes up.");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif /* MODULE_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE */
|
||||||
|
#endif /* MODULE_PERIPH_FLASHPAGE_PAGEWISE */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Does a short raw write on last page available
|
* @brief Does a short raw write on last page available
|
||||||
@ -641,6 +710,9 @@ static const shell_command_t shell_commands[] = {
|
|||||||
{ "edit", "Write bytes to the local page buffer", cmd_edit },
|
{ "edit", "Write bytes to the local page buffer", cmd_edit },
|
||||||
{ "test", "Write and verify test pattern", cmd_test },
|
{ "test", "Write and verify test pattern", cmd_test },
|
||||||
{ "test_last_pagewise", "Write and verify test pattern on last page available", cmd_test_last },
|
{ "test_last_pagewise", "Write and verify test pattern on last page available", cmd_test_last },
|
||||||
|
#endif
|
||||||
|
#ifdef MODULE_PERIPH_FLASHPAGE_IN_ADDRESS_SPACE
|
||||||
|
{ "test_reserved_pagewise", "Write and verify short write on reserved page", cmd_test_reserved},
|
||||||
#endif
|
#endif
|
||||||
{ "test_last_raw", "Write and verify raw short write on last page available", cmd_test_last_raw },
|
{ "test_last_raw", "Write and verify raw short write on last page available", cmd_test_last_raw },
|
||||||
#ifdef FLASHPAGE_RWWEE_NUMOF
|
#ifdef FLASHPAGE_RWWEE_NUMOF
|
||||||
|
@ -29,6 +29,15 @@ def testfunc(child):
|
|||||||
child.expect_exact('wrote local page buffer to last flash page')
|
child.expect_exact('wrote local page buffer to last flash page')
|
||||||
child.expect('>')
|
child.expect('>')
|
||||||
|
|
||||||
|
# check if board has flash page reservation capability and if so test that as well
|
||||||
|
# capability is deduced from help contents
|
||||||
|
child.sendline("help")
|
||||||
|
index = child.expect(['test_reserved_pagewise', '>'])
|
||||||
|
if index == 0:
|
||||||
|
child.sendline("test_reserved_pagewise")
|
||||||
|
child.expect_exact('wrote local page buffer to reserved flash page')
|
||||||
|
child.expect('>')
|
||||||
|
|
||||||
# check if board has RWWEE capability and if so test that as well
|
# check if board has RWWEE capability and if so test that as well
|
||||||
# capability is deduced from help contents
|
# capability is deduced from help contents
|
||||||
child.sendline("help")
|
child.sendline("help")
|
||||||
|
Loading…
Reference in New Issue
Block a user