? Quickstart Bash Script: scripts/quickstart.sh
#!/usr/bin/env bash
# =========================================================
# RISC-V Workshop Quickstart Script
# =========================================================
# Purpose: Automatically setup RISC-V tools, examples, and build environment
# Usage: bash scripts/quickstart.sh
# =========================================================
set -euo pipefail
echo "=== STEP 1: Update system and install basic packages ==="
sudo apt update
sudo apt install -y build-essential git make cmake wget curl \
python3 python3-pip unzip bison flex \
autoconf automake libtool gawk pkg-config \
gdb-multiarch spike
echo "=== STEP 2: Install RISC-V GNU Toolchain (if not installed) ==="
if ! command -v riscv64-unknown-elf-gcc &>/dev/null; then
echo "Toolchain not found. Installing to /opt/riscv..."
TMPDIR=$(mktemp -d)
git clone --depth 1 https://github.com/riscv-collab/riscv-gnu-toolchain.git "$TMPDIR/riscv-gnu-toolchain"
cd "$TMPDIR/riscv-gnu-toolchain"
./configure --prefix=/opt/riscv --with-arch=rv64gc --with-abi=lp64d
make -j"$(nproc)"
sudo chown -R $USER:$USER /opt/riscv
echo 'export PATH=$PATH:/opt/riscv/bin' >> ~/.bashrc
source ~/.bashrc
cd -
rm -rf "$TMPDIR"
else
echo "RISC-V toolchain already installed."
fi
echo "=== STEP 3: Setup workshop directories ==="
WORK_DIR="$HOME/riscv-workshop"
mkdir -p "$WORK_DIR/examples"
mkdir -p "$WORK_DIR/exercises/day01-environment"
mkdir -p "$WORK_DIR/exercises/day02-sim-and-toolchain"
echo "Created directories under $WORK_DIR"
echo "=== STEP 4: Copy starter examples ==="
cat > "$WORK_DIR/examples/hello.c" <<'EOF'
#include <stdio.h>
int main() {
printf("Hello, RISC-V Workshop!\n");
return 0;
}
EOF
echo "Created hello.c in examples/"
echo "=== STEP 5: Build and run example ==="
mkdir -p "$WORK_DIR/build"
riscv64-unknown-elf-gcc -O2 -march=rv64gc -mabi=lp64d -o "$WORK_DIR/build/hello.elf" "$WORK_DIR/examples/hello.c"
echo "Running on Spike simulator:"
spike "$WORK_DIR/build/hello.elf"
echo "=== Quickstart Completed! ==="
echo "All setup is ready in $WORK_DIR"
echo "Next step: explore exercises in $WORK_DIR/exercises/"
✅ How It Works
-
Update system & install dependencies
-
Ensures
git,gcc,make,spike, Python, and other utilities are installed.
-
-
Install RISC-V Toolchain if missing
-
Clones and builds the toolchain automatically.
-
Adds
/opt/riscv/binto PATH.
-
-
Create workshop directories
-
examples/for demo code -
exercises/day01-environment/andday02-sim-and-toolchain/for exercises
-
-
Add starter example (
hello.c)-
Simple “Hello, RISC-V Workshop!” program.
-
-
Build & run example
-
Compiles with
riscv64-unknown-elf-gcc -
Runs on
spikesimulator
-
? Usage
chmod +x scripts/quickstart.sh
bash scripts/quickstart.sh
After running:
-
Environment is ready under
~/riscv-workshop -
Participants can start exercises immediately
-
Only one command sets up everything
| (26) | 会員情報 |
| 会員 | 所属 | 金額 | セット | 単独 | db1 | db2 | db3 | db4 | 日付 |
|---|---|---|---|---|---|---|---|---|---|
| 9 | 6 | 149999 | 4 | 4005 | 35 | 0 | 0 | 0 | 0000-00-00 |
| 1 | 0 | 0 | 0 | 2 | 1008 | 2003 | 3002 | 4007 | 2017-11-15 |
| 2 | 0 | 11111 | 1 | 0 | 1 | 2 | 25 | 26 | 2020-02-21 |
| 3 | 0 | 12000 | 1 | 0 | 45 | 46 | 43 | 44 | 2020-02-25 |
| 12 | 0 | 12000 | 1 | 0 | 22 | 23 | 28 | 29 | 2020-03-09 |
| 14 | 6 | 12000 | 1 | 0 | 30 | 32 | 36 | 37 | 2020-03-10 |
| 7 | 6 | 11000 | 1 | 0 | 27 | 34 | 61 | 31 | 2020-04-02 |
| 9 | 6 | 12000 | 1 | 0 | 18 | 19 | 20 | 21 | 2020-04-25 |
| 2 | 0 | 4000 | 0 | 1 | 35 | 0 | 0 | 0 | 2020-05-01 |
| 12 | 0 | 11999 | 1 | 0 | 24 | 38 | 39 | 40 | 2020-05-31 |
| テストID | ユーザーID | レコード数 | 実施月日 |
|---|---|---|---|
| 1001 | 5 | 1 | 2009:08:02,18:00:00,# |
| 1002 | 7 | 1 | 2009 |
| 1003 | 5 | 1 | 69,## |
| 1004 | 11 | 3 | 0000-00-00/ /00:00:00 |
| 1005 | 11 | 10 | 0 |
| 1007 | 2 | 9 | 0 |
| 1008 | 3 | 2 | 0 |
| 1111 | 3 | 6 | 0 |
| 2001 | 7 | 1 | 2009 |
| 2003 | 7 | 6 | 0 |
| 2004 | 7 | 10 | 0 |
| 2230 | 7 | 2 | 0 |
| 3001 | 2 | 2 | |
| 3002 | 12 | 17 | 0000-00-00/ /00:00:00 |
| 3004 | 12 | 14 | 0000-00-00/ /00:00:00 |
| 4001 | 12 | 2 | 0000-00-00/ /00:00:00 |
| 4002 | 12 | 1 | 0000-00-00/ /00:00:00 |
| 4003 | 12 | 1 | 0000-00-00/ /00:00:00 |
| 4004 | 12 | 1 | 0000-00-00/ /00:00:00 |
| 4005 | 9 | 14 | # |
| 4006 | 10 | 3 | 2020-08-17,14:00:30# |
| 4007 | 11 | 58 | #https://web.microsoftstream.com/video/46714aa8-b024-4752-a6b1-58b03cb025c1# |
| 所属ID(Class 1) | ユーザー数 | class1番地 |
| 6 | 8 | 2 |
| 6 | 8 | 3 |
| 6 | 8 | 4 |
| 6 | 8 | 5 |
| 6 | 6 | 6 |
| 22 | 1 | 7 |
| 0 | 7 | 8 |
| ユーザーID(Class 2) | id番地 | レコード数 |
| 2 | 9 | 1 |
| 3 | 10 | 1 |
| 7 | 12 | 1 |
| 7 | 11 | 1 |
| 9 | 13 | 1 |
| 9 | 14 | 1 |
| 10 | 15 | 1 |
| 10 | 16 | 1 |
| 11 | 17 | 1 |
| 12 | 18 | 1 |
| 12 | 19 | 1 |
| 14 | 20 | 1 |
| 14 | 21 | 1 |
| 15 | 22 | 1 |
| 16 | 23 | 1 |
| 17 | 24 | 1 |
| 18 | 25 | 1 |
| 19 | 26 | 1 |
| 20 | 27 | 1 |
| 21 | 28 | 1 |
| 24 | 29 | 1 |
| 25 | 30 | 1 |
| 26 | 31 | 1 |
| 27 | 32 | 1 |
| 28 | 33 | 1 |
| 29 | 34 | 1 |
| 30 | 35 | 1 |
| 31 | 36 | 1 |
| 32 | 37 | 1 |
| 33 | 38 | 1 |
| 34 | 39 | 1 |
| 35 | 40 | 1 |
| 36 | 41 | 1 |
| 36 | 42 | 1 |
| 36 | 43 | 1 |
| 37 | 44 | 1 |
| 38 | 45 | 1 |
| 39 | 46 | 1 |
| 40 | 47 | 1 |
| 41 | 48 | 1 |
| 42 | 49 | 1 |
| 43 | 50 | 1 |
| 44 | 51 | 1 |
| 45 | 52 | 1 |
| 46 | 53 | 1 |
| 47 | 54 | 1 |
| 48 | 55 | 1 |
| 49 | 56 | 1 |
| 50 | 57 | 1 |
| 51 | 58 | 1 |
| 52 | 59 | 1 |
| 53 | 60 | 1 |
| 54 | 61 |
| ユーザーID(Class 3) | id番地 | レコード数 |
| 0 | 71 | 1 |
| 1 | 64 | 1 |
| 2 | 63 | 1 |
| 3 | 62 | 1 |
| 4 | 66 | 1 |
| 5 | 65 | 1 |
| 6 | 145 | 1 |
| 55 | 67 | 1 |
| 59 | 68 | 1 |
| 60 | 69 | 1 |
| 61 | 70 | 1 |