refactor: move firmware workspace under firmware
This commit is contained in:
1 parent
153b0bf262
commit
f03fc119a4
222 files changed
+56
-13
No files matched your search
Executable
+36
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
if [[ $# -ne 1 ]]; then
|
||||
printf 'Usage: %s <firmware.elf>\n' "$0" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
readonly input_elf="$1"
|
||||
readonly firmware_name="$(basename "${input_elf%.elf}")"
|
||||
readonly board_name="${firmware_name#kaptan-}"
|
||||
readonly output_image="${input_elf%.elf}.bin"
|
||||
readonly script_directory="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
||||
readonly workspace_root="$(cd -- "$script_directory/.." && pwd)"
|
||||
readonly memory_x="$workspace_root/boards/$board_name/memory.x"
|
||||
readonly host="$(rustc -vV | sed -n 's/^host: //p')"
|
||||
readonly llvm_objcopy="$(rustc --print sysroot)/lib/rustlib/$host/bin/llvm-objcopy"
|
||||
|
||||
if [[ ! -f "$input_elf" ]]; then
|
||||
printf 'firmware ELF does not exist: %s\n' "$input_elf" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -f "$memory_x" ]]; then
|
||||
printf 'cannot find the linker layout for board %q: %s\n' "$board_name" "$memory_x" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -x "$llvm_objcopy" ]]; then
|
||||
printf 'llvm-objcopy is unavailable; install it with: rustup component add llvm-tools-preview\n' >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
"$llvm_objcopy" -O binary "$input_elf" "$output_image"
|
||||
printf 'DFU image: %s\n' "$output_image"
|
||||
"$script_directory/analyze-fw.py" "$input_elf" "$memory_x"
|
||||
Reference in new issue
Block a user