Skip to content

Commit 2f4fd83

Browse files
committed
contrib/loaders: replace old espressif stub with the new one
1 parent b8f88d4 commit 2f4fd83

File tree

601 files changed

+9817
-36321
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

601 files changed

+9817
-36321
lines changed

.gitlab-ci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ stages:
22
- pre_check
33
- static_analyzers
44
- build_openocd
5+
- test_stub_lib
56

67
image: $CI_DOCKER_REGISTRY/openocd-ci-env:1
78

@@ -53,3 +54,4 @@ include:
5354
- '.gitlab/ci/util.yml'
5455
- '.gitlab/ci/build.yml'
5556
- '.gitlab/ci/pre-check.yml'
57+
- '.gitlab/ci/stub-lib.yml'

.gitlab/ci/pre-check.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ style_check:
66
- tools/check-line-endings.sh $PWD
77
- tools/checkpatch-esp.sh
88

9-
esp_config_check:
9+
.esp_config_check:
1010
stage: pre_check
1111
image: $CI_DOCKER_REGISTRY/esp32-ci-env
1212
tags:

.gitlab/ci/stub-lib.yml

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
.test_stublib_template:
2+
stage: test_stub_lib
3+
image: $CI_DOCKER_REGISTRY/target-test-env-v6.0:2
4+
tags:
5+
- $CHIP_NAME
6+
- jtag
7+
allow_failure: true
8+
variables:
9+
RUNNER_SCRIPT_TIMEOUT: 5m
10+
TEST_RUN_DIR: "build_test_app_${CHIP_NAME}_stublib_test"
11+
TEST_RUN_EXTRA_OPTS: "-r --no-load --no-gdb -b ${TEST_BOARD} -p test_oocd.StubTestsSimple"
12+
artifacts:
13+
paths:
14+
- $TEST_RUN_DIR/debug_backend_tests.log
15+
reports:
16+
junit:
17+
- $TEST_RUN_DIR/results/*
18+
when: always
19+
expire_in: 1 week
20+
needs:
21+
- job: build_linux_arm64_test
22+
- job: build_linux_armhf_test
23+
before_script:
24+
- pip install unittest-xml-reporting --no-deps
25+
- >
26+
machine="$(uname -m)";
27+
if [[ "$machine" == "armv7l" ]] ; then
28+
export PLATFORM_NAME="linux-armhf-test";
29+
elif [[ "$machine" == "aarch64" ]] ; then
30+
export PLATFORM_NAME="linux-arm64-test";
31+
fi;
32+
echo "PLATFORM_NAME: ${PLATFORM_NAME}";
33+
script:
34+
- mkdir ${TEST_RUN_DIR}
35+
- ARCHIVE_NAME=$(cat ${DIST_ART_DIR}/dist_name_${PLATFORM_NAME})
36+
- tar -C ${TEST_RUN_DIR} -x -m -f ${DIST_ART_DIR}/${ARCHIVE_NAME}
37+
- export DIST_DIR=${PWD}/${TEST_RUN_DIR}/${DIST_INSTALLED_DIR}
38+
- export PYTHONPATH=$PWD/${TEST_RUN_DIR}:$PWD/testing/esp/py_debug_backend
39+
- testing/esp/run_tests.py -o $DIST_DIR/bin/openocd -s $DIST_DIR/share/openocd/scripts -a $PWD/$TEST_RUN_DIR -d 4 -l $PWD/$TEST_RUN_DIR/debug_backend_tests.log -tr x -to $PWD/$TEST_RUN_DIR/results $TEST_RUN_EXTRA_OPTS
40+
41+
test_stublib_esp32:
42+
extends:
43+
- .test_stublib_template
44+
variables:
45+
CHIP_NAME: esp32
46+
TEST_BOARD: "esp32-wrover-kit-3.3v"
47+
48+
test_stublib_esp32s2:
49+
extends:
50+
- .test_stublib_template
51+
variables:
52+
CHIP_NAME: esp32s2
53+
TEST_BOARD: "esp32s2-devkitj"
54+
55+
test_stublib_esp32s3:
56+
extends:
57+
- .test_stublib_template
58+
variables:
59+
CHIP_NAME: esp32s3
60+
TEST_BOARD: "esp32s3-ftdi"
61+
62+
test_stublib_esp32c2:
63+
extends:
64+
- .test_stublib_template
65+
variables:
66+
CHIP_NAME: esp32c2
67+
TEST_BOARD: "esp32s2-ftdi"
68+
69+
test_stublib_esp32c3:
70+
extends:
71+
- .test_stublib_template
72+
variables:
73+
CHIP_NAME: esp32c3
74+
TEST_BOARD: "esp32c3-ftdi"
75+
76+
test_stublib_esp32c5:
77+
extends:
78+
- .test_stublib_template
79+
tags:
80+
- esp32c5
81+
- usb_serial_jtag
82+
variables:
83+
CHIP_NAME: esp32c5
84+
TEST_BOARD: "esp32c5-builtin"
85+
86+
test_stublib_esp32c6:
87+
extends:
88+
- .test_stublib_template
89+
tags:
90+
- esp32c6
91+
- usb_serial_jtag
92+
variables:
93+
CHIP_NAME: esp32c6
94+
TEST_BOARD: "esp32c6-builtin"
95+
96+
test_stublib_esp32c61:
97+
extends:
98+
- .test_stublib_template
99+
tags:
100+
- esp32c61
101+
- usb_serial_jtag
102+
variables:
103+
CHIP_NAME: esp32c61
104+
TEST_BOARD: "esp32c61-builtin"
105+
106+
test_stublib_esp32h2:
107+
extends:
108+
- .test_stublib_template
109+
tags:
110+
- esp32h2
111+
- usb_serial_jtag
112+
variables:
113+
CHIP_NAME: esp32h2
114+
TEST_BOARD: "esp32h2-builtin"
115+
116+
test_stublib_esp32p4:
117+
extends:
118+
- .test_stublib_template
119+
variables:
120+
CHIP_NAME: esp32p4
121+
TEST_BOARD: "esp32p4-ftdi"

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,6 @@
55
[submodule "src/jtag/drivers/libjaylink"]
66
path = src/jtag/drivers/libjaylink
77
url = https://gitlab.zapb.de/libjaylink/libjaylink.git
8+
[submodule "contrib/loaders/flash/espressif/esp-stub-lib"]
9+
path = contrib/loaders/flash/espressif/esp-stub-lib
10+
url = https://github.com/espressif/esp-stub-lib.git

CMakeLists.txt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,14 @@ install(FILES contrib/60-openocd.rules DESTINATION ${pkgdatadir}/contrib)
3131
install(DIRECTORY contrib/libdcc DESTINATION ${pkgdatadir}/contrib)
3232
install(FILES tools/esp_detect_config.py DESTINATION ${pkgdatadir}/espressif/tools)
3333
install(FILES tools/esp_problems_hints.yml DESTINATION ${pkgdatadir}/espressif/tools)
34-
install(FILES contrib/loaders/flash/espressif/esp32c6/inc/stub_flash_idf_binary_code.inc DESTINATION ${pkgdatadir}/espressif/stub_bins/esp32c6)
35-
install(FILES contrib/loaders/flash/espressif/esp32c6/inc/stub_flash_idf_binary_data.inc DESTINATION ${pkgdatadir}/espressif/stub_bins/esp32c6)
36-
install(FILES contrib/loaders/flash/espressif/esp32c6/stub_flash_idf_image.h DESTINATION ${pkgdatadir}/espressif/stub_bins/esp32c6)
37-
install(FILES contrib/loaders/flash/espressif/esp32h2/inc/stub_flash_idf_binary_code.inc DESTINATION ${pkgdatadir}/espressif/stub_bins/esp32h2)
38-
install(FILES contrib/loaders/flash/espressif/esp32h2/inc/stub_flash_idf_binary_data.inc DESTINATION ${pkgdatadir}/espressif/stub_bins/esp32h2)
39-
install(FILES contrib/loaders/flash/espressif/esp32h2/stub_flash_idf_image.h DESTINATION ${pkgdatadir}/espressif/stub_bins/esp32h2)
34+
35+
#TODO: enable when the stub code is ready
36+
#install(FILES contrib/loaders/flash/espressif/esp32c6/inc/stub_flash_idf_binary_code.inc DESTINATION ${pkgdatadir}/espressif/stub_bins/esp32c6)
37+
#install(FILES contrib/loaders/flash/espressif/esp32c6/inc/stub_flash_idf_binary_data.inc DESTINATION ${pkgdatadir}/espressif/stub_bins/esp32c6)
38+
#install(FILES contrib/loaders/flash/espressif/esp32c6/stub_flash_idf_image.h DESTINATION ${pkgdatadir}/espressif/stub_bins/esp32c6)
39+
#install(FILES contrib/loaders/flash/espressif/esp32h2/inc/stub_flash_idf_binary_code.inc DESTINATION ${pkgdatadir}/espressif/stub_bins/esp32h2)
40+
#install(FILES contrib/loaders/flash/espressif/esp32h2/inc/stub_flash_idf_binary_data.inc DESTINATION ${pkgdatadir}/espressif/stub_bins/esp32h2)
41+
#install(FILES contrib/loaders/flash/espressif/esp32h2/stub_flash_idf_image.h DESTINATION ${pkgdatadir}/espressif/stub_bins/esp32h2)
4042
get_property(ulink_firmware TARGET ocdjtagdrivers PROPERTY ULINK_FIRMWARE)
4143
if(BUILD_JLINK)
4244
install(FILES ${ulink_firmware} DESTINATION ${pkgdatadir}/OpenULINK)

Makefile.am

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,18 @@ dist_esptools_DATA = \
2222
tools/esp_detect_config.py \
2323
tools/esp_problems_hints.yml
2424

25-
esp32c6stubsdir = $(pkgdatadir)/espressif/stub_bins/esp32c6
26-
dist_esp32c6stubs_DATA = \
27-
contrib/loaders/flash/espressif/esp32c6/inc/stub_flash_idf_binary_code.inc \
28-
contrib/loaders/flash/espressif/esp32c6/inc/stub_flash_idf_binary_data.inc \
29-
contrib/loaders/flash/espressif/esp32c6/stub_flash_idf_image.h
30-
31-
esp32h2stubsdir = $(pkgdatadir)/espressif/stub_bins/esp32h2
32-
dist_esp32h2stubs_DATA = \
33-
contrib/loaders/flash/espressif/esp32h2/inc/stub_flash_idf_binary_code.inc \
34-
contrib/loaders/flash/espressif/esp32h2/inc/stub_flash_idf_binary_data.inc \
35-
contrib/loaders/flash/espressif/esp32h2/stub_flash_idf_image.h
25+
#TODO: enable when the stub code is ready
26+
#esp32c6stubsdir = $(pkgdatadir)/espressif/stub_bins/esp32c6
27+
#dist_esp32c6stubs_DATA = \
28+
# contrib/loaders/flash/espressif/esp32c6/inc/stub_flash_idf_binary_code.inc \
29+
# contrib/loaders/flash/espressif/esp32c6/inc/stub_flash_idf_binary_data.inc \
30+
# contrib/loaders/flash/espressif/esp32c6/stub_flash_idf_image.h
31+
32+
#esp32h2stubsdir = $(pkgdatadir)/espressif/stub_bins/esp32h2
33+
#dist_esp32h2stubs_DATA = \
34+
# contrib/loaders/flash/espressif/esp32h2/inc/stub_flash_idf_binary_code.inc \
35+
# contrib/loaders/flash/espressif/esp32h2/inc/stub_flash_idf_binary_data.inc \
36+
# contrib/loaders/flash/espressif/esp32h2/stub_flash_idf_image.h
3637

3738
SUBDIRS =
3839
DIST_SUBDIRS =
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
cmake_minimum_required(VERSION 3.27)
2+
3+
include(${CMAKE_CURRENT_LIST_DIR}/cmake/util.cmake)
4+
5+
validate_esp_target(${ESP_TARGET})
6+
7+
include(${CMAKE_CURRENT_LIST_DIR}/cmake/build-flags.cmake)
8+
9+
setup_toolchain(${ESP_TARGET} "${XTENSA_TARGETS}")
10+
11+
project(openocd_stub LANGUAGES C CXX ASM)
12+
13+
check_toolchain_version(${CMAKE_C_COMPILER} "esp-15.2.0_20250929")
14+
15+
# Add common flags and definitions to all targets
16+
add_compile_options(${TARGET_COMPILER_FLAGS})
17+
add_link_options(${COMMON_LINKER_FLAGS})
18+
add_compile_definitions(${COMMON_COMPILE_DEFS})
19+
20+
set(LINKER_SCRIPTS
21+
${CMAKE_CURRENT_LIST_DIR}/ld/${ESP_TARGET}.ld
22+
${CMAKE_CURRENT_LIST_DIR}/ld/common.ld
23+
)
24+
25+
set(SRC_DIR "${CMAKE_CURRENT_LIST_DIR}/src")
26+
set(SRC_FILES
27+
${SRC_DIR}/stub_main.c
28+
${SRC_DIR}/apptrace/src/apptrace_mem_ctrl.c
29+
${SRC_DIR}/apptrace/src/stub_apptrace.c
30+
${SRC_DIR}/test/src/flash_test.c
31+
)
32+
if(ESP_TARGET IN_LIST XTENSA_TARGETS)
33+
list(APPEND SRC_FILES ${SRC_DIR}/apptrace/src/apptrace_hw_xtensa.c)
34+
else()
35+
list(APPEND SRC_FILES ${SRC_DIR}/apptrace/src/apptrace_hw_riscv.c)
36+
endif()
37+
38+
# Define command names. Should be the same order as the commands in the esp_stub.h file
39+
set(COMMANDS
40+
"cmd_test1"
41+
"cmd_recv_from_host"
42+
"cmd_send_to_host"
43+
"cmd_flash_info"
44+
"cmd_flash_test"
45+
"cmd_test_all"
46+
)
47+
48+
# Define enabled macros for each command
49+
define_property(GLOBAL PROPERTY COMMAND_MACROS)
50+
set_property(GLOBAL PROPERTY COMMAND_MACROS:cmd_test1 STUB_CMD_TEST1)
51+
set_property(GLOBAL PROPERTY COMMAND_MACROS:cmd_recv_from_host STUB_CMD_RECV_FROM_HOST)
52+
set_property(GLOBAL PROPERTY COMMAND_MACROS:cmd_send_to_host STUB_CMD_SEND_TO_HOST)
53+
set_property(GLOBAL PROPERTY COMMAND_MACROS:cmd_flash_info STUB_CMD_FLASH_INFO)
54+
set_property(GLOBAL PROPERTY COMMAND_MACROS:cmd_flash_test STUB_CMD_FLASH_TEST)
55+
set_property(GLOBAL PROPERTY COMMAND_MACROS:cmd_test_all
56+
STUB_CMD_TEST1
57+
STUB_CMD_RECV_FROM_HOST
58+
STUB_CMD_SEND_TO_HOST
59+
STUB_CMD_FLASH_INFO
60+
STUB_CMD_FLASH_TEST
61+
STUB_LOG_ENABLED
62+
STUB_LIB_LOG_BUF
63+
STUB_LIB_LOG_BUF_SIZE=8192
64+
)
65+
66+
# Create a list to hold all target names
67+
set(ALL_TARGETS)
68+
69+
# Iterate over each command and create a separate target
70+
foreach(COMMAND ${COMMANDS})
71+
string(TOUPPER ${COMMAND} COMMAND_UPPER)
72+
set(TARGET_NAME stub_${ESP_TARGET}_${COMMAND})
73+
set(TARGET_ELF ${TARGET_NAME}.elf)
74+
set(ESP_STUB_LIB esp-stub-lib-${COMMAND})
75+
set(STUB_COMMAND ${COMMAND})
76+
string(TOUPPER ${ESP_TARGET} ESP_TARGET_NAME)
77+
78+
add_executable(${TARGET_ELF} ${SRC_FILES})
79+
80+
set(PRIV_INCLUDE_DIRS
81+
${CMAKE_CURRENT_SOURCE_DIR}/include
82+
${CMAKE_CURRENT_SOURCE_DIR}/include/private
83+
${CMAKE_CURRENT_SOURCE_DIR}/src/apptrace/include
84+
${CMAKE_CURRENT_SOURCE_DIR}/src/test/include
85+
)
86+
87+
target_include_directories(${TARGET_ELF}
88+
PRIVATE ${PRIV_INCLUDE_DIRS}
89+
)
90+
91+
foreach(script ${LINKER_SCRIPTS})
92+
target_link_options(${TARGET_ELF} PRIVATE -T${script})
93+
endforeach()
94+
95+
if(${ESP_TARGET} STREQUAL "esp8266")
96+
target_link_options(${TARGET_ELF} PRIVATE -Wl,--entry=stub_main_esp8266)
97+
endif()
98+
99+
get_property(COMMAND_DEFINES GLOBAL PROPERTY COMMAND_MACROS:${COMMAND})
100+
101+
set(STUB_COMPILE_DEFS "${COMMAND_DEFINES}; ${ESP_TARGET_NAME}")
102+
103+
add_subdirectory(esp-stub-lib ${ESP_STUB_LIB})
104+
105+
target_compile_definitions(${TARGET_ELF} PRIVATE ${STUB_COMPILE_DEFS})
106+
107+
set(MAP_FILE ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}.map)
108+
target_link_options(${TARGET_ELF} PRIVATE -Wl,-Map=${MAP_FILE})
109+
set_directory_properties(PROPERTIES ADDITIONAL_CLEAN_FILES ${MAP_FILE})
110+
111+
add_custom_command(TARGET ${TARGET_ELF} POST_BUILD
112+
COMMAND ${CMAKE_SIZE} ${TARGET_ELF}
113+
COMMAND ${CMAKE_OBJDUMP} -d $<TARGET_FILE:${TARGET_ELF}> -M no-aliases > ${CMAKE_BINARY_DIR}/${TARGET_NAME}.asm
114+
)
115+
116+
target_link_libraries(${TARGET_ELF} PRIVATE ${ESP_STUB_LIB})
117+
118+
list(APPEND ALL_TARGETS ${TARGET_ELF})
119+
120+
endforeach()
121+
122+
string(REPLACE ";" "," COMMANDS_LIST "${COMMANDS}")
123+
add_custom_target(generate_image_headers ALL
124+
DEPENDS ${ALL_TARGETS}
125+
COMMAND ${CMAKE_COMMAND}
126+
-DESP_TARGET=${ESP_TARGET}
127+
-DCOMMANDS="${COMMANDS_LIST}"
128+
-DCMAKE_OBJCOPY=${CMAKE_OBJCOPY}
129+
-DCMAKE_READELF=${CMAKE_READELF}
130+
-P ${CMAKE_CURRENT_LIST_DIR}/cmake/generate_header.cmake
131+
COMMENT "Generating stub image headers"
132+
)

0 commit comments

Comments
 (0)