目次
ラズパイPicoで割り込み/コア間通信/PicoSDK共存
特集 ゼロから作るマルチコアOS
マルチコアOSを理解するためには…作ってしまおう!
プロローグ ゼロから作るマルチコアOS「Try Kernel」の概要
第1部 OS作りの準備(1)…マルチコアを理解する
分類/プログラム構造/OSの方式
第1章 マルチコア・マイコンの基礎知識
ハードウェア・スピンロック/インターコアFIFO/メモリ・アクセス
第2章 RP2040マイコンのマルチコア機能
2コアで起床→休止を交互に繰り返してLチカ
第3章 マルチコア・プログラムをベアメタルで実行する
Appendix1 マルチコアOSの開発環境
第2部 OS作りの準備(2)…割り込みを理解する
マルチコアの制御に必須!基本動作からRP2040の割り込み機能概要まで
第1章 割り込みの基礎知識
割り込みハンドラ/API/遅延ディスパッチ
第2章 OSの割り込み管理機能と実装
超音波距離センサを例にμsオーダの時間計測を試す
第3章 割り込み機能を使ってみる
第3部 OS作り(1)…ユーザがタスクを各コアに割り振る「AMP方式」
各コアに特定の処理を行わせる
第1章 AMP方式「Try Kernel-A」の概要と実装
リセット・ハンドラ/メイン関数/初期タスクからアプリケーション・プログラム実行開始の同期まで
第2章 OS起動処理の実装
機能検討から生成APIの設計,超音波距離センサを使った実験まで
第3章 CPUコア間メッセージの実装
第4部 AMP方式「Try Kernel-A」で製作にトライ
モータとセンサをリアルタイム自作OSで制御!まずはシングルコア版で実装する
第1章 マイコン・カーの自動走行プログラムの作成
タスク間通信をCPUコア間通信に置き換えてTry Kernel-Aへ移植する
第2章 自動走行プログラムをマルチコア化する
第5部 OS作り(2)…OSがタスクを各コアに割り振る「SMP方式」
内部構造から割り込み管理,CPUコア間の同期通信まで
第1章 SMP方式「Try Kernel-S」の概要と実装
SMP方式の要であるスケジューラ&ディスパッチャを実装する
第2章 タスク・スケジューリングの概要と実装
演算能力を必要とする処理を並列実行してマルチコア化の効果を測定する
第3章 SMP方式「Try Kernel-S」を動かしてみる
Appendix1 組み込みにおけるSMP方式のタスク・スケジューリング
第6部 Pico SDKとTry Kernelの良いとこ取り
USB/Wi-Fi/Bluetoothや各種ライブラリとTry Kernelを共存
第1章 Pico SDKと連携するハイブリッド・システムの構築
Pico SDKのネットワーク機能とTry Kernelを組み合わせる
第2章 製作(1)…Wi-Fi接続センサ・ノード
割り込みハンドラとCPUコア間通信で操縦コマンドを伝える
第3章 製作(2)…Wi-Fi経由で操作するリモート・マイコン・カー
特設 ゼロから学ぶOS
いきなりマルチコアOS はちょっと…のビギナ向け
プロローグ 1500行OS「Try Kernel」でOSの基礎を学ぶ
第1部 OSとは何か,そしてどんなOSを作るのか
タスクの優先度や状態遷移,スケジューリングが肝
第1章 マイコンOSの基本…リアルタイムとマルチタスク
最小構成だけど仕事で使えるレベル
第2章 1500行OS「Try Kernel」の仕様を決める
第2部 ステップ1…起動処理
main関数代わりにLEDを点滅させるまで
第1章 起動処理のプログラムを作る
第3部 ステップ2…マルチタスク機能
実行コンテキストの退避/切り替え/復元
第1章 プログラムを切り替えるディスパッチャ
待ち行列/優先度スケジューリング/タスク管理ブロック
第2章 実行すべきタスクとその順番を決めるスケジューラ
時間管理の単位チック・タイムと割り込みの設定
第3章 システム・タイマとタスクの時間待ち機能
第4部 ステップ3…タスクの同期と通信機能
例えばセンサ制御とデータ処理…優先度をコントロールできる
第1章 主に1対1のタスク同期に使われる…起床待ちと起床
フラグの生成/待ち/セット/クリア
第2章 複数のタスク間で複雑な同期もできる…イベント・フラグ
資源の獲得と返却
第3章 複数のタスク間での資源競合を防ぐ…セマフォによる排他制御
Try Kernel 2.0の新機能
第4章 タスク間でデータ通信を行うメッセージ・バッファの実装
Raspberry Piライフ
ArmとRISC-Vの両アーキテクチャ対応!データシートからハードウェアとセキュリティの進化を読み解く
最新ラズパイ・マイコンPico 2に搭載 RP2350レポート
IoTシステム構築塾〈第4回〉
電源断対策/障害復旧/セキュリティ…ゲートウェイのセットアップと疎通確認
テクノロジー掘り下げ
エンジニア数学〈第5回〉
音の信号処理(5)…「適応ノイズ・キャンセリング」
Pythonで体験カルマン・フィルタ入門〈第2回〉
カルマン・フィルタで1次元運動を推定(1)
AI画像処理
画像生成AIの新機能を試す〈第2回〉
追加学習モデルを既存モデルと並行して動かす「LoRA」 湊 雄一郎
ラズパイでエッジAI〈第2回〉
PoseNet/MoveNetを使った人物姿勢推定
画像評価
ラズパイで体験!CMOSイメージセンサ性能の測定評価〈第9回〉
PRNUその1…測定法
回そう!モータ
毎号実験!自律移動ロボット〈第10回〉
左右のかじ取りをマイコンで自動化し目的地に向かう
ニュース&レポート&お知らせ
台風にも負けず今年も開催! 組み込み技術者向け
ワークショップSWESTに潜入
ほんのりInterface
Dojo通信〈第3回〉
光(山口県)編
読者プレゼント
次号予告
別冊付録
やりなおしのためのコンピュータ技術 Vol.4
詳細な内容はこちら
特設記事は2023年7月号特集を再編集したものです