Skip to content

組み込み開発ツールと手法コース

目次

はじめに

このコースは、組み込みソフトウェア開発における重要なツールの使用方法と効果的な開発手法について学ぶための2週間のカリキュラムです。現代の組み込みソフトウェア開発において不可欠なバージョン管理、継続的インテグレーション/継続的デリバリー(CI/CD)、そしてデバッグ技術について、実践的な演習を通じて習得します。

前提条件

  • C/C++によるプログラミングの基本的な知識
  • Linux基本コマンドの理解
  • 組み込みシステムの基礎知識

コース概要

mindmap
  root((開発ツールと手法))
    Week 1
      Gitの基本と応用
        リポジトリ管理
        ブランチ戦略
        コンフリクト解決
      CI/CD
        GitLab CI
        Jenkins
        自動テスト
    Week 2
      デバッグ技術
        GDB基礎
        リモートデバッグ
      トレース技術
        ログ解析
        性能分析

Week 1: バージョン管理とCI/CD

Day 1-2: Gitの基本

1. Gitの基本概念

  • バージョン管理の重要性
  • ソースコードの変更履歴管理
  • チーム開発での協調作業
  • 問題発生時の原因追跡

  • 基本的なGitコマンド

  • git init: リポジトリの初期化
  • git clone: リポジトリのクローン
  • git add: ステージングエリアへの追加
  • git commit: 変更の確定
  • git push: リモートリポジトリへの送信
  • git pull: リモートリポジトリからの取得

2. 実践演習:基本的なGit操作

sequenceDiagram
    participant W as 作業ディレクトリ
    participant S as ステージングエリア
    participant L as ローカルリポジトリ
    participant R as リモートリポジトリ
    W->>S: git add
    S->>L: git commit
    L->>R: git push
    R->>L: git pull

Day 3-4: 高度なGit技術

1. ブランチ戦略

  • GitFlow概要
  • masterブランチ
  • developブランチ
  • featureブランチ
  • releaseブランチ
  • hotfixブランチ

  • ブランチ操作

  • git branch: ブランチの作成と管理
  • git checkout: ブランチの切り替え
  • git merge: ブランチの統合
  • git rebase: 履歴の整理

2. コンフリクト解決

  • コンフリクトの発生原因
  • 解決手順と best practices
  • マージツールの使用方法

Day 5: CI/CDの基礎

1. CI/CDの概念

  • 継続的インテグレーション
  • 自動ビルド
  • 自動テスト
  • コード品質チェック

  • 継続的デリバリー

  • 自動デプロイ
  • 環境管理
  • リリース管理
graph LR
    A[コード変更] --> B[自動ビルド]
    B --> C[自動テスト]
    C --> D[コード品質チェック]
    D --> E[自動デプロイ]
    E --> F[動作確認]
    F --> G[リリース]

Day 6-7: GitLab CI/CD

1. GitLab CIの設定

  • .gitlab-ci.ymlの書き方
  • パイプラインの設定
  • 環境変数の管理

2. 実践演習:CI/CDパイプラインの構築

stages:
  - build
  - test
  - deploy

build:
  stage: build
  script:
    - make clean
    - make all

test:
  stage: test
  script:
    - make test

deploy:
  stage: deploy
  script:
    - make flash
  only:
    - master

Week 2: デバッグ技術とツール

Day 8-9: GDBによるデバッグ

1. GDBの基本

  • 基本コマンド
  • run: プログラムの実行
  • break: ブレークポイントの設定
  • print: 変数の表示
  • step: ステップ実行
  • continue: 実行再開

  • デバッグ情報の見方

  • バックトレース
  • レジスタ情報
  • メモリマップ

2. リモートデバッグ

  • GDBサーバーの設定
  • JTAGデバッガの使用方法
  • クロスデバッグの手順
sequenceDiagram
    participant D as 開発PC
    participant G as GDBサーバー
    participant T as ターゲットボード
    D->>G: デバッグ接続要求
    G->>T: JTAGデバッグ接続
    T->>G: デバッグ情報送信
    G->>D: デバッグ情報表示

Day 10: メモリ解析とトレース技術

1. メモリダンプ解析

  • メモリマップの理解
  • スタック解析
  • ヒープ解析

2. ログ解析とトレース

  • ログレベルの設定
  • トレースポイントの活用
  • パフォーマンス分析

評価方法

1. 日々の演習レポート(40%)

  • 実習内容の記録
  • 問題解決プロセスの説明
  • 学んだ内容の要約

2. 実践演習の成果物(30%)

  • Gitリポジトリの管理状態
  • CI/CD設定の完成度
  • デバッグレポートの品質

3. 最終プロジェクト(30%)

  • 開発環境の構築
  • バージョン管理の適切な利用
  • デバッグ技術の応用

環境構築ガイド

1. 必要な機材

  • 開発用PC
  • CPU: Intel Core i5以上推奨
  • メモリ: 8GB以上推奨
  • ストレージ: SSD 256GB以上推奨
  • OS: Ubuntu 22.04 LTS推奨

  • 開発ボード

  • STM32 Nucleo Board
  • ST-LINK/V2デバッガ
  • USBケーブル

2. ソフトウェアのインストール

# 基本開発ツール
sudo apt update
sudo apt install build-essential git gdb

# 統合開発環境
sudo snap install eclipse --classic

# CI/CDツール
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker

3. 環境構築の確認

以下のコマンドで各ツールが正しくインストールされていることを確認します:

1
2
3
git --version
gdb --version
docker --version

注意:このテキストは継続的に更新される可能性があります。最新版は常にオンラインで参照してください。

組み込み開発ツールと手法コース1

コース概要1

本コースは、組み込みソフトウェア開発において必要不可欠な開発ツールの使用方法と効率的な開発手法について学ぶ2週間のコースです。

学習目標

  • Gitを用いた効率的なバージョン管理手法の習得
  • CI/CDパイプラインの構築と運用方法の理解
  • デバッグツールを使用した効果的なトラブルシューティング手法の習得
  • チーム開発における各種ツールの活用方法の理解

Week 1: バージョン管理とCI/CD

Day 1: Gitの基本

1. バージョン管理の概念

  • バージョン管理の必要性
  • 集中型と分散型バージョン管理システムの違い
  • Gitの基本概念
  • リポジトリ
  • コミット
  • ステージング

2. Git基本コマンド

  • リポジトリの初期化(git init)
  • 基本的なワークフロー
  • git add
  • git commit
  • git status
  • git log
  • .gitignoreの設定

実習課題

  • ローカルリポジトリの作成
  • 基本的なGitコマンドの実行
  • 適切な.gitignoreファイルの作成

Day 2: Gitの高度な使用法

1. ブランチの概念と操作

  • ブランチの作成と切り替え
  • マージの基本
  • コンフリクトの解決方法

2. リモートリポジトリの操作

  • リモートリポジトリの追加
  • プッシュとプル
  • フェッチとマージ
gitGraph
    commit
    branch develop
    checkout develop
    commit
    branch feature
    checkout feature
    commit
    commit
    checkout develop
    merge feature
    checkout main
    merge develop

実習課題

  • フィーチャーブランチの作成とマージ
  • コンフリクト解決の実践

Day 3: Gitブランチ戦略とチーム開発

1. Git-flowモデル

  • masterブランチの役割
  • developブランチの運用
  • featureブランチの管理
  • releaseブランチの使用方法
  • hotfixブランチの運用

2. プルリクエストの活用

  • プルリクエストの作成
  • コードレビューの実施
  • マージの承認プロセス

実習課題

  • チームでのGit-flow実践
  • プルリクエストの作成とレビュー

Day 4: CI/CDの基本

1. CI/CDの概念

  • 継続的インテグレーション
  • 継続的デリバリー
  • 継続的デプロイメント

2. GitLabを使用したCI/CD環境構築

  • GitLab CI/CDの基本設定
  • .gitlab-ci.ymlの作成
  • パイプラインの設定
flowchart LR
    A[コード変更] --> B[ビルド]
    B --> C[テスト]
    C --> D[静的解析]
    D --> E[デプロイ]

実習課題

  • 基本的なCI/CDパイプラインの構築
  • 自動ビルドとテストの設定

Day 5: CI/CDパイプラインの応用

1. 高度なパイプライン設定

  • マルチステージパイプライン
  • 条件付きパイプライン
  • 環境変数の活用
  • アーティファクトの管理

2. 自動化テストの統合

  • ユニットテストの自動実行
  • コードカバレッジの計測
  • 静的解析ツールの統合

実習課題

  • 本格的なCI/CDパイプラインの構築
  • テスト自動化の実装

Week 2: デバッグ技術とツール

Day 6: GDBの基本

1. GDBの概要

  • デバッガの役割
  • GDBの基本機能
  • コマンドラインインターフェース

2. 基本的なデバッグ操作

  • ブレークポイントの設定
  • ステップ実行
  • 変数の監視
  • バックトレースの表示

実習課題

  • GDBを使用した基本的なデバッグ
  • プログラムの動作解析

Day 7: GDBの高度な使用法

1. 条件付きブレークポイント

  • ブレークポイントの種類
  • 条件式の設定
  • カウンタの使用

2. データ構造の解析

  • メモリの内容表示
  • 構造体の解析
  • ポインタの追跡

実習課題

  • 複雑なデータ構造のデバッグ
  • メモリ関連バグの特定

Day 8: リモートデバッグ

1. リモートデバッグの設定

  • GDBサーバーの設定
  • ターゲットへの接続
  • JTAGデバッガの使用

2. 組み込みシステムのデバッグ

  • クロス開発環境でのデバッグ
  • ハードウェア依存の問題解析
  • リアルタイムデバッグ
sequenceDiagram
    participant Dev as 開発PC
    participant JTAG as JTAGデバッガ
    participant Target as ターゲットボード
    Dev->>JTAG: デバッグ接続要求
    JTAG->>Target: JTAG接続確立
    Dev->>Target: プログラム転送
    Dev->>Target: ブレークポイント設定
    Target->>Dev: 実行状態通知

実習課題

  • STM32ボードのリモートデバッグ
  • 実機でのデバッグ実践

Day 9: メモリ解析とトレース

1. メモリダンプの解析

  • メモリダンプの取得方法
  • ダンプファイルの解析
  • メモリリークの検出

2. トレース技術

  • トレースポイントの設定
  • ログの収集と解析
  • パフォーマンス測定

実習課題

  • メモリリークの特定と修正
  • トレースログの解析

Day 10: 総合演習

1. 実践的なデバッグ演習

  • 複合的なバグの解析
  • システム全体のデバッグ
  • パフォーマンス最適化

2. チームでのトラブルシューティング

  • 問題の切り分け
  • デバッグ情報の共有
  • 修正計画の立案

最終課題

  • 総合的なデバッグプロジェクト
  • チームでのバグ解析と修正

評価基準

  • 日々の演習課題の完了状況(40%)
  • チーム活動への貢献(30%)
  • 最終課題の完成度(30%)

参考資料

オンラインリソース

推奨図書

  • 「実践 Git」
  • 「Jenkins実践入門」
  • 「デバッガによるトラブルシューティング技法」