| #!/usr/bin/env bash |
| |
| set -eux |
| |
| artifact="$(basename $1)" |
| rust_target_folder="$(cd $(dirname $1)/../.. && pwd -P)" |
| if [ -z $APP_HEAP_SIZE ]; then |
| echo "Set APP_HEAP_SIZE to a value" |
| exit 1 |
| fi |
| |
| if [ -z $KERNEL_HEAP_SIZE ]; then |
| echo "Set KERNEL_HEAP_SIZE to a value" |
| exit 1 |
| fi |
| |
| case "${PLATFORM}" in |
| "apollo3") |
| tockloader_flags="" |
| binary_name=cortex-m4.elf |
| tockload=n |
| ;; |
| "nucleo_f429zi"|"nucleo_f446re") |
| tockloader_flags="" |
| binary_name=cortex-m4.elf |
| tockload=n |
| ;; |
| "nrf52"|"nrf52840") |
| tockloader_flags="--jlink --arch cortex-m4 --board nrf52dk --jtag-device nrf52" |
| binary_name=cortex-m4.elf |
| tockload=y |
| ;; |
| "hail") |
| tockloader_flags="" |
| binary_name=cortex-m4.elf |
| tockload=y |
| ;; |
| "hifive1") |
| tockloader_flags="" |
| binary_name=rv32imac.elf |
| tockload=n |
| ;; |
| "imxrt1050") |
| tockloader_flags="" |
| binary_name=cortex-m7.elf |
| tockload=n |
| ;; |
| "msp432") |
| tockloader_flags="" |
| binary_name=cortex-m4.elf |
| tockload=n |
| ;; |
| "opentitan") |
| tockloader_flags="" |
| binary_name=rv32imc.elf |
| tockload=n |
| ;; |
| *) |
| echo "Unknown platform \"${PLATFORM}\"" |
| exit 1 |
| ;; |
| esac |
| |
| libtock_target_path="${rust_target_folder}/tab/${PLATFORM}/${artifact}" |
| elf_file_name="${libtock_target_path}/${binary_name}" |
| tab_file_name="${libtock_target_path}.tab" |
| |
| mkdir -p "${libtock_target_path}" |
| cp "$1" "${elf_file_name}" |
| |
| STACK_SIZE=$(nm --print-size --size-sort --radix=d "${elf_file_name}" | grep STACK_MEMORY | cut -d " " -f 2) |
| |
| elf2tab -n "${artifact}" -o "${tab_file_name}" "${elf_file_name}" --stack ${STACK_SIZE} --app-heap $APP_HEAP_SIZE --kernel-heap $KERNEL_HEAP_SIZE --protected-region-size=64 |
| |
| if [ $tockload == "n" ]; then |
| echo "Skipping flashing for platform \"${PLATFORM}\"" |
| exit 0 |
| fi |
| |
| if ! [ -x "$(command -v tockloader)" ]; then |
| echo "Skipping flashing as tockloader isn't installed" |
| exit 0 |
| fi |
| |
| tockloader uninstall ${tockloader_flags} || true |
| tockloader install ${tockloader_flags} "${tab_file_name}" |