blob: 6b27c6fe17dc24a22adbfc1c9c6b55feb280faeb [file] [log] [blame]
#!/bin/sh
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# Called with following variables set:
# - CORE_PATH is absolute path to @apache-mynewt-core
# - BSP_PATH is absolute path to hw/bsp/bsp_name
# - BIN_BASENAME is the path to prefix to target binary,
# .elf appended to name is the ELF file
# - IMAGE_SLOT is the image slot to download to (for non-mfg-image, non-boot)
# - FEATURES holds the target features string
# - EXTRA_JTAG_CMD holds extra parameters to pass to jtag software
# - MFG_IMAGE is "1" if this is a manufacturing image
# - FLASH_OFFSET contains the flash offset to download to
# - BOOT_LOADER is set if downloading a bootloader
check_downloader() {
if ! command -v $1 &> /dev/null; then
>&2 echo "$1 not found."
exit 1
fi
}
if [ "$MFG_IMAGE" ]; then
if [ -z "$MYNEWT_VAL_MYNEWT_DOWNLOADER_MFG_IMAGE_FLASH_OFFSET" ] ; then
>&2 echo "Syscfg value MYNEWT_DOWNLOADER_MFG_IMAGE_FLASH_OFFSET not set"
exit -1
fi
FLASH_OFFSET=${MYNEWT_VAL_MYNEWT_DOWNLOADER_MFG_IMAGE_FLASH_OFFSET}
fi
case "${MYNEWT_VAL_MYNEWT_DOWNLOADER}" in
"ezflashcli")
check_downloader ezFlashCLI
. $CORE_PATH/hw/scripts/ezflashcli.sh
common_file_to_load
ezflashcli_load
;;
"jlink")
check_downloader JLinkExe
. $CORE_PATH/hw/scripts/jlink.sh
if [ -z "${MYNEWT_VAL_JLINK_TARGET}" ] ; then
>&2 echo -e "\n\nSyscfg value MYNEWT_DOWNLOADER set to 'jlink' but JLINK_TARGET not set in syscfg."
exit -1
fi
JLINK_DEV=${MYNEWT_VAL_JLINK_TARGET}
common_file_to_load
jlink_load
;;
"nrfjprog")
check_downloader nrfjprog
. $CORE_PATH/hw/scripts/nrfjprog.sh
common_file_to_load
nrfjprog_load
;;
"openocd")
check_downloader openocd
. $CORE_PATH/hw/scripts/openocd.sh
if [ -n "${MYNEWT_VAL_MYNEWT_DOWNLOADER_OPENOCD_INTERFACE}" ] ; then
CFG="-f ${MYNEWT_VAL_MYNEWT_DOWNLOADER_OPENOCD_INTERFACE}"
fi
if [ -n "${MYNEWT_VAL_MYNEWT_DOWNLOADER_OPENOCD_BOARD}" ] ; then
CFG="${CFG} -f ${MYNEWT_VAL_MYNEWT_DOWNLOADER_OPENOCD_BOARD}"
fi
if [ -n "${MYNEWT_VAL_MYNEWT_DOWNLOADER_OPENOCD_CFG}" ] ; then
CFG="${CFG} -s $BSP_PATH -f ${MYNEWT_VAL_MYNEWT_DOWNLOADER_OPENOCD_CFG}"
fi
if [ -z "${CFG}" ] ; then
>&2 echo -e "\n\nSyscfg value MYNEWT_DOWNLOADER set to 'openocd' but none of the following syscfg values is not set:"
>&2 echo -e "\tMYNEWT_DOWNLOADER_OPENOCD_INTERFACE\n\tMYNEWT_DOWNLOADER_OPENOCD_BOARD\n\tMYNEWT_DOWNLOADER_OPENOCD_CFG"
exit -1
fi
common_file_to_load
openocd_load
openocd_reset_run
;;
"pyocd")
check_downloader pyocd
. $CORE_PATH/hw/scripts/pyocd.sh
if [ -z "${MYNEWT_VAL_PYOCD_TARGET}" ] ; then
>&2 echo -e "\n\nSyscfg value MYNEWT_DOWNLOADER set to 'pyocd' but PYOCD_TARGET not set in syscfg."
>&2 echo -e "pyocd supported targets can be found with 'pyocd list --targets'\n"
exit -1
fi
TARGET=${MYNEWT_VAL_PYOCD_TARGET}
common_file_to_load
pyocd_load
;;
"stflash")
check_downloader st-flash
. $CORE_PATH/hw/scripts/stlink.sh
common_file_to_load
stlink_load
;;
"stm32_programmer_cli")
check_downloader STM32_Programmer_CLI
. $CORE_PATH/hw/scripts/stm32_programmer.sh
common_file_to_load
stlink_load
;;
*)
>&2 echo "Unknown downloader $MYNEWT_VAL_MYNEWT_DOWNLOADER"
exit 1
;;
esac