Skip to content

Commit 76977d1

Browse files
committed
Added recipe and script to create Insights package
1 parent 2456199 commit 76977d1

File tree

3 files changed

+64
-1
lines changed

3 files changed

+64
-1
lines changed

platform.txt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ tools.esp_ota.cmd.windows="{runtime.platform.path}/tools/espota.exe" -r
2424
tools.gen_esp32part.cmd=python3 "{runtime.platform.path}/tools/gen_esp32part.py"
2525
tools.gen_esp32part.cmd.windows="{runtime.platform.path}/tools/gen_esp32part.exe"
2626

27+
tools.gen_insights_pkg.cmd = python3 {runtime.platform.path}/tools/gen_insights_package.py
28+
tools.gen_insights_pkg.cmd.windows = {runtime.platform.path}/tools/gen_insights_package.exe
29+
2730
compiler.path={runtime.tools.{build.tarch}-{build.target}-elf-gcc.path}/bin/
2831
compiler.sdk.path={runtime.platform.path}/tools/sdk/{build.mcu}
2932
compiler.prefix={build.tarch}-{build.target}-elf-
@@ -211,10 +214,15 @@ recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" "-Wl,--Map={build
211214
recipe.objcopy.partitions.bin.pattern={tools.gen_esp32part.cmd} -q "{build.path}/partitions.csv" "{build.path}/{build.project_name}.partitions.bin"
212215

213216
## Create bin
214-
recipe.objcopy.bin.pattern_args=--chip {build.mcu} elf2image --flash_mode "{build.flash_mode}" --flash_freq "{build.flash_freq}" --flash_size "{build.flash_size}" -o "{build.path}/{build.project_name}.bin" "{build.path}/{build.project_name}.elf"
217+
recipe.objcopy.bin.pattern_args=--chip {build.mcu} elf2image --flash_mode "{build.flash_mode}" --flash_freq "{build.flash_freq}" --flash_size "{build.flash_size}" --elf-sha256-offset 0xb0 -o "{build.path}/{build.project_name}.bin" "{build.path}/{build.project_name}.elf"
215218
recipe.objcopy.bin.pattern="{tools.esptool_py.path}/{tools.esptool_py.cmd}" {recipe.objcopy.bin.pattern_args}
216219
recipe.objcopy.bin.pattern.linux=python3 "{tools.esptool_py.path}/{tools.esptool_py.cmd}" {recipe.objcopy.bin.pattern_args}
217220

221+
## Create Insights Firmware Package
222+
recipe.hooks.objcopy.postobjcopy.1.pattern_args={build.path} {build.project_name} {build.path}
223+
recipe.hooks.objcopy.postobjcopy.1.pattern=bash -c "[ -d {build.path}/libraries/Insights ] && {tools.gen_insights_pkg.cmd} {recipe.hooks.objcopy.postobjcopy.1.pattern_args}"
224+
recipe.hooks.objcopy.postobjcopy.1.pattern.windows=cmd /c if exist "{build.path}\libraries\Insights" ({tools.gen_insights_pkg.cmd} {recipe.hooks.objcopy.postobjcopy.1.pattern_args})
225+
218226
## Save bin
219227
recipe.output.tmp_file={build.project_name}.bin
220228
recipe.output.save_file={build.project_name}.{build.variant}.bin

tools/gen_insights_package.exe

3.62 MB
Binary file not shown.

tools/gen_insights_package.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import os
2+
import sys
3+
import shutil
4+
import json
5+
6+
APP_HEADER_SIZE = 32
7+
VERSION_NAME_OFFSET = APP_HEADER_SIZE + 16
8+
VERSION_NAME_SIZE = 32
9+
PROJECT_NAME_OFFSET = VERSION_NAME_OFFSET + VERSION_NAME_SIZE
10+
PROJECT_NAME_SIZE = 32
11+
12+
# Input path of temporary build directory created by Arduino
13+
BUILD_DIR=sys.argv[1]
14+
# Input project name
15+
PROJ_NAME=sys.argv[2]
16+
# Input path to create output package
17+
TARGET_PATH=sys.argv[3]
18+
19+
def main():
20+
print("Creating ESP Insights Firmware Package.")
21+
archive_path = os.path.join(TARGET_PATH, PROJ_NAME)
22+
23+
# Create target archive directories
24+
os.makedirs(archive_path, exist_ok = True)
25+
os.makedirs(os.path.join(archive_path, "partition_table"), exist_ok = True)
26+
os.makedirs(os.path.join(archive_path, "bootloader"), exist_ok = True)
27+
28+
# Copy files from build directory to archive directory
29+
shutil.copy2(os.path.join(BUILD_DIR, PROJ_NAME + ".bin"), archive_path)
30+
shutil.copy2(os.path.join(BUILD_DIR, PROJ_NAME + ".elf"), archive_path)
31+
shutil.copy2(os.path.join(BUILD_DIR, PROJ_NAME + ".map"), archive_path)
32+
shutil.copy2(os.path.join(BUILD_DIR, "partitions.csv"), archive_path)
33+
shutil.copy2(os.path.join(BUILD_DIR, PROJ_NAME + ".bootloader.bin"), os.path.join(archive_path, "bootloader"))
34+
shutil.copy2(os.path.join(BUILD_DIR, PROJ_NAME + ".partitions.bin"), os.path.join(archive_path, "partition_table"))
35+
36+
with open(os.path.join(BUILD_DIR, PROJ_NAME + ".bin"), 'rb') as bin_file:
37+
bin_file.seek(VERSION_NAME_OFFSET)
38+
version_name = (bin_file.read(VERSION_NAME_SIZE).decode('utf-8')).split('\x00', 1)[0]
39+
bin_file.seek(PROJECT_NAME_OFFSET)
40+
project_name = (bin_file.read(PROJECT_NAME_SIZE).decode('utf-8')).split('\x00', 1)[0]
41+
project_build_config_obj = {
42+
"project" : {
43+
"name" : project_name,
44+
"version": version_name
45+
}
46+
}
47+
with open(os.path.join(archive_path, "project_build_config.json"), "w") as json_file:
48+
json_file.write(json.dumps(project_build_config_obj))
49+
50+
shutil.make_archive(archive_path, "zip", TARGET_PATH, PROJ_NAME)
51+
print("Archive created at {}".format(archive_path + ".zip"))
52+
return
53+
54+
if __name__ == '__main__':
55+
main()

0 commit comments

Comments
 (0)