86 lines
2.6 KiB
TOML
86 lines
2.6 KiB
TOML
#
|
|
# SPDX-License-Identifier: BlueOak-1.0.0
|
|
#
|
|
# Copyright (c) Berkus Decker <berkus+vesper@metta.systems>
|
|
#
|
|
[config]
|
|
min_version = "0.32.0"
|
|
default_to_workspace = true
|
|
|
|
[env]
|
|
DEFAULT_TARGET = "aarch64-vesper-metta"
|
|
|
|
#
|
|
# === User-configurable ===
|
|
#
|
|
|
|
# Pass TARGET env var if it does not match the default target above.
|
|
TARGET = { value = "${DEFAULT_TARGET}", condition = { env_not_set = ["TARGET"] } }
|
|
|
|
# Name of the target board "rpi3" or "rpi4"
|
|
TARGET_BOARD = { value = "rpi4", condition = { env_not_set = ["TARGET_BOARD"] } }
|
|
|
|
# AArch64 QEMU binary
|
|
QEMU = { value = "qemu-system-aarch64", condition = { env_not_set = ["QEMU"] } }
|
|
|
|
# An aarch64-enabled GDB
|
|
GDB = { value = "/usr/local/opt/gdb-8.2.1-aarhc64/bin/aarch64-linux-elf-gdb", condition = { env_not_set = ["GDB"] } }
|
|
|
|
# OpenOCD with JLink support
|
|
# (RTT patch from http://openocd.zylin.com/#/c/4055/11 has already been merged into main line)
|
|
OPENOCD = { value = "/usr/local/opt/openocd/4d6519593-rtt/bin/openocd", condition = { env_not_set = ["OPENOCD"] } }
|
|
|
|
# Mounted sdcard partition path
|
|
VOLUME = { value = "/Volumes/BOOT", condition = { env_not_set = ["VOLUME"] } }
|
|
|
|
#
|
|
# === Automatic ===
|
|
#
|
|
CARGO_MAKE_EXTEND_WORKSPACE_MAKEFILE = true
|
|
|
|
TARGET_JSON = "${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/targets/${TARGET}.json"
|
|
|
|
DEVICE_FEATURES = "noserial"
|
|
QEMU_FEATURES = "qemu"
|
|
|
|
OBJCOPY = "rust-objcopy" # Part of `cargo objcopy` in cargo-binutils
|
|
OBJCOPY_PARAMS = "--strip-all -O binary"
|
|
NM = "rust-nm" # Part of `cargo nm` in cargo-binutils
|
|
|
|
UTILS_CONTAINER = "andrerichter/raspi3-utils"
|
|
DOCKER_CMD = "docker run -it --rm -v ${PWD}:/work -w /work -p 5900:5900"
|
|
QEMU_CONTAINER_CMD = "qemu-system-aarch64"
|
|
|
|
#
|
|
# Could additionally use -nographic to disable GUI -- this shall be useful for automated tests.
|
|
#
|
|
# -d in_asm,unimp,int
|
|
QEMU_OPTS = "-M raspi3 -d int -semihosting"
|
|
QEMU_SERIAL_OPTS = "-serial null -serial stdio"
|
|
QEMU_TESTS_OPTS = "-nographic"
|
|
# For gdb connection:
|
|
# - if this is set, MUST have gdb attached for SYS_WRITE0 to work, otherwise QEMU will crash.
|
|
# - port 5555 used to match JLink configuration, so we can reuse the same GDB command for both QEMU and JTAG.
|
|
QEMU_GDB_OPTS = "-gdb tcp::5555 -S"
|
|
|
|
GDB_CONNECT_FILE = "${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/target/${TARGET}/gdb-connect"
|
|
|
|
KERNEL_ELF = "${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/kernel8"
|
|
KERNEL_BIN = "${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/kernel8.img"
|
|
|
|
[tasks.default]
|
|
alias = "all"
|
|
|
|
[tasks.all]
|
|
dependencies = ["kernel-binary"]
|
|
|
|
[tasks.modules]
|
|
command = "cargo"
|
|
args = ["modules", "tree"]
|
|
|
|
[tasks.sdeject]
|
|
dependencies = ["sdcard"]
|
|
script = [
|
|
"diskutil unmount ${VOLUME}"
|
|
]
|