diff --git a/BIN/STS_O6_RTM_RM2_46cm_pixel_network_20240820.bin b/BIN/STS_O6_RTM_RM2_46cm_pixel_network_20240820.bin new file mode 100644 index 0000000..1f83805 Binary files /dev/null and b/BIN/STS_O6_RTM_RM2_46cm_pixel_network_20240820.bin differ diff --git a/Core/Inc/yunhorn_sts_prd_conf.h b/Core/Inc/yunhorn_sts_prd_conf.h index 16188eb..1ff9599 100644 --- a/Core/Inc/yunhorn_sts_prd_conf.h +++ b/Core/Inc/yunhorn_sts_prd_conf.h @@ -454,7 +454,12 @@ #define FLASH_USER_START_ADDR ((void *) 0x0803F800UL) // Last 2kB of flash #define FLASH_USER_CONFIG_SIZE ((void *) 0x000007FFUL) //0x400=1KB=1024 -#define FLASH_USER_END_ADDR (FLASH_USER_START_ADDR + FLASH_USER_CONFIG - 1) +#define FLASH_USER_END_ADDR (FLASH_USER_START_ADDR + FLASH_USER_CONFIG - 1) + +#define FLASH_MFG_DEFAULT_START_ADDR ((void *) 0x0803FC00UL) // Last 1kB of flash +#define FLASH_MFG_DEFAULT_CONFIG_SIZE ((void *) 0x000003FFUL) //0x400=1KB=1024 +#define FLASH_MFG_DEFAULT_END_ADDR (FLASH_MFG_DEFAULT_START_ADDR + FLASH_MFG_DEFAULT_CONFIG_SIZE - 1) + /* 2KB = 2048 = 0x800 End @ of user Flash area */ /** diff --git a/Core/Src/i2c.c b/Core/Src/i2c.c index 0911d30..7a17615 100644 --- a/Core/Src/i2c.c +++ b/Core/Src/i2c.c @@ -46,7 +46,7 @@ void MX_I2C2_Init(void) /* USER CODE END I2C2_Init 1 */ hi2c2.Instance = I2C2; //hi2c2.Init.Timing = 0x20303E5D; //0x2010091A = 400K Fast Mode, 0x20303E5D, 100K Standard mode, 0x20000209 Fast Mode Plus, 1Mbps - hi2c2.Init.Timing = I2C2_STANDARD_100K; //2024-07-12 UPDATE + hi2c2.Init.Timing = I2C2_FAST_400K; //2024-07-12 UPDATE hi2c2.Init.OwnAddress1 = 0; hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index f051b8e..164ad51 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -86,6 +86,7 @@ volatile bool p2_work_finished=true; extern volatile uint8_t luminance_level; uint8_t outbuf[255]={0x0}; volatile static bool r_b=true; +volatile sts_cfg_nvm_factory_default[64]={0xF0}; volatile sts_cfg_nvm_t sts_cfg_nvm = { sts_mtmcode1, sts_mtmcode2, @@ -1957,7 +1958,14 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size) __set_FAULTMASK(1); OnSystemReset(); - } else if ((char)tlv_buf[CFG_CMD3] == 'S') { // Self Function Testing "YZS" + } else if ((char)tlv_buf[CFG_CMD3] == 'F') { // RESET TO FACTORY ORIGINAL SETTING "YZF" + + sts_cfg_nvm_factory_default[0] = 0x46; // F + STS_REBOOT_CONFIG_Init(); + __set_FAULTMASK(1); + OnSystemReset(); + + } else if ((char)tlv_buf[CFG_CMD3] == 'S') { // Self Function Testing "YZS" i=0; //outbuf[i++] = (uint8_t) 'Y'; //outbuf[i++] = (uint8_t) 'Z'; @@ -2801,15 +2809,38 @@ void OnStoreSTSCFGContextRequest(void) if (FLASH_IF_Erase(STS_CONFIG_NVM_BASE_ADDRESS, FLASH_PAGE_SIZE) == FLASH_IF_OK) { FLASH_IF_Write(STS_CONFIG_NVM_BASE_ADDRESS, (const void *)nvm_store_value, YUNHORN_STS_MAX_NVM_CFG_SIZE); + + if (sts_cfg_nvm_factory_default[0] == 0xF0) { + UTIL_MEM_cpy_8((void*)sts_cfg_nvm_factory_default, (void*)nvm_store_value, YUNHORN_STS_MAX_NVM_CFG_SIZE); + + if ((sts_cfg_nvm.ac[0] != 0x0) && (sts_cfg_nvm.ac[19] != 0x0)) { + sts_cfg_nvm_factory_default[0] = 0xF3; // with good ac code already + } else { + sts_cfg_nvm_factory_default[0] = 0xF2; // no good ac code yet + } + FLASH_IF_Write(FLASH_MFG_DEFAULT_START_ADDR, (const void *)sts_cfg_nvm_factory_default, YUNHORN_STS_MAX_NVM_CFG_SIZE); + } else if ((sts_cfg_nvm_factory_default[0] == 0xF2) && (hmac_result.ac_pass==1) ) //only store ac code at first time of ac_pass=1 + { + if ((sts_cfg_nvm.ac[0]!=0x0) && (sts_cfg_nvm.ac[19]!=0x0)) { + for (j = 0; j < YUNHORN_STS_AC_CODE_SIZE; j++) { + sts_cfg_nvm_factory_default[YUNHORN_STS_MAX_NVM_CFG_SIZE-YUNHORN_STS_AC_CODE_SIZE+j] = (sts_cfg_nvm.ac[j]); + } + } + sts_cfg_nvm_factory_default[0] = 0xF3; // with valid ac code + FLASH_IF_Write(FLASH_MFG_DEFAULT_START_ADDR, (const void *)sts_cfg_nvm_factory_default, YUNHORN_STS_MAX_NVM_CFG_SIZE); + } + } - - /* USER CODE BEGIN OnStoreContextRequest_Last */ /* USER CODE END OnStoreContextRequest_Last */ } +void OnRestoreSTSCFG_FactoryDefault_ContextRequest(void *cfg_in_nvm) +{ + +} void OnRestoreSTSCFGContextRequest(void *cfg_in_nvm) { /* USER CODE BEGIN OnRestoreSTSCFGContextRequest_1 */ @@ -2828,7 +2859,6 @@ void OnRestoreSTSCFGContextRequest(void *cfg_in_nvm) /* USER CODE END OnRestoreSTSCFGContextRequest_Last */ } - void STS_REBOOT_CONFIG_Init(void) { /* USER CODE BEGIN OnRestoreContextRequest_1 */ @@ -2836,7 +2866,14 @@ void STS_REBOOT_CONFIG_Init(void) /* USER CODE END OnRestoreContextRequest_1 */ //UTIL_MEM_cpy_8(nvm_stored_value, (void *)STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE); - FLASH_IF_Read(nvm_stored_value, STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE); + if (sts_cfg_nvm_factory_default[0] != 0x46) // for reset to factory default + { + FLASH_IF_Read(nvm_stored_value, STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE); + + } else { // RESET TO FACTORY DEFAULT,CONFIG TO ORIGINAL SETTINGS + FLASH_IF_Read(nvm_stored_value, FLASH_MFG_DEFAULT_START_ADDR, YUNHORN_STS_MAX_NVM_CFG_SIZE); + sts_cfg_nvm_factory_default[0] = 0xF3; + } /* USER CODE BEGIN OnRestoreContextRequest_Last */ //#if (defined(STS_O7)||defined(STS_O5) || defined(STS_O6) || defined(STS_R0) || defined(STS_R5)|| defined(STS_R4)|| defined(STS_R1D)) @@ -2844,7 +2881,7 @@ void STS_REBOOT_CONFIG_Init(void) { APP_LOG(TS_OFF, VLEVEL_M, "Initial Boot with Empty Config, Flash with default config....\r\n"); OnStoreSTSCFGContextRequest(); - //UTIL_MEM_set_8((void *)sts_ac_code, 0x00, YUNHORN_STS_AC_CODE_SIZE); + HAL_Delay(1000); } else { diff --git a/STM32CubeIDE/Debug/makefile b/STM32CubeIDE/Debug/makefile index 6ab2205..6663106 100644 --- a/STM32CubeIDE/Debug/makefile +++ b/STM32CubeIDE/Debug/makefile @@ -1,6 +1,6 @@ ################################################################################ # Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) +# Toolchain: GNU Tools for STM32 (13.3.rel1) ################################################################################ -include ../makefile.init @@ -12,9 +12,12 @@ RM := rm -rf -include Utilities/subdir.mk -include Middlewares/SubGHz_Phy/subdir.mk -include Middlewares/LoRaWAN/subdir.mk +-include Drivers/vl53l1x_uld/subdir.mk -include Drivers/STM32WLxx_HAL_Driver/subdir.mk -include Drivers/CMSIS/subdir.mk -include Drivers/BSP/STM32WLxx_Nucleo/subdir.mk +-include Application/User/TOF/Target/subdir.mk +-include Application/User/TOF/App/subdir.mk -include Application/User/Startup/subdir.mk -include Application/User/LoRaWAN/Target/subdir.mk -include Application/User/LoRaWAN/App/subdir.mk @@ -68,7 +71,7 @@ main-build: STS_O7.elf secondary-outputs # Tool invocations STS_O7.elf STS_O7.map: $(OBJS) $(USER_OBJS) D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\YUNHORN_STS_E5CC_AS923_POC\STM32CubeIDE\STM32WLE5CCUX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS) - arm-none-eabi-gcc -o "STS_O7.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m4 -T"D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\YUNHORN_STS_E5CC_AS923_POC\STM32CubeIDE\STM32WLE5CCUX_FLASH.ld" --specs=nosys.specs -Wl,-Map="STS_O7.map" -Wl,--gc-sections -static -L"D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\STS_O7\STM32CubeIDE\rss\lib" -Xlinker -no-enum-size-warning -z noexecstack --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group + arm-none-eabi-gcc -o "STS_O7.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m4 -T"D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\YUNHORN_STS_E5CC_AS923_POC\STM32CubeIDE\STM32WLE5CCUX_FLASH.ld" --specs=nosys.specs -Wl,-Map="STS_O7.map" -Wl,--gc-sections -static -Xlinker -no-enum-size-warning -z noexecstack --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group @echo 'Finished building target: $@' @echo ' ' diff --git a/STM32CubeIDE/Release/STS_O7.bin b/STM32CubeIDE/Release/STS_O7.bin index 5dedec6..7f8cf35 100644 Binary files a/STM32CubeIDE/Release/STS_O7.bin and b/STM32CubeIDE/Release/STS_O7.bin differ diff --git a/STM32CubeIDE/Release/makefile b/STM32CubeIDE/Release/makefile index 7a62b88..54f7c2a 100644 --- a/STM32CubeIDE/Release/makefile +++ b/STM32CubeIDE/Release/makefile @@ -1,6 +1,6 @@ ################################################################################ # Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) +# Toolchain: GNU Tools for STM32 (13.3.rel1) ################################################################################ -include ../makefile.init diff --git a/TOF/App/app_tof_peoplecount.c b/TOF/App/app_tof_peoplecount.c index c4e03b9..b3b0284 100644 --- a/TOF/App/app_tof_peoplecount.c +++ b/TOF/App/app_tof_peoplecount.c @@ -359,7 +359,8 @@ int sts_tof_vl53lx_peoplecount_init(void) APP_LOG(TS_OFF, VLEVEL_L,"VL53L1X: %X\n", wordData); while (sensorState == 0) { status = VL53L1X_BootState(dev, &sensorState); - HAL_Delay(2); + HAL_Delay(1); + if (wordData++ > 4000) break; } APP_LOG(TS_OFF, VLEVEL_L,"Chip booted\n");