Skip to content

Commit 2a5a639

Browse files
committed
Merge branch 'chore/add_cmake_function_for_esp8266' into 'master'
feat(esp8266): Add cmake fucntion See merge request sdk/ESP8266_RTOS_SDK!136
2 parents 36da508 + 1202c9d commit 2a5a639

File tree

1 file changed

+162
-0
lines changed

1 file changed

+162
-0
lines changed
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
set(BOOTLOADER_FIRMWARE_DIR ${CMAKE_CURRENT_LIST_DIR}/firmware)
2+
3+
#configurate downloading parameters
4+
set(ESPTOOLPY_FLASHSIZE ${CONFIG_ESPTOOLPY_FLASHSIZE})
5+
set(ESPTOOLPY_FLASHMODE ${CONFIG_ESPTOOLPY_FLASHMODE})
6+
set(ESPTOOLPY_FLASHFREQ ${CONFIG_ESPTOOLPY_FLASHFREQ})
7+
8+
if(${ESPTOOLPY_FLASHSIZE} STREQUAL "512KB")
9+
set(BLANK_BIN_OFFSET1 0x7B000)
10+
set(BLANK_BIN_OFFSET2 0x7E000)
11+
set(ESP_INIT_DATA_DEFAULT_BIN_OFFSET 0x7C000)
12+
set(ESP8266_SIZEMAP 0)
13+
endif()
14+
if(${ESPTOOLPY_FLASHSIZE} STREQUAL "1MB")
15+
set(BLANK_BIN_OFFSET1 0xFB000)
16+
set(BLANK_BIN_OFFSET2 0xFE000)
17+
set(ESP_INIT_DATA_DEFAULT_BIN_OFFSET 0xFC000)
18+
set(ESP8266_SIZEMAP 2)
19+
endif()
20+
if(${ESPTOOLPY_FLASHSIZE} STREQUAL "2MB")
21+
set(BLANK_BIN_OFFSET1 0x1FB000)
22+
set(BLANK_BIN_OFFSET2 0x1FE000)
23+
set(ESP_INIT_DATA_DEFAULT_BIN_OFFSET 0x1FC000)
24+
set(ESP8266_SIZEMAP 3)
25+
endif()
26+
if(${ESPTOOLPY_FLASHSIZE} STREQUAL "2MB-c1")
27+
set(BLANK_BIN_OFFSET1 0x1FB000)
28+
set(BLANK_BIN_OFFSET2 0x1FE000)
29+
set(ESP_INIT_DATA_DEFAULT_BIN_OFFSET 0x1FC000)
30+
set(ESP8266_SIZEMAP 5)
31+
endif()
32+
if(${ESPTOOLPY_FLASHSIZE} STREQUAL "4MB")
33+
set(BLANK_BIN_OFFSET1 0x3FB000)
34+
set(BLANK_BIN_OFFSET2 0x3FE000)
35+
set(ESP_INIT_DATA_DEFAULT_BIN_OFFSET 0x3FC000)
36+
set(ESP8266_SIZEMAP 4)
37+
endif()
38+
if(${ESPTOOLPY_FLASHSIZE} STREQUAL "4MB-c1")
39+
set(BLANK_BIN_OFFSET1 0x3FB000)
40+
set(BLANK_BIN_OFFSET2 0x3FE000)
41+
set(ESP_INIT_DATA_DEFAULT_BIN_OFFSET 0x3FC000)
42+
set(ESP8266_SIZEMAP 6)
43+
endif()
44+
if(${ESPTOOLPY_FLASHSIZE} STREQUAL "8MB")
45+
set(BLANK_BIN_OFFSET1 0x7FB000)
46+
set(BLANK_BIN_OFFSET2 0x7FE000)
47+
set(ESP_INIT_DATA_DEFAULT_BIN_OFFSET 0x7FC000)
48+
set(ESP8266_SIZEMAP 8)
49+
endif()
50+
if(${ESPTOOLPY_FLASHSIZE} STREQUAL "16MB")
51+
set(BLANK_BIN_OFFSET1 0xFFB000)
52+
set(BLANK_BIN_OFFSET2 0xFFE000)
53+
set(ESP_INIT_DATA_DEFAULT_BIN_OFFSET 0xFFC000)
54+
set(ESP8266_SIZEMAP 9)
55+
endif()
56+
57+
set(BOOTLOADER_BIN_OFFSET 0)
58+
set(APP_OFFSET 0x1000)
59+
60+
set(ESP8266_BOOTMODE 2) # always be 2
61+
62+
if(${ESPTOOLPY_FLASHMODE} STREQUAL "qio")
63+
set(ESP8266_FLASHMODE 0)
64+
endif()
65+
if(${ESPTOOLPY_FLASHMODE} STREQUAL "qout")
66+
set(ESP8266_FLASHMODE 1)
67+
endif()
68+
if(${ESPTOOLPY_FLASHMODE} STREQUAL "dio")
69+
set(ESP8266_FLASHMODE 2)
70+
endif()
71+
if(${ESPTOOLPY_FLASHMODE} STREQUAL "dout")
72+
set(ESP8266_FLASHMODE 3)
73+
endif()
74+
75+
if(${ESPTOOLPY_FLASHFREQ} STREQUAL "20m")
76+
set(ESP8266_FREQDIV 2)
77+
endif()
78+
if(${ESPTOOLPY_FLASHFREQ} STREQUAL "26m")
79+
set(ESP8266_FREQDIV 1)
80+
endif()
81+
if(${ESPTOOLPY_FLASHFREQ} STREQUAL "40m")
82+
set(ESP8266_FREQDIV 0)
83+
endif()
84+
if(${ESPTOOLPY_FLASHFREQ} STREQUAL "80m")
85+
set(ESP8266_FREQDIV 15)
86+
endif()
87+
88+
set(ESP8266_BINSCRIPT ${PYTHON} $(IDF_PATH)/tools/gen_appbin.py)
89+
90+
#
91+
# Add 'app.bin' target - generates with elf2image
92+
#
93+
add_custom_command(OUTPUT ${PROJECT_NAME}.bin
94+
COMMAND ${CMAKE_OBJCOPY_COMPILER} --only-section .text -O binary ${PROJECT_NAME}.elf eagle.app.v6.text.bin
95+
COMMAND ${CMAKE_OBJCOPY_COMPILER} --only-section .data -O binary ${PROJECT_NAME}.elf eagle.app.v6.data.bin
96+
COMMAND ${CMAKE_OBJCOPY_COMPILER} --only-section .rodata -O binary ${PROJECT_NAME}.elf eagle.app.v6.rodata.bin
97+
COMMAND ${CMAKE_OBJCOPY_COMPILER} --only-section .irom0.text -O binary ${PROJECT_NAME}.elf eagle.app.v6.irom0text.bin
98+
COMMAND ${ESP8266_BINSCRIPT} ${PROJECT_NAME}.elf ${ESP8266_BOOTMODE} ${ESP8266_FLASHMODE} ${ESP8266_FREQDIV} ${ESP8266_SIZEMAP}
99+
COMMAND mv eagle.app.flash.bin ${PROJECT_NAME}.bin
100+
COMMAND rm eagle.app.v6.text.bin eagle.app.v6.data.bin eagle.app.v6.rodata.bin eagle.app.v6.irom0text.bin
101+
DEPENDS ${PROJECT_NAME}.elf
102+
VERBATIM
103+
)
104+
add_custom_target(app ALL DEPENDS ${PROJECT_NAME}.bin)
105+
106+
set(BLANK_BIN ${BOOTLOADER_FIRMWARE_DIR}/blank.bin)
107+
set(ESP_INIT_DATA_DEFAULT_BIN ${BOOTLOADER_FIRMWARE_DIR}/esp_init_data_default.bin)
108+
set(BOOTLOADER_BIN ${BOOTLOADER_FIRMWARE_DIR}/boot_v1.7.bin)
109+
110+
set(PYTHON ${CONFIG_PYTHON})
111+
set(ESPTOOLPY_SRC $(IDF_PATH)/components/esptool_py/esptool/esptool.py)
112+
113+
set(CHIP esp8266)
114+
set(ESPPORT ${CONFIG_ESPTOOLPY_PORT})
115+
set(ESPBAUD ${CONFIG_ESPTOOLPY_BAUD})
116+
set(ESPFLASHMODE ${CONFIG_ESPTOOLPY_FLASHMODE})
117+
set(ESPFLASHFREQ ${CONFIG_ESPTOOLPY_FLASHFREQ})
118+
set(ESPFLASHSIZE ${CONFIG_ESPTOOLPY_FLASHSIZE})
119+
set(ESPTOOLPY ${PYTHON} ${ESPTOOLPY_SRC} --chip ${CHIP})
120+
121+
set(ESPTOOL_WRITE_FLASH_OPTIONS --flash_mode ${ESPFLASHMODE} --flash_freq ${ESPFLASHFREQ} --flash_size ${ESPFLASHSIZE})
122+
123+
set(ESPTOOLPY_SERIAL ${ESPTOOLPY} --port ${ESPPORT} --baud ${ESPBAUD} --before ${CONFIG_ESPTOOLPY_BEFORE} --after ${CONFIG_ESPTOOLPY_AFTER})
124+
125+
set(ESPTOOLPY_WRITE_FLASH ${ESPTOOLPY_SERIAL} write_flash -z ${ESPTOOL_WRITE_FLASH_OPTIONS})
126+
127+
set(APP_BIN ${PROJECT_NAME}.bin)
128+
129+
set(ESPTOOL_ALL_FLASH_ARGS ${BOOTLOADER_BIN_OFFSET} ${BOOTLOADER_BIN}
130+
${APP_OFFSET} ${APP_BIN}
131+
${ESP_INIT_DATA_DEFAULT_BIN_OFFSET} ${ESP_INIT_DATA_DEFAULT_BIN}
132+
${BLANK_BIN_OFFSET1} ${BLANK_BIN}
133+
${BLANK_BIN_OFFSET2} ${BLANK_BIN})
134+
135+
add_custom_target(flash DEPENDS ${PROJECT_NAME}.bin
136+
COMMAND echo "Flashing binaries to serial port ${ESPPORT} app at offset ${APP_OFFSET}..."
137+
COMMAND echo ${ESPTOOL_ALL_FLASH_ARGS}
138+
COMMAND ${ESPTOOLPY_WRITE_FLASH} ${ESPTOOL_ALL_FLASH_ARGS}
139+
COMMAND echo "success"
140+
)
141+
142+
add_custom_target(erase_flash DEPENDS ""
143+
COMMAND echo "Erasing entire flash..."
144+
COMMAND ${ESPTOOLPY_SERIAL} erase_flash
145+
COMMAND echo "success"
146+
)
147+
148+
set(MONITOR_PYTHON ${PYTHON})
149+
set(MONITORBAUD ${CONFIG_MONITOR_BAUD})
150+
set(APP_ELF ${PROJECT_NAME}.elf)
151+
set(MONITOR_OPTS --baud ${MONITORBAUD} --port ${ESPPORT} --toolchain-prefix ${CONFIG_TOOLPREFIX} ${APP_ELF})
152+
153+
function(esp_monitor func dependencies)
154+
add_custom_target(${func} DEPENDS ${dependencies}
155+
COMMAND echo "start monitor ... "
156+
COMMAND echo $(MONITOR_PYTHON) ${IDF_PATH}/tools/idf_monitor.py ${MONITOR_OPTS}
157+
COMMAND $(MONITOR_PYTHON) ${IDF_PATH}/tools/idf_monitor.py ${MONITOR_OPTS}
158+
COMMAND echo "idf monitor exit"
159+
)
160+
endfunction()
161+
162+
esp_monitor(monitor "")

0 commit comments

Comments
 (0)