由 小何 贡献,Ai-Thinker 进行整理
AI-WB2的 OTA 升级教程
根据博流的demo_ota 项目为例,复制博流的原厂 SDK 的customer_app/system/ota/demo_ota 到WB2 模组 SDK 的application 目录下,

- demo_ota/proj_config.mk 中新增:CONFIG_LINK_ROM=1
#compiler flag config domain
#CONFIG_TOOLPREFIX := #CONFIG_OPTIMIZATION_LEVEL_RELEASE := 1 #CONFIG_M4_SOFTFP := 1
#board config domain
CONFIG_BOARD_FLASH_SIZE := 4
#firmware config domain
#set CONFIG_ENABLE_ACP to 1 to enable ACP, set to 0 or comment this line to disable #CONFIG_ENABLE_ACP:=1 CONFIG_BL_IOT_FW_AP:=1 CONFIG_BL_IOT_FW_AMPDU:=0 CONFIG_BL_IOT_FW_AMSDU:=0 CONFIG_BL_IOT_FW_P2P:=0 CONFIG_ENABLE_PSM_RAM:=1 #CONFIG_ENABLE_CAMERA:=1 #CONFIG_ENABLE_BLSYNC:=1 #CONFIG_ENABLE_VFS_SPI:=1 CONFIG_ENABLE_VFS_ROMFS:=1 CONFIG_EASYFLASH_ENABLE:=1 #0 -> 1 CONFIG_SYS_APP_TASK_STACK_SIZE:=4096 #+ CONFIG_SYS_APP_TASK_PRIORITY:=15 #+
CONFIG_FREERTOS_TICKLESS_MODE:=0 #1 -> 0
#CONFIG_SYS_APP_TASK_STACK_SIZE:=4096 #- #CONFIG_SYS_APP_TASK_PRIORITY:=15 #-
CONFIG_SYS_VFS_ENABLE:=1 CONFIG_SYS_VFS_UART_ENABLE:=1 CONFIG_SYS_AOS_CLI_ENABLE:=1 CONFIG_SYS_AOS_LOOP_ENABLE:=1 CONFIG_SYS_BLOG_ENABLE:=1 CONFIG_SYS_DMA_ENABLE:=0 #1 -> 0 CONFIG_SYS_USER_VFS_ROMFS_ENABLE:=0 #1 -> 0
CONFIG_BT:=0
CONFIG_BT_CENTRAL:=1 #+ CONFIG_BT_OBSERVER:=1 #+ CONFIG_BT_PERIPHERAL:=1 #+ CONFIG_BT_STACK_CLI:=1 #+ CONFIG_BT_MESH := 0 #+ ifeq ($(CONFIG_BT_MESH),1) #+ CONFIG_BT_MESH_PB_ADV := 1 #+ CONFIG_BT_MESH_PB_GATT := 1 #+ CONFIG_BT_MESH_FRIEND := 1 #+ CONFIG_BT_MESH_LOW_POWER := 1 #+ CONFIG_BT_MESH_PROXY := 1 #+ CONFIG_BT_MESH_GATT_PROXY := 1 #+ endif
CONF_ENABLE_COREDUMP:=1 #+
#CONFIG_USE_XTAL32K:=0 #- #CONFIG_ENABLE_STACK_OVERFLOW_CHECK:=0 #-
#blog enable components format :=blog_testc cli vfs helper LOG_ENABLED_COMPONENTS:=blog_testc hosal loopset looprt bloop blestack LivingRoomCock http_client_tcp ifeq ($(CONFIG_BT_MESH_SYNC),1) LOG_ENABLED_COMPONENTS += blsync_ble endif
CONFIG_BL602_USE_ROM_DRIVER:=1 #CONFIG_BT_STACK_PTS:=0 #-
CONFIG_LINK_ROM=1 #+
[color=rgba(0, 0, 0, 0.75)]其实在文件里已有genromap [color=rgba(0, 0, 0, 0.75)]CONFIG_LINK_ROM=1,不需要demo_ota/proj_config.mk都要以,增加方法直接make
#!/bin/sh make CONFIG_CHIP_NAME=BL602 CONFIG_LINK_ROM=1 -j make flash-build exit $?
demo_ota.bin及生成 OTA 固件****make或./genromap就行成demo_ota.bin及生成 OTA 固件。 查看项目下的Make File
This is a project Makefile. It is assumed the directory this Makefile resides in is a
project subdirectory.
PROJECT_NAME := LivingRoomCock PROJECT_PATH := $(abspath .) PROJECT_BOARD := evb export PROJECT_PATH PROJECT_BOARD #CONFIG_TOOLPREFIX :=
-include ./proj_config.mk
ifeq ($(origin BL60X_SDK_PATH), undefined) BL60X_SDK_PATH_GUESS ?= $(shell pwd) BL60X_SDK_PATH ?=
(info ****** Please SET BL60X_SDK_PATH ******) (BL60X_SDK_PATH)]) endif COMPONENTS_NETWORK := sntp dns_server COMPONENTS_BLSYS := bltime blfdt blmtd blota bloop loopadc looprt loopset COMPONENTS_VFS := romfs cjson
INCLUDE_COMPONENTS += freertos_riscv_ram bl602 bl602_std newlibc wifi wifi_manager wpa_supplicant bl602_os_adapter wifi_hosal hosal mbedtls_lts lwip lwip_dhcpd vfs yloop utils cli aws-iot httpc httpd dns_server netutils blog blog_testc INCLUDE_COMPONENTS += easyflash4 coredump lwip_altcp_tls_mbedtls blcrypto_suite bl_os_adapter rfparam_adapter_tmp spiffs
INCLUDE_COMPONENTS += $(COMPONENTS_NETWORK) INCLUDE_COMPONENTS += $(COMPONENTS_BLSYS) INCLUDE_COMPONENTS += $(COMPONENTS_VFS) INCLUDE_COMPONENTS += $(PROJECT_NAME)
include $(BL60X_SDK_PATH)/make_scripts_riscv/project.mk
最终调用make_scripts_riscv/project.mk
Main Project Makefile
This Makefile is included directly from the user project Makefile in order to call the bouffalo.mk
makefiles of all components (in a separate make process) to build all the libraries, then links them
together into the final file. If so, PWD is the project dir (we assume).
This makefile requires the environment variable BL60X_SDK_PATH to be set to the top-level bl60x_sdk directory
where this file is located.
.PHONY: all build clean all_binaries list-components
MAKECMDGOALS ?= all all: all_binaries
FLASH_TOOL_TYPE:= ./bflb_iot_tool-ubuntu
see below for recipe of 'all' target
# other components will add dependencies to 'all_binaries'. The
reason all_binaries is used instead of 'all' is so that the flash
target can build everything without triggering the per-component "to
flash..." output targets.)
help: @echo "Welcome to Ai-WB2 SDK build system. make targets:" @echo "" @echo "\033[33m"make all"\033[0m - Build app, components" @echo "\033[33m"make clean"\033[0m - Remove all app components output" @echo "\033[33m"make flash"\033[0m - Build and download firmware " @echo "\033[33m"make flash-only"\033[0m - Only download firmware" @echo "\033[33m"make eflash"\033[0m - Use the flash after erasing it" @echo "\033[33m"make erase_flash"\033[0m - Erase all internal contents of flash" @echo "\033[33m"make list-components"\033[0m - List all components in the project" @echo "\033[33m"make [component name]"\033[0m - build a component as a library"
Non-interactive targets. Mostly, those for which you do not need to build a binary
NON_INTERACTIVE_TARGET += defconfig clean% %clean help list-components print_flash_cmd
dependency checks
ifndef MAKE_RESTARTS ifeq ("
(MAKE_VERSION))","") $(warning bl60x_sdk build system only supports GNU Make versions 3.81 or newer. You may see unexpected results with other Makes.) endif endif # MAKE_RESTARTS
can't run 'clean' along with any non-clean targets
ifneq ("
(MAKECMDGOALS))" ,"") ifneq (" (MAKECMDGOALS))", "") $(error bl60x_sdk build system doesn't support running 'clean' targets along with any others. Run 'make clean' and then run other targets separately.) endif OS ?=
make BL60X_SDK_PATH a "real" absolute path
* works around the case where a shell character is embedded in the environment variable value.
* changes Windows-style C:/blah/ paths to MSYS style /c/blah
ifeq ("$(OS)","Windows_NT")
On Windows MSYS2, make wildcard function returns empty string for paths of form /xyz
where /xyz is a directory inside the MSYS root - so we don't use it.
SANITISED_BL60X_SDK_PATH:=$(realpath
(realpath $(wildcard $(BL60X_SDK_PATH))) endif export BL60X_SDK_PATH := $(SANITISED_BL60X_SDK_PATH)
ifndef BL60X_SDK_PATH $(error BL60X_SDK_PATH variable is not set to a valid directory.) endif
ifneq ("
(SANITISED_BL60X_SDK_PATH)") $(error If BL60X_SDK_PATH is overriden on command line, it must be an absolute path with no embedded shell special characters) endif ifneq ("
(subst :,, (error BL60X_SDK_PATH cannot contain colons. If overriding BL60X_SDK_PATH on Windows, use MSYS Unix-style /c/dir instead of C:/dir) endif disable built-in make rules, makes debugging saner
MAKEFLAGS_OLD := $(MAKEFLAGS) MAKEFLAGS +=-rR
Default path to the project: we assume the Makefile including this file
is in the project directory
ifndef PROJECT_PATH PROJECT_PATH := $(abspath $(dir $(firstword $(MAKEFILE_LIST)))) export PROJECT_PATH endif
A list of the "common" makefiles, to use as a target dependency
COMMON_MAKEFILES := $(abspath $(BL60X_SDK_PATH)/make_scripts_riscv/project.mk $(BL60X_SDK_PATH)/make_scripts_riscv/common.mk $(BL60X_SDK_PATH)/make_scripts_riscv/component_wrapper.mk $(firstword $(MAKEFILE_LIST))) export COMMON_MAKEFILES
The directory where we put all objects/libraries/binaries. The project Makefile can
configure this if needed.
ifndef BUILD_DIR_BASE BUILD_DIR_BASE := $(PROJECT_PATH)/build_out endif export BUILD_DIR_BASE
Component directories. These directories are searched for components (either the directory is a component,
or the directory contains subdirectories which are components.)
The project Makefile can override these component dirs, or add extras via EXTRA_COMPONENT_DIRS
ifndef COMPONENT_DIRS EXTRA_COMPONENT_DIRS ?= COMPONENT_DIRS := $(PROJECT_PATH)/components $(EXTRA_COMPONENT_DIRS) $(BL60X_SDK_PATH)/components $(BL60X_SDK_PATH)/customer_components
(PROJECT_NAME) $(PROJECT_COMPONENT) endif export COMPONENT_DIRS The project Makefile can define a list of components, but if it does not do this we just take all available components
in the component dirs. A component is COMPONENT_DIRS directory, or immediate subdirectory,
which contains a bouffalo.mk file.
Use the "make list-components" target to debug this step.
#ifndef COMPONENTS
Find all component names. The component names are the same as the
directories they're in, so /bla/components/mycomponent/bouffalo.mk -> mycomponent.
using by [https://stackoverflow.com/questi ... ry-tree-for-c-files](https://stackoverflow.com/questions/3774568/makefile-issue-smart-way-to-scan-directory-tree-for-c-files)
ifeq ("$(wildcard ${BL60X_SDK_PATH}/components.mk)","") rwildcard = $(wildcard $1$2)
(wildcard (call rwildcard,$d/, (dir (COMPONENT_DIRS),
(cd)/,bouffalo.mk)
)) COMPONENTS := $(sort(COMPONENTS_RAL_PATH),$(lastword (comp))))) COMPONENTS_REAL_PATH := (COMPONENTS_RAL_PATH)) else COMPONENTS := $(notdir $(PROJECT_PATH)) COMPONENTS_REAL_PATH := (notdir $(PROJECT_PATH)) include (info use existing components.mk file) endif #endif After a full manifest of component names is determined, subtract the ones explicitly omitted by the project Makefile.
ifdef INCLUDE_COMPONENTS
match exclude comps with EXCLUDE_COMPONENTS variable
define include_comps_add include_path +=
(1), (foreach comp, (eval (comp)))) INCLUDE_COMPONENTS_REAL_PATH := $(include_path) include components
COMPONENTS := $(filter $(INCLUDE_COMPONENTS), $(COMPONENTS)) COMPONENTS_REAL_PATH := $(filter $(INCLUDE_COMPONENTS_REAL_PATH), $(COMPONENTS_REAL_PATH)) endif export COMPONENTS
Resolve all of COMPONENTS into absolute paths in COMPONENT_PATHS.
If a component name exists in multiple COMPONENT_DIRS, we take the first match.
NOTE: These paths must be generated WITHOUT a trailing / so we
can use $(notdir x) to get the component name.
TODO remove multiple name in components
#COMPONENT_PATHS :=
(COMPONENTS),$(firstword (COMPONENT_DIRS),$(wildcard $(dir (comp) (comp))))) #COMPONENT_PATHS := (COMPONENTS_RAL_PATH)) COMPONENT_PATHS := $(COMPONENTS_REAL_PATH) export COMPONENT_PATHS Initialise project-wide variables which can be added to by
each component.
These variables are built up via the component_project_vars.mk
generated makefiles (one per component).
See docs/build-system.rst for more details.
COMPONENT_INCLUDES := COMPONENT_LDFLAGS := COMPONENT_SUBMODULES := COMPONENT_LIBRARIES :=
COMPONENT_PROJECT_VARS is the list of component_project_vars.mk generated makefiles
for each component.
Including $(COMPONENT_PROJECT_VARS) builds the COMPONENT_INCLUDES,
COMPONENT_LDFLAGS variables and also targets for any inter-component
dependencies.
See the component_project_vars.mk target in component_wrapper.mk
COMPONENT_PROJECT_VARS :=
(notdir $(COMPONENT_PATHS) )) COMPONENT_PROJECT_VARS := $(sort $(COMPONENT_PROJECT_VARS)) COMPONENT_PROJECT_VARS := $(addprefix (COMPONENT_PROJECT_VARS)) this line is -include instead of include to prevent a spurious error message on make 3.81
-include $(COMPONENT_PROJECT_VARS)
Also add top-level project include path, for top-level includes
COMPONENT_INCLUDES += $(abspath $(BUILD_DIR_BASE)/include/)
export COMPONENT_INCLUDES
Set variables common to both project & component
include $(BL60X_SDK_PATH)/make_scripts_riscv/common.mk include $(BL60X_SDK_PATH)/make_scripts_riscv/toolchain.mk
all: ifeq ("
(CONFIG_CHIP_NAME)", "BL602") endif @echo "Building Finish. To flash build output. run 'make flash' or:" @echo "c $(OS) ..." @echo "cd (APP_BIN) SDK_BOARD= (PROJECT_NAME) SDK_MEDIA_BIN= (APP_ROMFS_DIR) SDK_DTS= (PROJECT_BOARD_XTAL) BL_FLASH_TOOL_INPUT_PATH_cfg2_bin_input=$(APP_BIN) (PROJECT_PATH)/img_conf/partition_cfg_4M.toml --dts= (APP_BIN)" bins: all @cd $(BL60X_SDK_PATH)/image_conf; python3 flash_build.py $(PROJECT_NAME) $(CONFIG_CHIP_NAME) info: all @cd
(APP_BIN) SDK_APP_MAP=$(APP_MAP) python3 codesize.py If we have
version.mkthen prefer that for extracting BL60x_SP_SDK version ifeq ("$(wildcard ${BL60X_SDK_PATH}/version.mk)","") BL_SDK_VER := $(shell cd
(BL_SDK_VER)" $(info use git describe to generate Version Define) else include (CONFIG_CHIP_NAME)", "BL602") $(info Your configuration chipname is Ai-Thinker Ai-WB2 Wi-Fi&BLE Module) endif BL_CHIP_NAME := $ Set default LDFLAGS
-nostdlib
--specs=nosys.specs
EXTRA_LDFLAGS ?= -Wl,--cref -nostartfiles
ifeq ("
(COMPONENT_LDFLAGS)
-Wl,--end-group \else E21_CPU_LDFLAGS := -march=rv32imfc
-mabi=ilp32fLDFLAGS ?=
(EXTRA_LDFLAGS)
-Wl,--gc-sections
-Wl,-static
-Wl,--start-group
$(COMPONENT_LDFLAGS)
-Wl,--end-group
-Wl,-EL
-lm endifSet default CPPFLAGS, CFLAGS, CXXFLAGS
These are exported so that components can use them when compiling.
If you need your component to add CFLAGS/etc for it's own source compilation only, set CFLAGS += in your component's Makefile.
If you need your component to add CFLAGS/etc globally for all source
# files, set CFLAGS += in your component's Makefile.projbuild
If you need to set CFLAGS/CPPFLAGS/CXXFLAGS at project level, set them in application Makefile
# before including project.mk. Default flags will be added before the ones provided in application Makefile.
CPPFLAGS used by C preprocessor
If any flags are defined in application Makefile, add them at the end.
CPPFLAGS ?=
Enable GNU extensions
CPPFLAGS += -D _GNU_SOURCE ifeq (
(CONFIG_ENABLE_CAMERA),1) CPPFLAGS += -DCONF_USER_ENABLE_CAMERA endif ifeq ( (BL_CHIP_NAME)" -MMD -MP $(EXTRA_CPPFLAGS) CPPFLAGS += -DARCH_RISCV Warnings-related flags relevant both for C and C++
COMMON_WARNING_FLAGS = -Wall -Werror=all
-Wno-error=unused-function
-Wno-error=unused-but-set-variable
-Wno-error=unused-variable
-Wno-error=deprecated-declarations
-Wextra
-Wno-unused-parameter -Wno-sign-compareifdef CONFIG_WARN_WRITE_STRINGS COMMON_WARNING_FLAGS += -Wwrite-strings endif #CONFIG_WARN_WRITE_STRINGS
ifdef CONFIG_ENABLE_PSM_RAM COMMON_WARNING_FLAGS += -DCONF_USER_ENABLE_PSRAM endif
Flags which control code generation and dependency generation, both for C and C++
-nostdlib
-fno-common
-funwind-tables
COMMON_FLAGS =
-ffunction-sections -fdata-sections
-fstrict-volatile-bitfields
-fcommon \Add -fshort-enums temporarily for bl702
ifeq ("$(CONFIG_CHIP_NAME)", "BL702") COMMON_FLAGS += -fshort-enums endif
COMMON_FLAGS_M4_EXT :=
-ffreestanding
-fno-strict-aliasingCOMMON_FLAGS += $(COMMON_FLAGS_M4_EXT)
ifdef CONFIG_STACK_CHECK_NORM COMMON_FLAGS += -fstack-protector endif ifdef CONFIG_STACK_CHECK_STRONG COMMON_FLAGS += -fstack-protector-strong endif ifdef CONFIG_STACK_CHECK_ALL COMMON_FLAGS += -fstack-protector-all endif ifeq (
(CONF_ENABLE_FUNC_BACKTRACE),1) PROJ_ELF:= (PROJ_ELF) -DCONF_BUILD_PATH= (PROJ_ELF) endif ifeq ($(CONFIG_ENABLE_STACK_OVERFLOW_CHECK),1) COMMON_FLAGS += -finstrument-functions -DCONF_ENABLE_STACK_OVERFLOW_CHECK endif
ifeq ("$(CONFIG_CHIP_NAME)", "VIRTEX7") OPTIMIZATION_FLAGS = -O2 else ifdef CONFIG_OPTIMIZATION_LEVEL_RELEASE OPTIMIZATION_FLAGS = -Os else OPTIMIZATION_FLAGS = -Os endif
ifdef CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED CPPFLAGS += -DNDEBUG endif
Enable generation of debugging symbols
(we generate even in Release mode, as this has no impact on final binary size.)
DEBUG_FLAGS ?= -gdwarf
List of flags to pass to C compiler
If any flags are defined in application Makefile, add them at the end.
EXTRA_CFLAGS ?=
ifeq ("$(CONFIG_CHIP_NAME)", "VIRTEX7") E21_CPU_CFLAGS := -march=rv32imc -mabi=ilp32
ASMFLAGS := $(E21_CPU_CFLAGS) CFLAGS := $(strip
-march=rv32imc -mabi=ilp32
-O2 -Wall -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -Werror -Wno-switch-default -Wno-unused -fdata-sections -ffunction-sections -g3
-fmessage-length=0 -std=gnu99
-save-temps=obj
)CXXFLAGS := $(strip
-march=rv32imc -mabi=ilp32
-O2 -Wall -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -Werror -Wno-switch-default -Wno-unused -fdata-sections -ffunction-sections -g3
-fmessage-length=0 -std=gnu99
-save-temps=obj
) else E21_CPU_CFLAGS := -march=rv32imfc
-mabi=ilp32fASMFLAGS := $(E21_CPU_CFLAGS)
CFLAGS :=
(OPTIMIZATION_FLAGS) (COMMON_FLAGS)
(CFLAGS)
(EXTRA_CFLAGS))
-save-temps=objCXXFLAGS :=
(OPTIMIZATION_FLAGS) (COMMON_FLAGS)
(CXXFLAGS)
$(E21_CPU_CFLAGS)
-nostdlib
-g3
-fms-extensions
-ffunction-sections
-fdata-sections
-Wall
-Wchar-subscripts
-Wformat
-Winit-self
-Wignored-qualifiers
-Wswitch-default
-Wunused
-Wundef
-fno-rtti -fno-exceptions
-save-temps=obj
-fno-use-cxa-atexit
)endif export CFLAGS CPPFLAGS CXXFLAGS ASMFLAGS
Set default values that were not previously defined
CC ?= gcc LD ?= ld AR ?= ar OBJCOPY ?= objcopy SIZE ?= size STRIP ?= strip
Set host compiler and binutils
HOSTCC := $(CC) HOSTLD := $(LD) HOSTAR := $(AR) HOSTOBJCOPY := $(OBJCOPY) HOSTSIZE := $(SIZE) export HOSTCC HOSTLD HOSTAR HOSTOBJCOPY SIZE
ifndef CONFIG_TOOLPREFIX $(error Please Configure CONFIG_TOOLPREFIX at toolchain.mk) endif
Set target compiler. Defaults to whatever the user has
configured as prefix + ye olde gcc commands
CC :=
(CONFIG_TOOLPREFIX))gcc CXX := (CONFIG_TOOLPREFIX))g++ LD := (CONFIG_TOOLPREFIX))ld AR := (CONFIG_TOOLPREFIX))ar OBJCOPY := (CONFIG_TOOLPREFIX))objcopy SIZE := (CONFIG_TOOLPREFIX))size STRIP := (CONFIG_TOOLPREFIX))strip export CC CXX LD AR OBJCOPY SIZE PYTHON=
(CONFIG_PYTHON)) the app is the main executable built by the project
APP_ELF:=
(PROJECT_NAME).elf APP_MAP:= (APP_ELF:.elf=.bin) Include any Makefile.projbuild file letting components add
configuration at the project level
define includeProjBuildMakefile $(if
$(info including $(1)/Makefile.projbuild...)) COMPONENT_PATH := $(1) include (foreach componentpath, (if $(wildcard $(componentpath)/Makefile.projbuild),
$(eval(componentpath))))) ELF depends on the library archive files for COMPONENT_LIBRARIES
the rules to build these are emitted as part of GenerateComponentTarget below
also depends on additional dependencies (linker scripts & binary libraries)
stored in COMPONENT_LINKER_DEPS, built via bouffalo.mk files' COMPONENT_ADD_LINKER_DEPS variable
COMPONENT_LINKER_DEPS ?= $(APP_ELF):
(COMPONENT_LIBRARIES), (libcomp)/lib$(libcomp).a) $(COMPONENT_LINKER_DEPS) (summary) LD $(patsubst @) ifeq ( (CXX) -o $@ (APP_MAP) else ifeq ( (CXX) -o $@ (APP_MAP) else $(CC) $(LDFLAGS) -o (APP_MAP) $(shell find build_out/ -name bugkiller_*.o) endif all_binaries: $(APP_BIN)
TODO move to bl60x_elftool component
$(APP_BIN): $(APP_ELF) @echo "Generating BIN File to
(CONFIG_CHIP_NAME)", "VIRTEX7") $(OBJCOPY) -O ihex $< (CONFIG_ENABLE_ACP),1) $(OBJCOPY) -S -O binary -R .rom.cpu1 -R .bugkiller_command -R .bugkiller $< (OBJCOPY) -S -O binary -j .rom.cpu1 $< $(@:.bin=.cpu1.bin) cp $(@:.bin=.cpu0.bin) (@:.bin=.cpu1.bin) of=$(@:.bin=.acp.bin) bs=512 seek=2 conv=notrunc cp $(@:.bin=.acp.bin) (CONFIG_LINK_ROM),1) $(OBJCOPY) -S -O binary -R .romdata -R .rom -R .bugkiller_command -R .bugkiller $< (OBJCOPY) -S -O binary -j .rom $< (OBJCOPY) -S -O binary -j .romdata $< (OBJCOPY) -S -O binary -R .romdata -R .rom -R .bugkiller_command -R .bugkiller $< (CONFIG_GEN_ROM),1) $(OBJCOPY) -S -O binary -R .bleromro -R .bleromrw -R .rtosromro -R .rtosromrw -R .bugkiller_command -R .bugkiller $< (OBJCOPY) -S -O binary -j .bleromro $< (OBJCOPY) -S -O binary -j .bleromrw $< (OBJCOPY) -S -O binary -j .rtosromro $< (OBJCOPY) -S -O binary -j .rtosromrw $< (OBJCOPY) -S -O binary -R .bleromro -R .bleromrw -R .rtosromro -R .rtosromrw -R .bugkiller_command -R .bugkiller $< (OBJCOPY) -S -O binary -R .bugkiller_command -R .bugkiller $< $@ endif $(BUILD_DIR_BASE): mkdir -p $(BUILD_DIR_BASE)
Macro for the recursive sub-make for each component
$(1) - component directory
$(2) - component name only
Is recursively expanded by the GenerateComponentTargets macro
define ComponentMake +$(MAKE) -C
(2) -f (1)/bouffalo.mk COMPONENT_NAME=$(2) endef Generate top-level component-specific targets for each component
$(1) - path to component dir
$(2) - name of component
define GenerateComponentTargets .PHONY: component-
(2)-clean component-$(2)-build:
(2)-clean) | (2) (1),$(2)) build component-$(2)-clean: |
(2) (2)/component_project_vars.mk (1),$(2)) clean
(2): @mkdir -p (2) tell make it can build any component's library by invoking the -build target
(this target exists for all components even ones which don't build libraries, but it's
only invoked for the targets whose libraries appear in COMPONENT_LIBRARIES and hence the
APP_ELF dependencies.)
(2)/lib (2)-build $@'" # echo which build target built this file add a target to generate the component_project_vars.mk files that
are used to inject variables into project make pass (see matching
component_project_vars.mk target in component_wrapper.mk).
If any component_project_vars.mk file is out of date, the make
process will call this target to rebuild it and then restart.
(2)/component_project_vars.mk: $(1)/bouffalo.mk $(COMMON_MAKEFILES) $(SDKCONFIG_MAKEFILE) | (2) (1),$(2)) component_project_vars.mk endef define GenerateComponentNameTargets
(1)/lib (details) "Target '$$^' responsible for '$$@'" endef
(COMPONENT_PATHS),$(eval (component),$(notdir (foreach component, (eval (notdir $(component))))) app-clean:
(addsuffix -clean,$(notdir (summary) RM $(APP_ELF) rm -f $(APP_ELF) $(APP_BIN) $(APP_MAP) #flash: all # cd
(APP_BIN) SDK_BOARD= (PROJECT_NAME) SDK_MEDIA_BIN= (APP_ROMFS_DIR) SDK_DTS= (PROJECT_BOARD_XTAL) BL_FLASH_TOOL_INPUT_PATH_cfg2_bin_input= (PROJECT_PATH)/img_conf/partition_cfg_4M.toml --dts= (APP_BIN) #burn code to bl602 board, now only support BL602 IOT-DVK-3s platform, if you want to support older bl602 board you need change parameter port to /dev/ttyUSB0 flash: all cd
(APP_BIN) SDK_BOARD= (PROJECT_NAME) SDK_MEDIA_BIN= (APP_ROMFS_DIR) SDK_DTS= (PROJECT_BOARD_XTAL) BL_FLASH_TOOL_INPUT_PATH_cfg2_bin_input=$(APP_BIN) (SERIAL_BAUDRATE) --port= (BL60X_SDK_PATH)/tools/flash_tool/chips/bl602/partition/partition_cfg_4M.toml --dts= (BL60X_SDK_PATH)/tools/flash_tool/chips/bl602/builtin_imgs/boot2_isp_bl602_v6.5.1/boot2_iap_release.bin --firmware=$(APP_BIN) #cd (APP_BIN) SDK_BOARD= (PROJECT_NAME) SDK_MEDIA_BIN= (APP_ROMFS_DIR) SDK_DTS= (PROJECT_BOARD_XTAL) BL_FLASH_TOOL_INPUT_PATH_cfg2_bin_input= (SERIAL_BAUDRATE) --port= (BL60X_SDK_PATH)/tools/flash_tool/chips/bl602/partition/partition_cfg_4M.toml --dts= (APP_BIN) flash-only: cd (APP_BIN) SDK_BOARD= (PROJECT_NAME) SDK_MEDIA_BIN= (APP_ROMFS_DIR) SDK_DTS= (PROJECT_BOARD_XTAL) BL_FLASH_TOOL_INPUT_PATH_cfg2_bin_input=$(APP_BIN) (SERIAL_BAUDRATE) --port= (BL60X_SDK_PATH)/tools/flash_tool/chips/bl602/partition/partition_cfg_4M.toml --dts= (BL60X_SDK_PATH)/tools/flash_tool/chips/bl602/builtin_imgs/boot2_isp_bl602_v6.5.1/boot2_iap_release.bin --firmware=$(APP_BIN) flash-build: cd (APP_BIN) SDK_BOARD= (PROJECT_NAME) SDK_MEDIA_BIN= (APP_ROMFS_DIR) SDK_DTS= (PROJECT_BOARD_XTAL) BL_FLASH_TOOL_INPUT_PATH_cfg2_bin_input=$(APP_BIN) (BL60X_SDK_PATH)/tools/flash_tool/chips/bl602/partition/partition_cfg_4M.toml --dts= (BL60X_SDK_PATH)/tools/flash_tool/chips/bl602/builtin_imgs/boot2_isp_bl602_v6.5.1/boot2_iap_release.bin --firmware=$(APP_BIN) --build eflash: cd (APP_BIN) SDK_BOARD= (PROJECT_NAME) SDK_MEDIA_BIN= (APP_ROMFS_DIR) SDK_DTS= (PROJECT_BOARD_XTAL) BL_FLASH_TOOL_INPUT_PATH_cfg2_bin_input=$(APP_BIN) (SERIAL_BAUDRATE) --port= (BL60X_SDK_PATH)/tools/flash_tool/chips/bl602/partition/partition_cfg_4M.toml --dts= (BL60X_SDK_PATH)/tools/flash_tool/chips/bl602/builtin_imgs/boot2_isp_bl602_v6.5.1/boot2_iap_release.bin --firmware=$(APP_BIN) clean: app-clean
erase_flash: cd
(APP_BIN) SDK_BOARD= (PROJECT_NAME) SDK_MEDIA_BIN= (APP_ROMFS_DIR) SDK_DTS= (PROJECT_BOARD_XTAL) BL_FLASH_TOOL_INPUT_PATH_cfg2_bin_input=$(APP_BIN) (SERIAL_BAUDRATE) --port= (BL60X_SDK_PATH)/tools/flash_tool/chips/bl602/eflash_loader/eflash_loader_40m.bin --erase PHONY target to list components in the build and their paths
list-components: $(info
(SEPARATOR))) (foreach cd, (info (info (SEPARATOR))) (info (info (SEPARATOR))) (info $(if (EXCLUDE_COMPONENTS),(none provided))) $(info (SEPARATOR))) (foreach cp, (info $(cp))) local-ci-test: ../../tools/ci/scripts/local-ci-test.sh

最终在ota目录生成[color=rgba(0, 0, 0, 0.75)]FW_OTA.bin.xz需要的OTA文件 [color=rgba(0, 0, 0, 0.75)]tools/flash_tool/chips/bl602/ota 目录下生成 6 种 OTA 固件,分别是: [color=rgba(0, 0, 0, 0.75)]FW_OTA.bin:在编译生成的 bin 的头部追加 4K bytes 的 Boot2 Head [color=rgba(0, 0, 0, 0.75)]FW_OTA.bin.hash:在 FW_OTA.bin 尾部追加对其计算的 32 bytes的 Hash 值(sha256) [color=rgba(0, 0, 0, 0.75)]FW_OTA.bin.ota:在 FW_OTA.bin 的头部追加 512 bytes 的 OTA Head [color=rgba(0, 0, 0, 0.75)]FW_OTA.bin.xz:对 FW_OTA.bin 进行 xz 压缩 [color=rgba(0, 0, 0, 0.75)]FW_OTA.bin.xz.hash:在 FW_OTA.bin.xz 尾部追加对其计算的 32 bytes 的 Hash 值(sha256) [color=rgba(0, 0, 0, 0.75)]FW_OTA.bin.xz.ota:在 FW_OTA.bin.xz 头部追加 512 bytes 的 OTA Hea
搭建 HTTP 服务器 OTA 升级时,固件会从 HTTP 服务器下载 OTA 固件进行升级,因此本机需要先搭建好 HTTP 服务器供模组下载固件。
搭建 HTTP 服务器的过程非常简单,只需要安装好 Python 3,然后在 tools/flash_tool/chips/bl602/ota 下执行以下命令即可: python3 -m http.server 9090 
第一次需Uart烧写一次,把文件分区、Boot2烧好。 烧录好固件:make flash
查看主机IP地址。 
AI-WB2边上路由器,在串口软件一个命令搞定

ota_http_cmd 192.168.88.115 ota host=192.168.88.115 [HTTPC] hdr_len is 204, content_len is 384976 [MTD] >>>>>> Hanlde info Dump >>>>>> name FW id 0 offset 0x000e8000(950272) size 0x00088000(544Kbytes) xip_addr 0x00000000 [MTD] <<<<<< Hanlde info End <<<<<< otaTotalLength : 384976, bin_size : 557056 [HTTPC] Received 688 Bytes otaoffset : 688 [OTA] [HEADER] ota header is BL60X_OTA_Ver1.0 [OTA] [HEADER] file type is XZ [OTA] [HEADER] file length (exclude ota header) is 384464 [OTA] [HEADER] ver_hardware is BFL_Module_v1.1 [OTA] [HEADER] ver_software is EVENT_V1.1.1 [OTA] [HEADER] sha256 is C306AFD98DDBBC7C10C849E30791AA323BBF9E4501840BF3535233F73B3A30DC [HTTPC] Received 688 Bytes otaoffset : 864 Write 864[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 1552[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 2240[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 2928[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 3616[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 4304[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 4992[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 5680[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 6368[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 7056[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 7744[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 8432[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 9120[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 9808[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 10496[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 11184[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 11872[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 12560[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 13248[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 13936[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 14624[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 15312[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 16000[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 16688[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 17376[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 18064[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 18752[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 19440[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 20128[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 20816[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 21504[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 22192[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 22880[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 23568[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 24256[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 24944[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 25632[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 26320[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 27008[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 27696[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 28384[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 29072[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 29760[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 30448[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 31136[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 31824[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 32512[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 33200[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 33888[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 34576[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 35264[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 35952[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 36640[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 37328[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 38016[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 38704[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 39392[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 40080[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 40768[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 41456[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 42144[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 42832[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 43520[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 44208[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 44896[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 45584[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 46272[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 46960[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 47648[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 48336[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 49024[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 49712[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 50400[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 51088[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 51776[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 52464[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 53152[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 53840[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 54528[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 55216[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 55904[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 56592[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 57280[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 57968[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 58656[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 59344[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 60032[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 60720[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 61408[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 62096[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 62784[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 63472[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 64160[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 64848[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 65536[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 66224[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 66912[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 67600[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 68288[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 68976[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 69664[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 70352[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 71040[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 71728[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 72416[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 73104[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 73792[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 74480[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 75168[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 75856[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 76544[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 77232[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 77920[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 78608[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 79296[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 79984[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 80672[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 81360[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 82048[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 82736[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 83424[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 84112[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 84800[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 85488[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 86176[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 86864[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 87552[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 88240[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 88928[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 89616[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 90304[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 90992[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 91680[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 92368[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 93056[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 93744[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 94432[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 95120[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 95808[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 96496[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 97184[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 97872[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 98560[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 99248[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 99936[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 100624[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 101312[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 102000[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 102688[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 103376[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 104064[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 104752[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 105440[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 106128[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 106816[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 107504[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 108192[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 108880[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 109568[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 110256[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 110944[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 111632[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 112320[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 113008[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 113696[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 114384[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 115072[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 115760[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 116448[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 117136[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 117824[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 118512[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 119200[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 119888[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 120576[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 121264[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 121952[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 122640[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 123328[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 124016[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 124704[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 125392[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 126080[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 126768[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 127456[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 128144[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 128832[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 129520[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 130208[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 130896[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 131584[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 132272[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 132960[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 133648[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 134336[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 135024[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 135712[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 136400[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 137088[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 137776[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 138464[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 139152[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 139840[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 140528[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 141216[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 141904[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 142592[384976] [HTTPC] Received 1376 Bytes otaoffset : 1376 Write 143968[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 144656[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 145344[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 146032[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 146720[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 147408[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 148096[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 148784[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 149472[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 150160[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 150848[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 151536[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 152224[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 152912[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 153600[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 154288[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 154976[384976] [HTTPC] Received 1376 Bytes otaoffset : 1376 Write 156352[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 157040[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 157728[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 158416[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 159104[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 159792[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 160480[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 161168[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 161856[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 162544[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 163232[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 163920[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 164608[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 165296[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 165984[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 166672[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 167360[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 168048[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 168736[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 169424[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 170112[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 170800[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 171488[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 172176[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 172864[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 173552[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 174240[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 174928[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 175616[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 176304[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 176992[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 177680[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 178368[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 179056[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 179744[384976] [HTTPC] Received 1376 Bytes otaoffset : 1376 Write 181120[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 181808[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 182496[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 183184[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 183872[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 184560[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 185248[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 185936[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 186624[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 187312[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 188000[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 188688[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 189376[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 190064[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 190752[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 191440[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 192128[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 192816[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 193504[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 194192[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 194880[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 195568[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 196256[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 196944[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 197632[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 198320[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 199008[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 199696[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 200384[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 201072[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 201760[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 202448[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 203136[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 203824[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 204512[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 205200[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 205888[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 206576[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 207264[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 207952[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 208640[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 209328[384976] [HTTPC] Received 1376 Bytes otaoffset : 1376 Write 210704[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 211392[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 212080[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 212768[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 213456[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 214144[384976] [HTTPC] Received 1376 Bytes otaoffset : 1376 Write 215520[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 216208[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 216896[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 217584[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 218272[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 218960[384976] [HTTPC] Received 1376 Bytes otaoffset : 1376 Write 220336[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 221024[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 221712[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 222400[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 223088[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 223776[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 224464[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 225152[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 225840[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 226528[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 227216[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 227904[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 228592[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 229280[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 229968[384976] [HTTPC] Received 1376 Bytes otaoffset : 1376 Write 231344[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 232032[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 232720[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 233408[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 234096[384976] [HTTPC] Received 1376 Bytes otaoffset : 1376 Write 235472[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 236160[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 236848[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 237536[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 238224[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 238912[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 239600[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 240288[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 240976[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 241664[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 242352[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 243040[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 243728[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 244416[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 245104[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 245792[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 246480[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 247168[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 247856[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 248544[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 249232[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 249920[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 250608[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 251296[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 251984[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 252672[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 253360[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 254048[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 254736[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 255424[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 256112[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 256800[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 257488[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 258176[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 258864[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 259552[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 260240[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 260928[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 261616[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 262304[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 262992[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 263680[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 264368[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 265056[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 265744[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 266432[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 267120[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 267808[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 268496[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 269184[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 269872[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 270560[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 271248[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 271936[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 272624[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 273312[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 274000[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 274688[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 275376[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 276064[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 276752[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 277440[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 278128[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 278816[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 279504[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 280192[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 280880[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 281568[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 282256[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 282944[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 283632[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 284320[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 285008[384976] [HTTPC] Received 1376 Bytes otaoffset : 1376 Write 286384[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 287072[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 287760[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 288448[384976] [HTTPC] Received 1376 Bytes otaoffset : 1376 Write 289824[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 290512[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 291200[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 291888[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 292576[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 293264[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 293952[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 294640[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 295328[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 296016[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 296704[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 297392[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 298080[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 298768[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 299456[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 300144[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 300832[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 301520[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 302208[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 302896[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 303584[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 304272[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 304960[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 305648[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 306336[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 307024[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 307712[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 308400[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 309088[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 309776[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 310464[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 311152[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 311840[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 312528[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 313216[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 313904[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 314592[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 315280[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 315968[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 316656[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 317344[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 318032[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 318720[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 319408[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 320096[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 320784[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 321472[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 322160[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 322848[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 323536[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 324224[384976] [HTTPC] Received 1376 Bytes otaoffset : 1376 Write 325600[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 326288[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 326976[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 327664[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 328352[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 329040[384976] [HTTPC] Received 1376 Bytes otaoffset : 1376 Write 330416[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 331104[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 331792[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 332480[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 333168[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 333856[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 334544[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 335232[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 335920[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 336608[384976] [HTTPC] Received 1376 Bytes otaoffset : 1376 Write 337984[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 338672[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 339360[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 340048[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 340736[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 341424[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 342112[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 342800[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 343488[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 344176[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 344864[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 345552[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 346240[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 346928[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 347616[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 348304[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 348992[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 349680[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 350368[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 351056[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 351744[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 352432[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 353120[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 353808[384976] [HTTPC] Received 1376 Bytes otaoffset : 1376 Write 355184[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 355872[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 356560[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 357248[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 357936[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 358624[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 359312[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 360000[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 360688[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 361376[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 362064[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 362752[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 363440[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 364128[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 364816[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 365504[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 366192[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 366880[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 367568[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 368256[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 368944[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 369632[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 370320[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 371008[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 371696[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 372384[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 373072[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 373760[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 374448[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 375136[384976] proc_hellow_entry: RISC-V rv32imafc [HTTPC] Received 688 Bytes otaoffset : 688 Write 375824[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 376512[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 377200[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 377888[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 378576[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 379264[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 379952[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 380640[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 381328[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 382016[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 382704[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 383392[384976] [HTTPC] Received 688 Bytes otaoffset : 688 Write 384080[384976] [HTTPC] Received 384 Bytes otaoffset : 384 Write 384464[384976]
Calculated SHA256 Checksum:C306AFD98DDBBC7C10C849E30791AA323BBF9E4501840BF3535233F73B3A30DC Header SET SHA256 Checksum:C306AFD98DDBBC7C10C849E30791AA323BBF9E4501840BF3535233F73B3A30DC [OTA] [TCP] prepare OTA partition info [OTA] [TCP] Update PARTIION, partition len is 384464
上传的附件: 
demo_ota ok.rar(104.27 KB, 下载次数: 15)
参考 博流官方资料,官司方有点错误 空中升级(OTA
OTA 升级机制可以让设备在固件正常运行时根据接收数据(如通过 Wi-Fi )进行自我更新。
目前 OTA 采用A/B区pingpong设计,OTA文件有两种类型,压缩和非压缩,其中压缩算法采用xz压缩算法,压缩率约为50%-60%。OTA之前需要check一下分区表的 FW 分区的size0和size1是否满足OTA需求。
不是 A/B区pingpong设计。
[pt_table] #partition table is 4K in size address0 = 0xE000 address1 = 0xF000
[[pt_entry]]
📜 点击展开完整代码
type = 0
name = "FW"
device = 0
address0 = 0x10000
size0 = 0x100000
address1 = 0x110000
size1 = 0x100000compressed image must set len,normal image can left it to 0
len = 0
[[pt_entry]]
📜 点击展开完整代码
type = 0
name = "spiffs"
device = 0
address0 = 0x210000
size0 = 0x28000
address1 = 0x238000
size1 = 0x8000compressed image must set len,normal image can left it to 0
len = 0
[[pt_entry]]
📜 点击展开完整代码
type = 2
name = "mfg"
device = 0
address0 = 0x240000
size0 = 0x32000
address1 = 0
size1 = 0compressed image must set len,normal image can left it to 0
len = 0
[[pt_entry]]
📜 点击展开完整代码
type = 3
name = "media"
device = 0
address0 = 0x272000
size0 = 0x1000
address1 = 0
size1 = 0compressed image must set len,normal image can left it to 0
len = 0
[[pt_entry]]
📜 点击展开完整代码
type = 4
name = "SM"
device = 0
address0 = 0x273000
size0 = 0x33000
address1 = 0
size1 = 0compressed image must set len,normal image can left it to 0
len = 0
[[pt_entry]]
📜 点击展开完整代码
type = 5
name = "KEY"
device = 0
address0 = 0x2A6000
size0 = 0x2000
address1 = 0
size1 = 0compressed image must set len,normal image can left it to 0
len = 0
[[pt_entry]]
📜 点击展开完整代码
type = 6
name = "DATA"
device = 0
address0 = 0x2A8000
size0 = 0x5000
address1 = 0
size1 = 0compressed image must set len,normal image can left it to 0
len = 0
[[pt_entry]]
📜 点击展开完整代码
type = 7
name = "factory"
device = 0
address0 = 0x2AD000
size0 = 0x7000
address1 = 0
size1 = 0compressed image must set len,normal image can left it to 0
len = 0
#if user want to put RF calibration data on flash, uncomment following pt entry #[[pt_entry]] #type = 8 #name = "rf_para" #device = 0 #address0 = 0x1FF000 #size0 = 0x1000 #address1 = 0 #size1 = 0
compressed image must set len,normal image can left it to 0
#len = 0
[[pt_entry]]
📜 点击展开完整代码
type = 0
name = "spiffs"
device = 0
address0 = 0x210000 ##给spiffs文件系统用,开始地址
size0 = 0x28000 ##给spiffs文件系统用,大小
address1 = 0x238000 ##给easyflash文件系统用,开始地址
size1 = 0x8000 ##给easyflash文件系统用,大小compressed image must set len,normal image can left it to 0
len = 0
[[pt_entry]]
📜 点击展开完整代码
type = 0
name = "FW"
device = 0
address0 = 0x10000
size0 = 0x100000
address1 = 0x110000
size1 = 0x100000compressed image must set len,normal image can left it to 0
len = 0 是下载到address1 = 0x110000地址容间里,重起后,再解压复制到address0 = 0x10000。

