部内向けスキルアップ研修 「組込みOS自作入門」 2013年5月 1stステップ担当:池田 目次 • はじめに • 開発環境の構築 • Hello World! • まとめ はじめに 本研修のねらい • OSの自作を通してスキルアップ – ハードウェアとソフトウェアにまたがる広範 な基本技術を獲得 • 全員講師型スタイルが機能するか実験 – 講師をやるためには主体的な学習が必要 – 発表機会が増えることにより発表技術も向上 総括から • 心構え – 研修を「やっただけ」で終わらないように • 理想 – 研修で得たものを業務上の何かに役立てる 教科書 • 12ステップで作る組込みOS自作入門 サポートページ • http://kozos.jp/books/makeos/ 配布物の確認 • マイコンボード • シリアルケーブル • ACアダプタ • 教科書 OSについて一言 • オペレーティングシステム – 汎用OS • Windows, Linux, Macintosh • 日常でよく目にする – 組込みOS • ITRON, VxWorks, QNX • 日常で意識することは少ない OSあると何が嬉しいのか • アプリケーションが楽できる – 低層の細かいことを気にしなくて済む • CPU • Memory • Devices – 炊飯器アプリ • 温度管理 • 時刻表示 開発環境の構築 ベースになる環境 • 作業用ノートPC – Windows 7 Professional 32bitを推奨 – USB2.0ポートまたはシリアルポートが必要 • インストールしておくアプリケーション – Cygwin – Tera Term Cygwinインストール勘所 • インストールはおおむねデフォルト – と言いつつ、追加パッケージが必要 • 必須の追加パッケージ – binutils, gcc, make, bzip2, unzip • お好みに応じて – openssh, wget, vim, etc Tera Termインストール勘所 • 特になし – コンパクトインストールがおすすめ クロスコンパイラの作成 • 用語の確認 • 実際の作業 用語その一 • セルフ開発 – プログラムの開発環境と実行環境が同一にな る開発 – 例)Windows上で開発、Windows上で実行 – セルフ開発に用いるコンパイラをセルフコン パイラと呼ぶ 用語その二 • クロス開発 – プログラムの開発環境と実行環境が異なる開 発 – 例)Windows上で開発、H8上で実行 – クロス開発に用いるコンパイラをクロスコン パイラと呼ぶ 現状 • セルフコンパイラはインストール済み – Cygwinインストール時に入れたgccがそれ – Windows上で開発、Windows上で実行可 – しかし、クロスコンパイラがないため、 Windows上で開発、H8上で実行不可 セルフコンパイラの動作確認 • よくあるHello World!のコードを作成 – 教科書p.xIのリスト1を参照 $ gcc hello.c -o hello -Wall $ ./hello.exe Hello World! $ クロスコンパイラ作成の準備 • 必要なファイルをUSBメモリで配布 – binutils-2.19.1.tar.bz2 – gcc-3.4.6.tar.bz2 • 適当な場所へコピー – 例)C:¥cygwin¥home¥ikeda¥build • Cygwin Terminalを起動 クロスコンパイラ作成その一 • binutilsのインストール $ tar xjvf binutils-2.19.1.tar.bz2 $ cd binutils-2.19.1/ $ ./configure --target=h8300-elf -disable-nls --disable-werror $ make $ make install クロスコンパイラ作成その二 • gccのインストール $ tar xjvf gcc-3.4.6.tar.bz2 $ cd gcc-3.4.6/ $ ./configure --target=h8300-elf -disable-nls --disable-werror --disablethreads --disable-shared --enablelanguages=c $ make $ make install 作業内容の解説 • binutilsのインストール – H8用のアセンブラやリンカの作成 – as, ld, objcopy, objdump, etc • gccのインストール – H8用のCコンパイラの作成 – gcc, etc Hello World! Hello World!に必要なファイル main.c main()関数とHello World!の出力 startup.s スタートアップ(アセンブラ) vector.c 割込みベクタの定義 lib.h, lib.c 各種ライブラリ関数 serial.h, serial.c シリアルデバイスドライバ defines.h 様々な型の定義など ld.scr リンカスクリプト Makefile ファイル作成 • クロスコンパイラ作成の様子を見つつ、 必要なファイルを作成します • ファイルの作成場所 – 例) C:¥cygwin¥home¥ikeda¥src¥01¥bootload • 資料を見つつ、テキストエディタで入力 もくもく会 • ここで、しばらく黙々と作業します – 教科書p.23以降のソースコードリストを参照 ビルド • makeの実行 $ cd src/01/bootload $ ls $ make おそらくエラーが沢山出るので、適宜修正 ファイルフォーマット変換 • マイコンボードのフラッシュROM – モトローラSレコードフォーマットでないと 書き込めない仕様 – ビルドで作成したkzloadはELFフォーマット なので、ファイルフォーマットを変換 $ make image 書き込みソフトの準備 • 教科書で紹介されているh8writeではなく 改良版kz_h8writeを使用 $ cd build/ $ unzip kz_h8write-v0.2.1.zip $ cp PackageFiles/bin/kz_h8write.exe ../src/tools/kz_h8write/ USBシリアルアダプタ • シリアルポートのないPCは、以下を実施 – ドライバファイルを解凍 – ドライバをインストール – USBポートにUSBシリアルアダプタを挿入 – Winows 7の場合、インターネットにつな がっていれば自動でインストールされる? マイコンボードと接続 • PCとマイコンボードをシリアルケーブル で接続 • マイコンボードのディップスイッチをフ ラッシュROM書き込みモードに設定 – 左からON, ON, OFF, ON フラッシュROMに書き込み • マイコンボードにACアダプタを接続 – 電源スイッチはないので、即電源ONします • 以下の書き込みコマンドを実行 $ make write 端末エミュレータ起動 • Tera Termを起動 • デフォルト設定でシリアルポート接続 – ボーレート 9600 bps – パリティなし – ストップビット 1 bit マイコンボード再起動 • ACアダプタを抜いて電源OFF • マイコンボードのディップスイッチをプ ログラム実行モードに設定 – 左からON, OFF, ON, OFF • マイコンボードにACアダプタ接続 動作確認 • 端末エミュレータの画面にHello World! が表示されます • リセットボタンを押すたびHello World! が表示されることを確認 まとめ 今日やったこと • 研修用の機材を入手 • 開発環境を構築 • Hello World!を実行 – 実行できなかった人は、課外活動で実行 今日やってほしいこと • 家に帰ったら、教科書を読んで復習 – 説明しきれなかった良いことが、沢山書いて あります 最後に 来月以降のことを相談 ステップ 担当 ステップ 担当 1 池田 7 池田 2 松元 8 松元 3 谷口 9 谷口 4 中村 10 中村 5 山田 11 山田 6 井崎 12 井崎 次回の開催予定 • 日時 – 6月19日(水) 13:00~ • 場所 – 技術支援室 • 担当 – 松元さん
© Copyright 2024 Paperzz