1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

cpu/esp: helper scripts for ESP32 toolchain installation

This commit is contained in:
Gunar Schorcht 2022-03-03 17:34:52 +01:00
parent 92b7b8a3d7
commit 26c7bfdca3
2 changed files with 270 additions and 0 deletions

97
dist/tools/esptools/export.sh vendored Executable file
View File

@ -0,0 +1,97 @@
#!/bin/sh
ESP32_GCC_RELEASE="esp-2021r2-patch3"
ESP32_GCC_VERSION_DIR="8.4.0"
ESP32_OPENOCD_VERSION="v0.11.0-esp32-20211220"
# qemu version depends on the version of ncurses lib
if [ "$(ldconfig -p | grep libncursesw.so.6)" != "" ]; then
ESP32_QEMU_VERSION="esp-develop-20220203"
else
ESP32_QEMU_VERSION="esp-develop-20210220"
fi
if [ -z ${IDF_TOOLS_PATH} ]; then
IDF_TOOLS_PATH=${HOME}/.espressif
fi
TOOLS_PATH=${IDF_TOOLS_PATH}/tools
export_arch()
{
case $1 in
esp32)
TARGET_ARCH="xtensa-esp32-elf"
;;
*)
echo "Unknown architecture $1"
exit 1
esac
TOOLS_DIR=${TOOLS_PATH}/${TARGET_ARCH}/${ESP32_GCC_RELEASE}-${ESP32_GCC_VERSION_DIR}/${TARGET_ARCH}
TOOLS_DIR_IN_PATH=`echo $PATH | grep ${TOOLS_DIR}`
if [ -e ${TOOLS_DIR} ] && [ -z ${TOOLS_DIR_IN_PATH} ]; then
echo "Extending PATH by ${TOOLS_DIR}/bin"
export PATH=${TOOLS_DIR}/bin:${PATH}
fi
unset TOOLS_DIR
}
export_openocd()
{
TOOLS_DIR=${TOOLS_PATH}/openocd-esp32/${ESP32_OPENOCD_VERSION}
TOOLS_DIR_IN_PATH=`echo $PATH | grep ${TOOLS_DIR}`
OPENOCD_DIR=${TOOLS_DIR}/openocd-esp32
if [ -e ${OPENOCD_DIR} ] && [ -z ${TOOLS_DIR_IN_PATH} ]; then
echo "Extending PATH by ${TOOLS_DIR}/bin"
export PATH=${OPENOCD_DIR}/bin:${PATH}
export OPENOCD="${OPENOCD_DIR}/bin/openocd -s ${OPENOCD_DIR}/share/openocd/scripts"
fi
unset TOOLS_DIR
unset OPENOCD_DIR
}
export_qemu()
{
TOOLS_DIR=${TOOLS_PATH}/qemu-esp32/${ESP32_QEMU_VERSION}/qemu
TOOLS_DIR_IN_PATH=`echo $PATH | grep ${TOOLS_DIR}`
if [ -e ${TOOLS_DIR} ] && [ -z ${TOOLS_DIR_IN_PATH} ]; then
echo "Extending PATH by ${TOOLS_DIR}/bin"
export PATH=${TOOLS_DIR}/bin:${PATH}
fi
unset TOOLS_DIR
}
if [ -z $1 ]; then
echo "Usage: export.sh <tool>"
echo "tool = all | esp32 | openocd | qemu"
elif [ "$1" = "all" ]; then
ARCH_ALL="esp32"
for arch in ${ARCH_ALL}; do
export_arch $arch
done
export_openocd
export_qemu
elif [ "$1" = "openocd" ]; then
export_openocd
elif [ "$1" = "qemu" ]; then
export_qemu
else
export_arch $1
fi
unset ESP32_GCC_RELEASE
unset ESP32_GCC_VERSION_DOWNLOAD
unset ESP32_GCC_VERSION_DIR
unset ESP32_OPENOCD_VERSION
unset ESP32_OPENOCD_VERSION_FILE
unset ESP32_QEMU_VERSION

173
dist/tools/esptools/install.sh vendored Executable file
View File

@ -0,0 +1,173 @@
#!/bin/sh
ESP32_GCC_RELEASE="esp-2021r2-patch3"
ESP32_GCC_VERSION_DIR="8.4.0"
ESP32_GCC_VERSION_DOWNLOAD="gcc8_4_0"
ESP32_OPENOCD_VERSION="v0.11.0-esp32-20211220"
ESP32_OPENOCD_VERSION_TGZ="0.11.0-esp32-20211220"
# qemu version depends on the version of ncurses lib
if [ "$(ldconfig -p | grep libncursesw.so.6)" != "" ]; then
ESP32_QEMU_VERSION="esp-develop-20220203"
else
ESP32_QEMU_VERSION="esp-develop-20210220"
fi
# set the tool path to the default if not already set
if [ -z ${IDF_TOOLS_PATH} ]; then
IDF_TOOLS_PATH=${HOME}/.espressif
fi
TOOLS_PATH=${IDF_TOOLS_PATH}/tools
# check the existence of either wget or curl and set the download tool
if [ "$(which curl)" != "" ]; then
URL_GET="curl"
elif [ "$(which wget)" != "" ]; then
URL_GET="wget"
else
echo "error: wget or curl has to be installed"
exit 1
fi
# check whether python3 is installed as prerequisite
if [ "$(which python3)" = "" ]; then
echo "error: python3 not found"
exit 1
fi
# determine the platform using python
PLATFORM_SYSTEM=$(python3 -c "import platform; print(platform.system())")
PLATFORM_MACHINE=$(python3 -c "import platform; print(platform.machine())")
PLATFORM=${PLATFORM_SYSTEM}-${PLATFORM_MACHINE}
# map different platform names to a unique OS name
case ${PLATFORM} in
linux-amd64|linux64|Linux-x86_64|FreeBSD-amd64)
OS=linux-amd64
;;
linux-arm64|Linux-arm64|Linux-aarch64|Linux-armv8l)
OS=linux-arm64
;;
linux-armel|Linux-arm|Linux-armv7l)
OS=linux-armel
;;
linux-armhf)
OS=linux-armhf
;;
linux-i686|linux32|Linux-i686|FreeBSD-i386)
OS=linux-i686
;;
*)
echo "error: OS architecture ${PLATFORM} not supported"
exit 1
;;
esac
download()
{
if [ "${URL_GET}" = "curl" ]; then
curl -L $1 -o $2
elif [ "${URL_GET}" = "wget" ]; then
wget $1 -O $2
else
exit 1
fi
}
install_arch()
{
case $1 in
esp32)
TARGET_ARCH="xtensa-esp32-elf"
;;
*)
echo "error: Unknown architecture $1"
exit 1
esac
TOOLS_DIR=${TOOLS_PATH}/${TARGET_ARCH}/${ESP32_GCC_RELEASE}-${ESP32_GCC_VERSION_DIR}
URL_PATH=https://github.com/espressif/crosstool-NG/releases/download
URL_TGZ=${TARGET_ARCH}-${ESP32_GCC_VERSION_DOWNLOAD}-${ESP32_GCC_RELEASE}-${OS}.tar.gz
URL=${URL_PATH}/${ESP32_GCC_RELEASE}/${URL_TGZ}
echo "Creating directory ${TOOLS_DIR} ..." && \
mkdir -p ${TOOLS_DIR} && \
cd ${TOOLS_DIR} && \
echo "Downloading ${URL_TGZ} ..." && \
download ${URL} ${URL_TGZ} && \
echo "Extracting ${URL_TGZ} in ${TOOLS_DIR} ..." && \
tar xfz ${URL_TGZ} && \
echo "Removing ${URL_TGZ} ..." && \
rm -f ${URL_TGZ} && \
echo "$1 toolchain installed in ${TOOLS_DIR}/$TARGET_ARCH"
}
install_openocd()
{
TOOLS_DIR=${TOOLS_PATH}/openocd-esp32/${ESP32_OPENOCD_VERSION}
URL_PATH=https://github.com/espressif/openocd-esp32/releases/download
URL_TGZ=openocd-esp32-${OS}-${ESP32_OPENOCD_VERSION_TGZ}.tar.gz
URL=${URL_PATH}/${ESP32_OPENOCD_VERSION}/${URL_TGZ}
echo "Creating directory ${TOOLS_DIR} ..." && \
mkdir -p ${TOOLS_DIR} && \
cd ${TOOLS_DIR} && \
echo "Downloading ${URL_TGZ} ..." && \
download ${URL} ${URL_TGZ} && \
echo "Extracting ${URL_TGZ} in ${TOOLS_DIR} ..." && \
tar xfz ${URL_TGZ} && \
echo "Removing ${URL_TGZ} ..." && \
rm -f ${URL_TGZ} && \
echo "OpenOCD for ESP32x SoCs installed in ${TOOLS_DIR}/$TARGET_ARCH"
}
install_qemu()
{
if [ ${OS} != "linux-amd64" ]; then
echo "error: QEMU for ESP32 does not support OS ${OS}"
exit 1
fi
TOOLS_DIR=${TOOLS_PATH}/qemu-esp32/${ESP32_QEMU_VERSION}
URL_PATH=https://github.com/espressif/qemu/releases/download
URL_TGZ=qemu-${ESP32_QEMU_VERSION}.tar.bz2
URL=${URL_PATH}/${ESP32_QEMU_VERSION}/${URL_TGZ}
echo "Creating directory ${TOOLS_DIR} ..." && \
mkdir -p ${TOOLS_DIR} && \
cd ${TOOLS_DIR} && \
echo "Downloading ${URL_TGZ} ..." && \
download ${URL} ${URL_TGZ} && \
echo "Extracting ${URL_TGZ} in ${TOOLS_DIR} ..." && \
tar xfj ${URL_TGZ} && \
echo "Removing ${URL_TGZ} ..." && \
rm -f ${URL_TGZ} && \
echo "QEMU for ESP32 installed in ${TOOLS_DIR}"
}
if [ -z $1 ]; then
echo "Usage: install.sh <tool>"
echo "tool = all | esp32 | openocd | qemu"
exit 1
elif [ "$1" = "all" ]; then
ARCH_ALL="esp32"
for arch in ${ARCH_ALL}; do
install_arch $arch
done
install_openocd
install_qemu
elif [ "$1" = "openocd" ]; then
install_openocd
elif [ "$1" = "qemu" ]; then
install_qemu
else
install_arch $1
fi
echo "Use following command to extend the PATH variable:"
echo ". $(dirname "$0")/export.sh"