C言語

2026年版 組込みC言語入門ガイド – WSL2でHello Worldを実装

ⓘ本ページはプロモーションが含まれています

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


スポンサードリンク

1. 開発環境の全体像

項目 推奨ツール・バージョン 用途
OS Windows 10/11 + WSL2 (Ubuntu 24.04 LTS) Linux 環境をローカルで手軽に利用
コンパイラ gcc‑13(公式パッケージ) ARM Cortex‑M55 / RISC‑V FE310 用クロスコンパイル
ビルドシステム Make 4.4、CMake 3.27 小規模は Make、大規模は CMake が便利
エディタ VS Code 1.90+(拡張:C/C++, Cortex‑Debug, OpenOCD Debugger) コード補完・デバッグ統合
デバッガ GDB 13、OpenOCD 0.12 JTAG/SWD 実機デバッグ
シミュレータ QEMU 8.2(ARM)、Renode 1.14(RISC‑V) ハードウェアなしで動作確認
RTOS FreeRTOS 202212.00 LTS タスクベースのリアルタイム制御

2. C 言語基礎と組込みで意識すべきポイント

整数型・ビット操作

  • サイズが決まっている型uint8_t, int32_t …)を必ず使用し、レジスタ幅と合わせる。
  • ビットマスクはシフト演算で可読性を保つ例:

ポインタと volatile

  • ハードウェアレジスタは volatile 修飾が必須。
  • アドレスマッピングはマクロで一元管理し、型安全性を保つ。

メモリ配置の可視化

  • リンカスクリプト (linker.ld) に .data, .bss, .stack のサイズを明示し、ビルド後に size -A *.elf で確認。
  • スタックオーバーフローは --check-stack (GCC) や FreeRTOS のスタックウォッチ機能で検出できる。

3. メモリ・リアルタイム要件と RTOS 入門

静的メモリ設計

項目 推奨方針
動的確保 (malloc) 使用禁止 → フラグメントと非決定性遅延を回避
グローバル/スタティック変数 必要最小限にし、リンクスクリプトで配置
スタックサイズ STACKSIZE = 0x800(2 KB)程度から始め、FreeRTOS の configTOTAL_HEAP_SIZE と合わせて調整

割り込み設計のベストプラクティス

  1. ISR は「フラグ/キューへの書き込み」のみ。
  2. 長時間処理は タスク へ委譲(FreeRTOS の xQueueSendFromISRxTaskNotifyGiveFromISR)。
  3. 優先度はハードウェア優先度と同等に設定し、ネスト不可 にする。

ISR → FreeRTOS タスク例

FreeRTOS の設定例(Cortex‑M55)

  • タスクスタックuxTaskGetStackHighWaterMark() で実行時に残量を測定し、設計段階で余裕を持たせる。

4. WSL2 Ubuntu での最新ツールチェーン構築

GCC‑13 の取得方法(公式パッケージ)

Ubuntu バージョン 入手手順
Ubuntu 24.04 LTS (or newer) gcc-13 が公式リポジトリに含まれるので、通常の apt でインストール可能。
Ubuntu 22.04 LTS 公式バックポートがまだ無い場合は Ubuntu Toolchain PPAppa:ubuntu-toolchain-r/test)を利用。ただし将来的に削除されるリスクがあるため、次期 LTS にアップグレードすることを推奨。

Ubuntu 24.04 でのインストール例

参考: Ubuntu公式ドキュメント「Ubuntu Toolchain Releases」(最終更新日2025‑11‑02)

VS Code 拡張機能のインストール

拡張名 発行元 主な機能
C/C++ Microsoft IntelliSense、デバッグエンジン
Cortex‑Debug marus25 ARM GDB ラッパー、OpenOCD 連携
OpenOCD Debugger ms-iot OpenOCD 設定ファイルのテンプレート提供

拡張は VS Code の Extensions パネルで検索し、「Install」 をクリックするだけです。

launch.json(FreeRTOS + Cortex‑M55)抜粋


5. ビルド・デバッグフロー(Make / CMake)

Makefile(ARM Cortex‑M55)

CMakeLists.txt(RISC‑V FE310)

  • ビルド実行
    bash
    # Make の場合
    make -j$(nproc)

# CMake の場合
cmake -B build -S .
cmake --build build -j$(nproc)

  • ビルド後は size -A build/hello.elf でコード・データサイズを確認し、スタックとヒープの残量 を把握する。

6. エミュレータ/シミュレータの正しい設定例

QEMU(ARM)

QEMU の公式リストに cortex-m55 は未実装で、代替として cortex-m33 がサポートされています。M55 の機能をエミュレートしたい場合は RenodeZephyr のシミュレーションモードを使用してください。

Renode(RISC‑V FE310)

Renode は RISC‑V の cortex-m55 に近いモデルを提供しています。以下は最小構成の例です。

実行:

デバッグポイント

ツール 主な利点
QEMU 手軽に起動、標準 gdb でブレーク可能。CPU が限定的なので M55 の特殊命令は検証できない。
Renode 周辺デバイス(UART, SPI, GPIO)を豊富にエミュレートし、FreeRTOS のスケジューラや割込み遅延も測定可能。
OpenOCD + GDB 実機デバッグの唯一手段。monitor reset halt で起動直後に停止できるので、スタックオーバーフローの再現が容易。

7. 学習ロードマップと公式リソース

フェーズ 学習項目 推奨公式ドキュメント(最終更新日)
① 基礎 C 言語文法、ポインタ、ビット演算 ISO/IEC 9899:2023 (C17) – https://www.iso.org/standard/74528.html(2024‑02)
② 開発環境構築 WSL2 + Ubuntu 24.04、gcc‑13、VS Code 設定 Ubuntu Official Docs – Toolchain (https://wiki.ubuntu.com/ToolChain) (2025‑11‑02)
③ 組込み概念 メモリマップ、割込み設計、FreeRTOS 基礎 FreeRTOS V202212 Documentation – https://www.freertos.org/ (2024‑10)
④ ビルド/デバッグ Make, CMake, OpenOCD, GDB GNU Make Manual (https://www.gnu.org/software/make/manual/) (2025‑03)
⑤ エミュレータ活用 QEMU ARM, Renode RISC‑V QEMU Documentation – System Emulation (https://www.qemu.org/docs/master/system/ ) (2024‑12)
Renode Docs – https://renode.io/ (2025‑01)
⑥ 実機フラッシュ STM32CubeMX, SiFive Freedom SDK STMicroelectronics STM32Cube MCU Package (2026‑02)
SiFive Freedom E SDK (2025‑09)

注記:外部ブログや Qiita/Zenn 等のリンクは、記事が削除された場合に情報が失われるリスクがあります。上表のように公式マニュアル・リファレンスへの直接リンクを優先しています。


まとめ

  1. WSL2 + Ubuntu 24.04gcc‑13(公式)+make/cmake の環境で、Windows 上でも Linux ネイティブと同等のビルドが可能。
  2. VS Code の拡張だけでコード補完・デバッグが一体化し、実機/エミュレータどちらでもシームレスに切り替えられる。
  3. メモリとリアルタイム性 は設計段階から静的確保・タスク分離を徹底し、FreeRTOS の設定例で具体的な数値(スタックサイズ、ヒープ)を示すことで安全性を担保。
  4. エミュレータ は QEMU と Renode を使い分け、M55 のように未実装 CPU がある場合は代替 CPU または Renode でのシミュレーションを行う。
  5. 公式ドキュメント にリンクしつつ学習ロードマップを辿れば、約 3〜4 週間で「Hello, World!」をエミュレータまたは実機に走らせるスキルが身につく。

次のステップ
- 本リポジトリ(GitHub)にサンプルプロジェクト embedded-hello をクローンし、手順どおりビルド・デバッグを実行するだけで学習開始できます。
- さらに高度なリアルタイム制御が必要になったら、FreeRTOS の Priority InheritanceMessage Buffers へ拡張してください。


スポンサードリンク

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


-C言語