---
title: Raspberry Piのベアメタル環境circleにプリエンプトスケジューラ
tags: 
author: [Kazuhiro Takahashi](https://www.docswell.com/user/alvstakahashi)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/VJNYXWKV78.jpg?width=480
description: OSDEVもくもく会で利用
published: July 17, 26
canonical: https://www.docswell.com/s/alvstakahashi/KQ2EPN-2026-07-17-102513
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/VJNYXWKV78.jpg)

Raspberry Piのベアメタ
ル環境circleにプリエン
プトスケジューラを実
装した
髙橋和浩 アライブビジョンソフトウェア株式会社
2 0 2 6 年 8 月 2 日 第 5 2 回 自 作 O S も くもく 発表作 業会


# Page. 2

![Page Image](https://bcdn.docswell.com/page/YE9P8XVVJ3.jpg)

今回発表の経緯
第29回 自作OSもくもく会オンライン にて発表したかと思います
カーネルディスパッチャだけでは
つまらないという 結果でした orz…
2026/7/17


# Page. 3

![Page Image](https://bcdn.docswell.com/page/GE8D82P4ED.jpg)

今回はそれの挽回版（時間たってますが）
CircleというRaspberry Piのベアメタル環境があることを知りました
2026/7/17


# Page. 4

![Page Image](https://bcdn.docswell.com/page/LELMR21V7R.jpg)

結局同じものを違うプラットフォームに移植しました
CircleにTOPPERS/SSPシュリンク版を移植すればいいと考えました。
勝手な妄想です。
2026/7/17


# Page. 5

![Page Image](https://bcdn.docswell.com/page/4JMYR8WNJW.jpg)

TOPPERS/SSPシュリンク版のおさらい
もうすでに世代が昔のものになっていますが、TOPPERSプロジェクトの最小セットカーネルから改造を加えた
ものです。
変更内容:
・システム全体のOSという形態から、既存のベアメタル環境に移植できる構成に変更
・上記に伴い不要ファイル、不要ヘッダファイルを削除
・C言語ディスパッチャの実装にともない、従来協調型プリエンプションをプリエンプションカーネルに変更
2026/7/17


# Page. 6

![Page Image](https://bcdn.docswell.com/page/PJR9R5Y479.jpg)

Circleとは
https://github.com/rsta2/circle に公開されています。
世界中で作られている、Circleベースの驚異的な「専用機」たち
Linuxを介さないベアメタルならではの「超低レイテンシ」「高速起動」「リソースの完全占有」を活かし、世界中の開発者が
Circleを使って驚くほど実用的なプロダクトを生み出しています。
その多様性とポテンシャルの高さは、公式Wikiにまとめられたプロジェクト一覧を見れば一目瞭然です。シンセサイザーやMIDI
機器、ポータブルゲーム機、高度なネットワーク機器など、Linuxを起動せずとも「電源ONですぐに動く専用機」が多数開発さ
れています。
Circle ベース・プロジェクト一覧（公式Wiki）
https://github.com/rsta2/circle/wiki/List-of-Circle-based-projects
2026/7/17


# Page. 7

![Page Image](https://bcdn.docswell.com/page/PEXQRKGZJX.jpg)

Circleについて特徴１（私からの説明）
簡潔なビルド方法、各Raspberry piが同一サンプルで動作
１）コンフィグレータで、Piの種類とAArch32/64の指定
２）ライブラリビルド
３）SDイメージ共通ファイルがMakeで作成できる
４）サンプルアプリのビルド Make１発
2026/7/17


# Page. 8

![Page Image](https://bcdn.docswell.com/page/3EK9R54VED.jpg)

Circleについて特徴２（私からの説明）
サンプルアプリの構成
◦ kernel.cpp/h main.cpp/h
で構成されている。
◦ C++なので、継承したクラスで対応可能
デバッグ情報あり/doc
◦ JTAG用の設定ファイル情報なども記載されている。
◦ 自分もJTAGに接続しています。
2026/7/17


# Page. 9

![Page Image](https://bcdn.docswell.com/page/L73W8KDQ75.jpg)

プリエンプトスケジューラの話
内容は目新しくないのですが、前回と同じ
ただ、移植先が変わっただけです。
移植の様子はgithubの修正履歴からも確認できると思います。
⚫起動時に sta_ker()の呼び出し、と周期タイマーハンドラを登録することです。
⚫周期タイマーハンドラの登録はcircle APIで
m_Timer.RegisterPeriodicHandler(TimerHandler);
になります
⚫どうしてもアセンブラな部分は sample/04-01-preemptive-kernel/arch/RPI/target_kernel.h
になります。 Aarch32は試していませんが、ベースが違うときのものなので動くと思っています。
2026/7/17


# Page. 10

![Page Image](https://bcdn.docswell.com/page/87DKM3PWJG.jpg)

今後の課題と今やっていること
自作RTOSセミナー（有料セミナ）
◦ 以前のベースでもやっていました。今回は助成金対象になるように対応しています。
circle プリエンプトスケジューラ対応を使ったシステム構築
◦ 今検討中のビジネスプランで開発を考えています。OpenAMPを利用検討中。
◦ 兵庫県のオープンイノベーションの勉強会に参加中です。
2026/7/17


# Page. 11

![Page Image](https://bcdn.docswell.com/page/VJPKR4NXE8.jpg)

ビジネスプランで開発検討中（案）
[ Circle (Core3) ]
[ Linux (Core0-Core2) ]
│
│
(PIR(赤外線)センサーが検知！)
│ (OpenAMPのコマンドを
│
│ ポーリングしながら
├─① カメラに撮影命令 (50msでシャッター)
│ 低電力アイドル維持)
│
│
├─② メモリ(DRAM)上に撮影した画像を展開
│
│
│
└─③ OpenAMPで「画像アドレス」を通知 ──────────────&gt;│ (割り込みにより復帰)
│
├─④ 共有メモリから直接
│ 画像を読み込む
│
├─⑤ なにかします
│
└─⑥ なにか後
アイドル状態に戻る
│
2026/7/17


