52 lines
1.7 KiB
Bash
Executable File
52 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# This is a utility to deploy and run a simple Hexagon-based binary to a
|
|
# Hexagon device connected via adb.
|
|
#
|
|
# Note that the binary must be built with the same HEXAGON_SDK_ROOT,
|
|
# HEXAGON_TOOLS_ROOT, HEXAGON_SDK_VER, and HEXAGON_TOOL_VER specified here,
|
|
# otherwise runtime errors will likely occur.
|
|
#
|
|
# Syntax: run-on-hexagon-device.sh path-to-binary
|
|
|
|
set -e
|
|
|
|
if [ -z "$HEXAGON_SDK_ROOT" ]; then
|
|
echo "HEXAGON_SDK_ROOT must be set!"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$HEXAGON_TOOLS_ROOT" ]; then
|
|
echo "HEXAGON_TOOLS_ROOT must be set!"
|
|
exit 1
|
|
fi
|
|
|
|
# These should match the versions specified in hexagon.toolchain
|
|
: "${HEXAGON_ARCH:=v68}"
|
|
: "${HEXAGON_SDK_VER:=5.3.0}"
|
|
: "${HEXAGON_TOOL_VER:=v86}"
|
|
: "${HEXAGON_DEVICE_FOLDER:=/data/local/tmp/run_main_on_hexagon}"
|
|
|
|
BINARY_PATH=$1
|
|
[ -z "$BINARY_PATH" ] && echo "You must specify a path to the binary as the first argument" && exit 1
|
|
shift
|
|
|
|
echo "Pushing to device..."
|
|
DSP_DIR=${HEXAGON_DEVICE_FOLDER}/dsp
|
|
BINARY_NAME=$(basename ${BINARY_PATH})
|
|
adb shell mkdir -p ${HEXAGON_DEVICE_FOLDER}
|
|
adb shell mkdir -p ${DSP_DIR}
|
|
|
|
LIB_EXPORT_STRING="ADSP_LIBRARY_PATH=${DSP_DIR}"
|
|
EXECUTION_STRING="chmod +x ${HEXAGON_DEVICE_FOLDER}/run_main_on_hexagon; ${LIB_EXPORT_STRING} ${HEXAGON_DEVICE_FOLDER}/run_main_on_hexagon 3 ${BINARY_NAME}"
|
|
|
|
adb shell "echo "0x1f" > ${DSP_DIR}/run_main_on_hexagon.farf"
|
|
adb push --sync ${HEXAGON_SDK_ROOT}/libs/run_main_on_hexagon/ship/android_aarch64/run_main_on_hexagon ${HEXAGON_DEVICE_FOLDER}
|
|
adb push --sync ${HEXAGON_SDK_ROOT}/libs/run_main_on_hexagon/ship/hexagon_tool${HEXAGON_TOOL_VER}_${HEXAGON_ARCH}/librun_main_on_hexagon_skel.so ${DSP_DIR}
|
|
adb push --sync ${BINARY_PATH} ${DSP_DIR}
|
|
|
|
echo "Running..."
|
|
adb shell ${EXECUTION_STRING} $@
|
|
|
|
echo "Done!"
|