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