From 49be70c667ce58bee67fcf2818d539f00e63aa7a Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Fri, 22 Apr 2022 18:22:33 +1000 Subject: [PATCH] Draft flash settings --- .../drivers/bl702_driver/bl702_flash.ld | 2 +- source/Core/BSP/Magic/flash.c | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/source/Core/BSP/Magic/bl_mcu_sdk/drivers/bl702_driver/bl702_flash.ld b/source/Core/BSP/Magic/bl_mcu_sdk/drivers/bl702_driver/bl702_flash.ld index e637afb1..3fb9b5ec 100644 --- a/source/Core/BSP/Magic/bl_mcu_sdk/drivers/bl702_driver/bl702_flash.ld +++ b/source/Core/BSP/Magic/bl_mcu_sdk/drivers/bl702_driver/bl702_flash.ld @@ -21,7 +21,7 @@ StackSize = 0x1000; /* 4KB */ MEMORY { - xip_memory (rx) : ORIGIN = 0x23000000, LENGTH = 1024K + xip_memory (rx) : ORIGIN = 0x23000000, LENGTH = 1022K /* 1024K, less the two pages we are using for settings and logo*/ itcm_memory (rx) : ORIGIN = 0x22014000, LENGTH = 16K dtcm_memory (rx) : ORIGIN = 0x42018000, LENGTH = 16K ram_memory (!rx) : ORIGIN = 0x4201C000, LENGTH = 80K diff --git a/source/Core/BSP/Magic/flash.c b/source/Core/BSP/Magic/flash.c index 14ef55d7..f470e541 100644 --- a/source/Core/BSP/Magic/flash.c +++ b/source/Core/BSP/Magic/flash.c @@ -7,17 +7,25 @@ #include "BSP.h" #include "BSP_Flash.h" +#include "hal_flash.h" #include "string.h" -#define FMC_PAGE_SIZE ((uint16_t)0x400U) -// static uint16_t settings_page[FMC_PAGE_SIZE] __attribute__ ((section (".settings_page"))); -// Linker script doesnt want to play, so for now its hard coded -#define SETTINGS_START_PAGE (0x08000000 + (127 * 1024)) + +#define FLASH_PAGE_SIZE ((uint16_t)1024) + +#define SETTINGS_START_PAGE (1023 * 1024) // Hal auto offsets base addr +#define SETTINGS_READ_PAGE 0x23000000 + SETTINGS_START_PAGE uint8_t flash_save_buffer(const uint8_t *buffer, const uint16_t length) { - // #TODO + flash_erase(SETTINGS_START_PAGE, length); + + flash_write(SETTINGS_START_PAGE, buffer, sizeof(length)); + return 1; } void flash_read_buffer(uint8_t *buffer, const uint16_t length) { + + /* read 0x00010000 flash data */ + flash_read(SETTINGS_START_PAGE, buffer, sizeof(length)); return; // #TODO uint32_t *b = (uint32_t *)buffer;