# Zephyr Tutorial (1)

**URL:** <https://forum.spacecubics.com/t/zephyr-tutorial-1/109>\
**Category:** Community\
**Tags:** lang-ja\
**Created:** [August 19, 2025, 11:19am UTC](https://forum.spacecubics.com/t/zephyr-tutorial-1/109 "2025-08-19T11:19:02Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![yashi](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.spacecubics.com/yashi/32/10_2.png) [@yashi](https://forum.spacecubics.com/u/yashi)\
**Post date:** [August 19, 2025, 11:19am UTC](https://forum.spacecubics.com/t/zephyr-tutorial-1/109/1 "2025-08-19T11:19:02Z")

</div>

# Space ROS Club Zephyr Tutorial (1)

目的: Zephyr RTOS の Official Document を見ながら Zephyr-based な開発の体験をする

## Zephyr RTOS とは

- [Introduction — Zephyr Project Documentation](https://docs.zephyrproject.org/latest/introduction/index.html)

## Resources

- Project Site: [https://www.zephyrproject.org/](https://www.zephyrproject.org/)
- Zephyr Discord: [https://chat.zephyrproject.org/](https://chat.zephyrproject.org/)
  - 日本語チャンネルあるよ #japanese

- GitHub: [GitHub - zephyrproject-rtos/zephyr: Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures. · GitHub](https://github.com/zephyrproject-rtos/zephyr)
- ドキュメント: [http://docs.zephyrproject.org/](http://docs.zephyrproject.org/)
- Open Source Summit Japan 2025 Zephyr Track: [About the Tracks | LF Events](https://events.linuxfoundation.org/open-source-summit-japan/about/about-the-tracks/#zephyr)

## もとになっているドキュメント

SC-OBC module A1 の Software Manual がベース

- [SC-OBC Module A1 Software Manual :: Space Cubics Documentation](https://spacecubics.github.io/sc-docs/scobc-a1-software-manual/latest/index.html)
- [SC-OBC Module A1 — Zephyr Project Documentation](https://docs.zephyrproject.org/latest/boards/sc/scobc_a1/doc/index.html)

## Install

- なにはなくとも、まずは環境構築
  - Windows, MacOS, Linux に対応している
  - が、講師が Linuxしか使えないので Windows や MacOSの事は聞かないで

- [Getting Started Guide — Zephyr Project Documentation](https://docs.zephyrproject.org/latest/develop/getting_started/index.html)

## Sample を試す

- [Samples and Demos — Zephyr Project Documentation](https://docs.zephyrproject.org/latest/samples/index.html)
- サンプルも検索できる

### Hello World

```auto
west build -p -t run -b qemu_cortex_m3 zephyr/samples/hello_world

```

### philosophers

```auto
west build -p -t run -b qemu_cortex_m3 zephyr/samples/philosophers

```

### POSIX

```auto
west build -p -t run -b qemu_cortex_m3 zephyr/samples/posix/philosophers

```

### C++

```auto
west build -p -t run -b qemu_cortex_m3 zephyr/samples/cpp/hello_world

```

### Native Sim

```auto
west build -p -t run -b native_sim zephyr/samples/posix/philosophers

```

### Rapsberry Pi Pico

```auto
west build -p -b rpi_pico zephyr/samples/hello_world

```

### Rapsberry Pi 5

```auto
west build -p -b rpi_5 zephyr/samples/hello_world

```

### Lチカ (Blinky)

```auto
west build -p -t run -b qemu_cortex_m3 zephyr/samples/hello_world

```

- 失敗する
- LED が無いから
  - LED が無いだけなのに、ひどいエラーがでる
  - Device Tree の問題なのだが、 Macrobatics やら黒魔術など色々言われている
  - Device Tree に関しては、次回か、次次回で

- LED があるボードを探す
  - [Supported Boards and Shields — Zephyr Project Documentation](https://docs.zephyrproject.org/latest/boards/index.html)

## 開発環境とか

### 基本の開発環境

- Zephyr のビルドシステムは CMakeベース
- でも、若干 CMake っぽくないところもある
- CMake だけど、 GNU Make には対応していない (はず？)
- Ninja を使います
- Kconfig も使います

### 基本の West

- [West (Zephyr’s meta-tool) — Zephyr Project Documentation](https://docs.zephyrproject.org/latest/develop/west/index.html)
- これまで見てきた通り、 Zephyr の開発は West というツールを使う
- プロジェクト固有の新しい道具や、やり方は、障壁になるので、ここで簡単に説明する
- West は Zephyr の何でも屋
- もともとは、 repo や git submodule のように複数のレポジトリ管理のために作られた
  - [History and Motivation — Zephyr Project Documentation](https://docs.zephyrproject.org/latest/develop/west/why.html)

- でも今では、 Build も Debug も SDK のインストールもこなす、 multi-purpose ツール
- ROS の人には vcstool と colcon と ros2 と自作スクリプトが一つになった物だと思ってもらって良い

#### west build

- Build するためのコマンド

- 基本形

- -p --prinstine

- -t --target

#### west flash

- ボードにイメージを書き込む
- OpenOCD や JLinkなど、ボードに合わせてよしなにやってくれる

#### west debug

- Debugger を起動
- VS Code や Emacs からつなぎたい場合は、 `west debugserver` を使う

#### west update

- West module のアップデート
- 

#### west list

#### west init

#### west boards

#### west twister

### ボードの名前

- [Board Porting Guide — Zephyr Project Documentation](https://docs.zephyrproject.org/latest/hardware/porting/board_porting.html#board-terminology)  
 ![board-terminology](https://hackmd.io/_uploads/rkjVyrWtxl.svg)
  - 最近は一枚のボードに複数の CPU が乗っているので、「どの CPUなのか」を指定する必要がある

#### RPi

```auto
❯ west boards | grep rpi 
rpi_pico
rpi_4b
rpi_pico2
rpi_5

```

```auto
❯ west boards -f "{name}/{qualifiers}" | grep rpi_
rpi_pico/rp2040,rp2040/w
rpi_4b/bcm2711
rpi_pico2/rp2350a/m33,rp2350a/m33/w
rpi_5/bcm2712

```

#### QEMU

```auto
❯ west boards | grep qemu
qemu_riscv32_xip
qemu_cortex_a9
qemu_rx
qemu_kvm_arm64
qemu_leon3
qemu_x86
qemu_x86_lakemont
qemu_x86_64
qemu_x86_tiny
qemu_xtensa
qemu_arc
qemu_riscv32e
qemu_cortex_r5
qemu_malta
qemu_riscv64
qemu_cortex_a53
qemu_cortex_m0
qemu_cortex_m3
qemu_riscv32

```

```auto
❯ west boards -f "{name}/{qualifiers}" | grep qemu_
qemu_riscv32_xip/fe310_g002
qemu_cortex_a9/xc7z007s
qemu_rx/r5f562n8
qemu_kvm_arm64/qemu_virt_arm64
qemu_leon3/leon3
qemu_x86/atom,atom/nokpti,atom/nommu,atom/nopae,atom/virt,atom/xip
qemu_x86_lakemont/lakemont
qemu_x86_64/atom,atom/nokpti
qemu_x86_tiny/atom
qemu_xtensa/dc233c,dc233c/mmu,sample_controller32,sample_controller32/mpu
qemu_arc/qemu_arc_em,qemu_arc_hs,qemu_arc_hs/xip,qemu_arc_hs5x,qemu_arc_hs6x
qemu_riscv32e/qemu_virt_riscv32e
qemu_cortex_r5/zynqmp_rpu
qemu_malta/qemu_malta,qemu_malta/be
qemu_riscv64/qemu_virt_riscv64,qemu_virt_riscv64/smp
qemu_cortex_a53/qemu_cortex_a53,qemu_cortex_a53/smp,qemu_cortex_a53/xip
qemu_cortex_m0/nrf51822
qemu_cortex_m3/ti_lm3s6965
qemu_riscv32/qemu_virt_riscv32,qemu_virt_riscv32/smp

```
