From 379321033d00f5fc41080eeca9026b092cd328c7 Mon Sep 17 00:00:00 2001 From: Rene Hopf Date: Tue, 26 Sep 2017 00:01:38 +0200 Subject: [PATCH] flashconf --- shared/flashconf.c | 67 ++++++++++++++++++++++++++++++++ stm32f303/Makefile | 5 ++- stm32f303/STM32F303CBTx_FLASH.ld | 2 +- 3 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 shared/flashconf.c diff --git a/shared/flashconf.c b/shared/flashconf.c new file mode 100644 index 00000000..491ceb48 --- /dev/null +++ b/shared/flashconf.c @@ -0,0 +1,67 @@ +#include +#include +#include +#include "commands.h" +#include "stm32f3xx_hal.h" +#include "hal.h" + +char config[1 * 1024]; +const char *config_ro = (char *)0x0801fc00; + +void flashloadconf(char *ptr) { + strncpy(config, config_ro, sizeof(config)); +} +COMMAND("flashloadconf", flashloadconf, "load config from flash"); + +void flashsaveconf(char *ptr) { + printf("erasing flash page...\n"); + HAL_FLASH_Unlock(); + uint32_t PageError = 0; + HAL_StatusTypeDef status; + FLASH_EraseInitTypeDef eraseinitstruct; + eraseinitstruct.TypeErase = FLASH_TYPEERASE_PAGES; + eraseinitstruct.PageAddress = (uint32_t)config_ro; + eraseinitstruct.NbPages = 1; + status = HAL_FLASHEx_Erase(&eraseinitstruct, &PageError); + + if(status != HAL_OK) { + printf("error!\n"); + HAL_FLASH_Lock(); + return; + } + printf("saving conf\n"); + int ret = 0; + for(int i = 0;i