Implement memory variants on all chips to fix flash modes

This commit is contained in:
me-no-dev 2022-06-25 00:33:26 +03:00
parent d953301dbd
commit 29387059e8
4 changed files with 71 additions and 43 deletions

View file

@ -11,7 +11,7 @@ idf_build_get_property(elf EXECUTABLE GENERATOR_EXPRESSION)
add_custom_command(
OUTPUT "idf_libs"
COMMAND ${CMAKE_SOURCE_DIR}/tools/copy-libs.sh ${IDF_TARGET} "${CONFIG_ESPTOOLPY_OCT_FLASH}" "${CONFIG_SPIRAM_MODE_OCT}" "${CONFIG_IDF_TARGET_ARCH_XTENSA}"
COMMAND ${CMAKE_SOURCE_DIR}/tools/copy-libs.sh ${IDF_TARGET} "${CONFIG_LIB_BUILDER_FLASHMODE}" "${CONFIG_SPIRAM_MODE_OCT}" "${CONFIG_IDF_TARGET_ARCH_XTENSA}"
DEPENDS ${elf}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
VERBATIM
@ -29,7 +29,7 @@ add_custom_target(copy-bootloader DEPENDS "copy_bootloader")
add_custom_command(
OUTPUT "mem_variant"
COMMAND ${CMAKE_SOURCE_DIR}/tools/copy-mem-variant.sh ${IDF_TARGET} "${CONFIG_ESPTOOLPY_OCT_FLASH}" "${CONFIG_SPIRAM_MODE_OCT}"
COMMAND ${CMAKE_SOURCE_DIR}/tools/copy-mem-variant.sh ${IDF_TARGET} "${CONFIG_LIB_BUILDER_FLASHMODE}" "${CONFIG_SPIRAM_MODE_OCT}"
DEPENDS ${elf}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
VERBATIM

View file

@ -1,34 +1,40 @@
{
"mem_variants_files":[
{
"file":"libbootloader_support.a",
"src":"build/esp-idf/bootloader_support/libbootloader_support.a",
"out":"lib/libbootloader_support.a"
},
{
"file":"libesp_hw_support.a",
"src":"build/esp-idf/esp_hw_support/libesp_hw_support.a",
"out":"lib/libesp_hw_support.a"
},
{
"file":"libspi_flash.a",
"src":"build/esp-idf/spi_flash/libspi_flash.a",
"out":"lib/libspi_flash.a"
},
{
"file":"libfreertos.a",
"src":"build/esp-idf/freertos/libfreertos.a",
"out":"lib/libfreertos.a"
"out":"lib/libspi_flash.a",
"targets":["esp32","esp32c3","esp32s2","esp32s3"]
},
{
"file":"libesp_system.a",
"src":"build/esp-idf/esp_system/libesp_system.a",
"out":"lib/libesp_system.a"
"out":"lib/libesp_system.a",
"targets":["esp32s3"]
},
{
"file":"libfreertos.a",
"src":"build/esp-idf/freertos/libfreertos.a",
"out":"lib/libfreertos.a",
"targets":["esp32s3"]
},
{
"file":"libbootloader_support.a",
"src":"build/esp-idf/bootloader_support/libbootloader_support.a",
"out":"lib/libbootloader_support.a",
"targets":["esp32s3"]
},
{
"file":"libesp_hw_support.a",
"src":"build/esp-idf/esp_hw_support/libesp_hw_support.a",
"out":"lib/libesp_hw_support.a",
"targets":["esp32s3"]
},
{
"file":"sections.ld",
"src":"build/esp-idf/esp_system/ld/sections.ld",
"out":"ld/sections.ld"
"out":"ld/sections.ld",
"targets":["esp32s3"]
}
],
"targets":[
@ -44,6 +50,8 @@
],
"mem_variants":[
["qio","80m","opi_ram"],
["dio","80m","qio_ram"],
["dio","80m","opi_ram"],
["opi","80m","opi_ram"],
["opi","80m","qio_ram"]
]
@ -62,7 +70,11 @@
["dio","40m"],
["dout","40m"]
],
"mem_variants":[]
"mem_variants":[
["qout","80m"],
["dio","80m"],
["dout","80m"]
]
},
{
"target": "esp32c3",
@ -78,12 +90,16 @@
["dio","40m"],
["dout","40m"]
],
"mem_variants":[]
"mem_variants":[
["qout","80m"],
["dio","80m"],
["dout","80m"]
]
},
{
"target": "esp32",
"features":["qio_ram"],
"idf_libs":["dio","40m"],
"idf_libs":["qio","80m"],
"bootloaders":[
["qio","80m"],
["qout","80m"],
@ -94,7 +110,11 @@
["dio","40m"],
["dout","40m"]
],
"mem_variants":[]
"mem_variants":[
["qout","80m"],
["dio","80m"],
["dout","80m"]
]
}
]
}

View file

@ -3,13 +3,9 @@
IDF_TARGET=$1
IS_XTENSA=$4
OCT_FLASH=
OCT_FLASH="$2"
OCT_PSRAM=
if [ "$2" = "y" ]; then
OCT_FLASH="opi"
else
OCT_FLASH="qspi"
fi
if [ "$3" = "y" ]; then
OCT_PSRAM="opi"
else
@ -514,9 +510,18 @@ done
mkdir -p "$AR_SDK/$MEMCONF/include"
mv "$PWD/build/config/sdkconfig.h" "$AR_SDK/$MEMCONF/include/sdkconfig.h"
for mem_variant in `jq -c '.mem_variants_files[]' configs/builds.json`; do
skip_file=1
for file_target in $(echo "$mem_variant" | jq -c '.targets[]' | tr -d '"'); do
if [ "$file_target" == "$IDF_TARGET" ]; then
skip_file=0
break
fi
done
if [ $skip_file -eq 0 ]; then
file=$(echo "$mem_variant" | jq -c '.file' | tr -d '"')
out=$(echo "$mem_variant" | jq -c '.out' | tr -d '"')
mv "$AR_SDK/$out" "$AR_SDK/$MEMCONF/$file"
fi
done;
# Add IDF versions to sdkconfig

View file

@ -1,14 +1,8 @@
#!/bin/bash
IDF_TARGET=$1
OCT_FLASH=
OCT_FLASH="$2"
OCT_PSRAM=
if [ "$2" = "y" ]; then
OCT_FLASH="opi"
else
OCT_FLASH="qspi"
fi
if [ "$3" = "y" ]; then
OCT_PSRAM="opi"
else
@ -30,7 +24,16 @@ rm -rf "$AR_SDK/$MEMCONF"
mkdir -p "$AR_SDK/$MEMCONF/include"
mv "build/config/sdkconfig.h" "$AR_SDK/$MEMCONF/include/sdkconfig.h"
for mem_variant in `jq -c '.mem_variants_files[]' configs/builds.json`; do
skip_file=1
for file_target in $(echo "$mem_variant" | jq -c '.targets[]' | tr -d '"'); do
if [ "$file_target" == "$IDF_TARGET" ]; then
skip_file=0
break
fi
done
if [ $skip_file -eq 0 ]; then
file=$(echo "$mem_variant" | jq -c '.file' | tr -d '"')
src=$(echo "$mem_variant" | jq -c '.src' | tr -d '"')
cp "$src" "$AR_SDK/$MEMCONF/$file"
fi
done;