diff --git a/.settings/stm32cubeide.project.prefs b/.settings/stm32cubeide.project.prefs index 79688aa..4f2e21e 100644 --- a/.settings/stm32cubeide.project.prefs +++ b/.settings/stm32cubeide.project.prefs @@ -1,5 +1,6 @@ +2F62501ED4689FB349E356AB974DBE57=E20EF8A1CFA8D2AA5E7713614514A9E1 635E684B79701B039C64EA45C3F84D30=C8B026EBE17C208F17FB66CE4235156C 66BE74F758C12D739921AEA421D593D3=1 -8DF89ED150041C4CBC7CB9A9CAA90856=31CD5EEFA9F35C65D8E334D24F421EB1 -DC22A860405A8BF2F2C095E5B6529F12=31CD5EEFA9F35C65D8E334D24F421EB1 +8DF89ED150041C4CBC7CB9A9CAA90856=E20EF8A1CFA8D2AA5E7713614514A9E1 +DC22A860405A8BF2F2C095E5B6529F12=EC6C4D369FD4F7EABFE17B3222B5F3A0 eclipse.preferences.version=1 diff --git a/STM32F407VETX_FLASH.ld b/STM32F407VETX_FLASH.ld index d7d6fa5..d2fe0f0 100644 --- a/STM32F407VETX_FLASH.ld +++ b/STM32F407VETX_FLASH.ld @@ -47,7 +47,7 @@ MEMORY { CCMRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 64K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K - FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 512K + FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 384K } /* Sections */ diff --git a/a8000_subboard.launch b/a8000_subboard.launch index f49dd30..ead704b 100644 --- a/a8000_subboard.launch +++ b/a8000_subboard.launch @@ -24,7 +24,7 @@ - + diff --git a/sdk b/sdk index 6f30b6d..fd424ae 160000 --- a/sdk +++ b/sdk @@ -1 +1 @@ -Subproject commit 6f30b6d5d989f02e831655ec5439042b8b8126cf +Subproject commit fd424aeed7fd56ee83369b2e1a92ef7f913914f0 diff --git a/usrc/configs/device_id_mgr.cpp b/usrc/configs/device_id_mgr.cpp new file mode 100644 index 0000000..7908d3b --- /dev/null +++ b/usrc/configs/device_id_mgr.cpp @@ -0,0 +1,50 @@ +#include "device_id_mgr.hpp" + +#include "main.h" +#include "sdk/os/zos.hpp" + +void zdevice_id_mgr_init() {} +void zdevice_id_mgr_recfg_device_id(int32_t id) { + HAL_StatusTypeDef status; + uint32_t sector_error_point; + FLASH_EraseInitTypeDef flash_erase_structer = { + // + .TypeErase = FLASH_TYPEERASE_SECTORS, // + .Sector = SN_FLASH_EARSE_SECTOR, // + .NbSectors = 1, // + .VoltageRange = FLASH_VOLTAGE_RANGE_3 // + }; + + HAL_FLASH_Unlock(); + + __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR); + status = HAL_FLASHEx_Erase(&flash_erase_structer, §or_error_point); + if (status != HAL_OK) { + ZLOGE("flash", "erase error"); + HAL_FLASH_Lock(); + return; + } + ZLOGI("flash", "erase ok"); + + HAL_FLASH_Lock(); + + HAL_FLASH_Unlock(); + + status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, SN_FLASH_ADD, id); + if (status != HAL_OK) { + ZLOGE("flash", "write error"); + HAL_FLASH_Lock(); + return; + } + + HAL_FLASH_Lock(); + ZLOGI("flash", "write id %d to flash ok", id); + return; +} +int32_t zdevice_id_mgr_get_device_id() { + int32_t *deviceId = (int32_t *)SN_FLASH_ADD; + if (*deviceId <= 0) { + return 0; + } + return *deviceId; +} \ No newline at end of file diff --git a/usrc/configs/device_id_mgr.hpp b/usrc/configs/device_id_mgr.hpp new file mode 100644 index 0000000..6e6f375 --- /dev/null +++ b/usrc/configs/device_id_mgr.hpp @@ -0,0 +1,29 @@ +#pragma once +#include +#include + +#include "project_configs.h" + +/** + * @brief + * STM32F407VETx 512k + * + * index startAdd size + * 0 0x08000000 16k + * 1 0x08004000 16k + * 2 0x08008000 16k + * 3 0x0800C000 16k + * 4 0x08010000 64k + * 5 0x08020000 128k + * 6 0x08040000 128k + * 7 0x08060000 128k + * 8 0x08080000 128k + * 9 0x080A0000 128k + * 10 0x080C0000 128k + * 11 0x080E0000 128k + * + */ + +void zdevice_id_mgr_init(); +void zdevice_id_mgr_recfg_device_id(int32_t id); +int32_t zdevice_id_mgr_get_device_id(); \ No newline at end of file diff --git a/usrc/main.cpp b/usrc/main.cpp index deb9572..948f850 100644 --- a/usrc/main.cpp +++ b/usrc/main.cpp @@ -3,6 +3,7 @@ #include "board.h" // +#include "configs/device_id_mgr.hpp" #include "sdk/chip/chip.hpp" #include "sdk/os/zos.hpp" @@ -14,6 +15,7 @@ extern "C" { void StartDefaultTask(void const* argument) { umain(); } } void umain() { + zos_cfg_t zoscfg = {0}; chip_cfg_t chipcfg = {}; chipcfg.us_dleay_tim = &PC_SYS_DELAY_US_TIMER; chipcfg.tim_irq_scheduler_tim = &PC_SYS_TIM_IRQ_SCHEDULER_TIMER; @@ -21,9 +23,21 @@ void umain() { chipcfg.debuglight = PC_DEBUG_LIGHT_GPIO; chip_init(&chipcfg); - - zos_cfg_t zoscfg; zos_init(&zoscfg); + zdevice_id_mgr_init(); + + int32_t id = zdevice_id_mgr_get_device_id(); + + ZEARLY_LOGI("SYS", "chip init ok"); + ZEARLY_LOGI("SYS", "= manufacturer : %s", PC_MANUFACTURER); + ZEARLY_LOGI("SYS", "= project name : %s", PC_PROJECT_NAME); + ZEARLY_LOGI("SYS", "= version : %s", PC_VERSION); + ZEARLY_LOGI("SYS", "= freq : %d", HAL_RCC_GetSysClockFreq()); + ZEARLY_LOGI("SYS", "= build time : %s", __DATE__ " " __TIME__); + ZEARLY_LOGI("SYS", "= device id : %d", id); + + + ZLOGI(TAG, "zaf_flash_flush ok"); while (true) { zos_delay(1); diff --git a/usrc/project_configs.h b/usrc/project_configs.h index c1034e4..0901e96 100644 --- a/usrc/project_configs.h +++ b/usrc/project_configs.h @@ -15,5 +15,28 @@ #define PC_IRQ_PREEMPTPRIORITY_DEFAULT 5 -#define PC_NVS_ENABLE 1 -#define PC_NVS_CONFIG_FLASH_SECTOR 8 +// #define PC_NVS_ENABLE 0 + +/*********************************************************************************************************************** + * SN * + ***********************************************************************************************************************/ +/** + * @brief + * STM32F407VETx 1M + * + * index startAdd size + * 0 0x08000000 16k + * 1 0x08004000 16k + * 2 0x08008000 16k + * 3 0x0800C000 16k + * 4 0x08010000 64k + * 5 0x08020000 128k + * 6 0x08040000 128k + * 7 0x08060000 128k + * 8 0x08080000 128k + * 9 0x080A0000 128k + * 10 0x080C0000 128k + * 11 0x080E0000 128k + */ +#define SN_FLASH_ADD 0x080E0000 // ʹÓÃÉÈÇø11´æ´¢SN±àÂë +#define SN_FLASH_EARSE_SECTOR FLASH_SECTOR_7 \ No newline at end of file