Skip to content

Commit

Permalink
Upgrade IDF to v4.4.2
Browse files Browse the repository at this point in the history
Slightly reworked embed_lfs.sh to better cope with attribute size changes
in future compiler versions, without needing to be updated again.

RMT register naming changed once again...
  • Loading branch information
jmattsson authored and Johny Mattsson committed Oct 12, 2022
1 parent d8f07dd commit 38ccd7b
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 13 deletions.
2 changes: 1 addition & 1 deletion components/modules/node.c
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,9 @@ static int node_bootreason( lua_State *L)
#endif
#if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3)
case GLITCH_RTC_RESET:
case EFUSE_RESET:
#endif
#if defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3)
case EFUSE_RESET:
case USB_UART_CHIP_RESET:
case USB_JTAG_CHIP_RESET:
case POWER_GLITCH_RESET:
Expand Down
4 changes: 3 additions & 1 deletion components/platform/ws2812.c
Original file line number Diff line number Diff line change
Expand Up @@ -104,10 +104,12 @@ static void ws2812_isr(void *arg)
RMT.int_clr.val = BIT(channel+24);

ws2812_chain_t *chain = &(ws2812_chains[channel]);
#if defined(CONFIG_IDF_TARGET_ESP32) || defined(CONFIG_IDF_TARGET_ESP32S2)
#if defined(CONFIG_IDF_TARGET_ESP32)
uint32_t data_sub_len = RMT.tx_lim_ch[channel].limit/8;
#elif defined(CONFIG_IDF_TARGET_ESP32S3)
uint32_t data_sub_len = RMT.chn_tx_lim[channel].tx_lim_chn/8;
#elif defined(CONFIG_IDF_TARGET_ESP32S2)
uint32_t data_sub_len = RMT.tx_lim_ch[channel].tx_lim/8;
#else
uint32_t data_sub_len = RMT.tx_lim[channel].limit/8;
#endif
Expand Down
2 changes: 1 addition & 1 deletion sdk/esp32-esp-idf
Submodule esp32-esp-idf updated 1309 files
26 changes: 16 additions & 10 deletions tools/embed_lfs.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash

LUA_APP_SRC="$@"
LUA_APP_SRC=("$@")

MAP_FILE=build/nodemcu.map
LUAC_OUTPUT=build/luac.out
Expand All @@ -15,43 +15,49 @@ if [ ! -f "${LUAC_CROSS}" ]; then
exit 1
fi

LFS_ADDR_SIZE=$(grep -E "0x[0-9a-f]+[ ]+0x[0-9a-f]+[ ]+esp-idf/embedded_lfs/libembedded_lfs.a\(lua.flash.store.reserved.S.obj\)" "${MAP_FILE}" | grep -v -w 0x0 | grep -v -w 0x24 | tr -s ' ')
if [ -z "${LFS_ADDR_SIZE}" ]; then
# Extract the line containing the data size of the LFS object, filtering out
# lines for .bss/.data/.text, sorting the remaining two entries (actual LFS
# data and (optional) riscv attributes) so we can discard the latter if
# present. If the map file was a bit saner with its line breaks this would
# have been a straight forward grep for for .rodata.embedded.*lua.flash.store
LFS_SIZE_ADDR=$(grep -E "0x[0-9a-f]+[ ]+0x[0-9a-f]+[ ]+esp-idf/embedded_lfs/libembedded_lfs.a\(lua.flash.store.reserved.S.obj\)" "${MAP_FILE}" | grep -v '^ \.' | awk '{print $2,$1}' | sort -n -k 1.3 | tail -1)
if [ -z "${LFS_SIZE_ADDR}" ]; then
echo "Error: LFS segment not found. Use 'make clean; make' perhaps?"
exit 1
fi

LFS_ADDR=$(echo "${LFS_ADDR_SIZE}" | cut -d ' ' -f 2)
LFS_ADDR=$(echo "${LFS_SIZE_ADDR}" | cut -d ' ' -f 2)
if [ -z "${LFS_ADDR}" ]; then
echo "Error: LFS segment address not found"
exit 1
fi
# The reported size is +4 due to the length field added by the IDF
LFS_SIZE=$(( $(echo "${LFS_ADDR_SIZE}" | cut -d ' ' -f 3) - 4 ))
LFS_SIZE=$(( $(echo "${LFS_SIZE_ADDR}" | cut -d ' ' -f 1) - 4 ))
if [ -z "${LFS_SIZE}" ]; then
echo "Error: LFS segment size not found"
exit 1
fi

echo "LFS segment address ${LFS_ADDR}, length ${LFS_SIZE}"
printf "LFS segment address %s, length %s (0x%x)\n" "${LFS_ADDR}" "${LFS_SIZE}" "${LFS_SIZE}"

if ${LUAC_CROSS} -v | grep -q 'Lua 5.1'
then
echo "Generating Lua 5.1 LFS image..."
${LUAC_CROSS} -a ${LFS_ADDR} -m ${LFS_SIZE} -o ${LUAC_OUTPUT} ${LUA_APP_SRC}
${LUAC_CROSS} -a "${LFS_ADDR}" -m ${LFS_SIZE} -o ${LUAC_OUTPUT} "${LUA_APP_SRC[@]}"
else
set -e
echo "Generating intermediate Lua 5.3 LFS image..."
${LUAC_CROSS} -f -m ${LFS_SIZE} -o ${LUAC_OUTPUT}.tmp ${LUA_APP_SRC}
${LUAC_CROSS} -f -m ${LFS_SIZE} -o ${LUAC_OUTPUT}.tmp "${LUA_APP_SRC[@]}"
echo "Converting to absolute LFS image..."
${LUAC_CROSS} -F ${LUAC_OUTPUT}.tmp -a ${LFS_ADDR} -o ${LUAC_OUTPUT}
${LUAC_CROSS} -F ${LUAC_OUTPUT}.tmp -a "${LFS_ADDR}" -o ${LUAC_OUTPUT}
rm ${LUAC_OUTPUT}.tmp
fi
# shellcheck disable=SC2181
if [ $? != 0 ]; then
echo "Error: luac.cross failed"
exit 1
else
echo "Generated $(ls -l ${LUAC_OUTPUT} | cut -f5 -d' ') bytes of LFS data"
echo "Generated $(stat -c "%s" ${LUAC_OUTPUT}) bytes of LFS data"
fi
# cmake depencies don't seem to pick up the change to luac.out?
rm -f build/lua.flash.store.reserved
Expand Down

0 comments on commit 38ccd7b

Please sign in to comment.