●対象聴講者
・Linux(もしくは*BSD、UNIX系OS)のls, cp, vi, mountといった一般的な基本コマンドを知っている方
・C言語で「構造体のポインタ」程度まで理解している方
●講演の目標
・組み込みLinuxの入手ルート,ビルド手順を理解できる
・カーネルをビルドし,インストールする手順を理解できる
・I/O操作に必要なLinuxのドライバやカーネル空間コードを理解できる
●内容
〔1日目〕
1. VirtualBoxを用いた開発環境の構築
2. ターゲットボードの立ち上げ
2.1. ボード仕様
2.2. rommode
2.3. IPアドレス設定
2.4. 日付の設定
2.5. sshでのログイン方法
2.6. NFSクライアント側の操作方法
3. メモリマップ
4. GPIO入出力(LED,スイッチ)
5. カーネル
5.1. カーネルの入手と展開
5.2. コンフィグレーション
5.3. config変更の例
5.4. ビルド
5.5. 内蔵ROM (QSPI)にカーネルを保存,起動する場合
5.7. カーネル起動パラメータ
6. デバイスドライバ基礎
6.1. デバイスドライバ入門
6.4. 簡単なデバイスドライバ
6.5. ドライバのコンパイル方法
6.6. ドライバモジュールのロードとアンロード
7. yocto
7.1. 入手ルート
7.2. 環境準備
7.3. bitbake
〔2日目〕
8. キャラクタ型デバイスドライバ
8.1. デバイスの open/read/write/close
8.2. 完成したドライバの組み込み
8.3. モジュールの自動ロード
9. デバイスドライバの高度なプログラミング
9.1. メモリの確保解放
9.2. 排他制御
9.3. カーネルスレッド
9.4. 割り込み
9.5. スレッド型割り込みを使ったボトムハーフ
9.6. 物理メモリの確保とmmap()
10. デバッグ技法
10.1. strace
10.2. リモートgdb
10.3. リモートsyslog
11. 出荷前にするべきこと
11.1. ユーザー,パスワードの変更
11.2. sshの制限
11.3. ポートの制限
11.4. logファイルの溢れを確認する
組み込みLinux基板CAT845(シリコンリナックス製,仕様:RZ/G1E-PF(CortexA7-Dual),RAM1G,ROM64M,LAN,シリアル,時計IC搭載)