Add script to fetch PackChk/SVDConv from their release location.
diff --git a/CMSIS/Utilities/fetch_devtools.sh b/CMSIS/Utilities/fetch_devtools.sh
new file mode 100755
index 0000000..fdd8414
--- /dev/null
+++ b/CMSIS/Utilities/fetch_devtools.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+PACKCHK_VERSION=1.3.95
+SVDCONV_VERSION=3.3.41
+
+REPO_URL=https://github.com/Open-CMSIS-Pack/devtools
+DOWNLOAD_URL=${REPO_URL}/releases/download/
+DIRNAME=$(dirname $0)
+
+set -o pipefail
+
+function usage {
+ echo "$(basename $0) [-h|--help] [-f|--force]"
+ echo ""
+ echo "Arguments:"
+ echo " -h|--help Print this usage message and exit."
+ echo " -f|--force Force (re)download."
+ echo ""
+ echo "Environment:"
+ echo " curl"
+ echo " sha256sum"
+ echo ""
+}
+
+function fetch {
+ mkdir -p ${DIRNAME}/$2
+ pushd ${DIRNAME}/$2 >/dev/null
+ curl -O -L $1
+ unzip -o $(basename $1)
+ rm $(basename $1)
+ popd >/dev/null
+}
+
+POSITIONAL=()
+while [[ $# -gt 0 ]]
+do
+ key="$1"
+
+ case $key in
+ '-h'|'--help')
+ usage
+ exit 1
+ ;;
+ '-f'|'--force')
+ FORCE=1
+ ;;
+ *) # unknown option
+ POSITIONAL+=("$1") # save it in an array for later
+ ;;
+ esac
+ shift # past argument
+done
+set -- "${POSITIONAL[@]}" # restore positional parameters
+
+fetch "${DOWNLOAD_URL}/tools%2Fpackchk%2F${PACKCHK_VERSION}/packchk-${PACKCHK_VERSION}-darwin64.zip" Darwin64
+fetch "${DOWNLOAD_URL}/tools%2Fpackchk%2F${PACKCHK_VERSION}/packchk-${PACKCHK_VERSION}-linux64.zip" Linux64
+fetch "${DOWNLOAD_URL}/tools%2Fpackchk%2F${PACKCHK_VERSION}/packchk-${PACKCHK_VERSION}-windows64.zip" Win32
+
+fetch "${DOWNLOAD_URL}/tools%2Fsvdconv%2F${SVDCONV_VERSION}/svdconv-${SVDCONV_VERSION}-darwin64.zip" Darwin64
+fetch "${DOWNLOAD_URL}/tools%2Fsvdconv%2F${SVDCONV_VERSION}/svdconv-${SVDCONV_VERSION}-linux64.zip" Linux64
+fetch "${DOWNLOAD_URL}/tools%2Fsvdconv%2F${SVDCONV_VERSION}/svdconv-${SVDCONV_VERSION}-windows64.zip" Win32
+
+exit 0