Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

【学習メモ#1st】12ステップで作る組込みOS自作入門

9,443 views

Published on

12ステップで作る組込みOS自作入門
http://www.amazon.co.jp/dp/4877832394/
坂井 弘亮(著)
カットシステム

Published in: Technology
  • Be the first to comment

【学習メモ#1st】12ステップで作る組込みOS自作入門

  1. 1. 12ステップで作る組込みOS自作入門 1stステップ @sandai
  2. 2. 【参考書籍】12ステップで作る組込みOS自作入門【内容】1ステップずつ、実際に動かしながらプログラムを発展させていく方式で無理なく学べる。OSやハードウェアに詳しくない方にも理解できるように十分な説明を提供坂井 弘亮(著)カットシステム(2010/5)【税込価格】4,410円【サポートページ】http://kozos.jp/books/makeos/
  3. 3. もくじ1.開発環境の構築 for MacOSX – ハード編 – ソフト編2.Hello Worldの表示3.まとめ
  4. 4. 1. 開発環境の構築 for Mac OSX
  5. 5. ハード編● MacBook airならこれだけ必要
  6. 6. 用意するもの● MacBook air : OSX Lion10.7.4● H8/3069Fマイコン・ボード● 電源アダプタ● シリアル・ケーブル● USBシリアル・アダプタ – シリアル・コネクタが無いPCには必要 – 次ページで紹介しているアダプタ以外で動作確認は していない
  7. 7. 用意する手段● 書籍も含めて一括で購入 – http://www.cutt.co.jp/toppage/sub_kumikomiset.html● USBシリアル・アダプタは別売り – http://www.amazon.co.jp/dp/B007SI18YO/ – Mac用のドライバも必要 ● http://www.ftdichip.com/Drivers/VCP.htm全部でだいたい11000円強。USBシリアル・アダプタはコネクタがあれば必要ない。(MacBook airには無いので必要)
  8. 8. ソフト編● 大まかに必要なのは以下の4つ – セフル・コンパイラ – クロス・コンパイラ – h8write – 端末エミュレータ ● Macであればターミナルが使える
  9. 9. セルフ・コンパイラ● プログラムの開発環境と実行環境が同一になる 開発がセルフ開発● セルフ開発に用いるコンパイラをセルフ・コン パイラと言う
  10. 10. セルフ・コンパイラの構築● Mac OSX Lionはセルフ・コンパイラは特に必要 な作業はなかった● とりあえず以下が必要。バージョンは書籍の通 り – binutils-2.19 – gcc-4.4.1 – make-1:3.81
  11. 11. クロス・コンパイラ● プログラムの開発環境と実行環境が異なる(組 込み機器で動作)開発がクロス開発● クロス開発に用いるコンパイラをクロス・コン パイラと言う
  12. 12. クロス・コンパイラの構築● 用意するもの – binutils-2.19.1.tar.gz ● binutils-2.21.1以降に問題があるので2.19.1を使っている – gmp-5.0.5.tar.bz2 – mpc-0.9.tar.gz – mpfr-3.1.1.tar.gz – gcc-4.7.1.tar.bz2● 参考URL – http://d.hatena.ne.jp/satfy/20101226 – http://d.hatena.ne.jp/cococh1/20120219/1329642986
  13. 13. h8write● フラッシュROM書き込みツール – http://mes.sourceforge.jp/h8/writer-j.html● gccでコンパイルするだけ – gcc -Wall -o h8write h8write.c
  14. 14. クロス・コンパイラの構造● 最終的に以下のようなディレクトリ構造となっ た – $HOME/12step/tools/ ● bin ● h8300-elf ● h8write ● lib ● … ● …● toolsのbinにはパスを通しておく – PATH=${HOME}/12step/tools/bin:$PATH
  15. 15. 端末エミュレータ● もともと入っているターミナルを使えば良い – アプリケーション>ユーティリティ>ターミナルに ある
  16. 16. 2. Hello Worldを表示
  17. 17. ソースコード作成● 以下のディレクトリ構造で作成 – ~/12step/ ● tools(クロス・コンパイラ) ● src(ソースコード) – 01 ● bootload ● main.c ● startup.s ● vector.c ● … ● … ● Makefile
  18. 18. ファイルの説明● main.c main関数と「Hello World!」の出力● startup.s スタートアップ(アセンブラ)● vector.c 割り込みベクタ定義● lib.h lib.c 各種ライブラリ関数● serial.h serial.c シリアル・デバイス・ドライバ● defines.h 様々な型の定義など● ld.scr リンカ・スクリプト● Makefile
  19. 19. ソースコード修正点● Makefile周りは自分の環境に合わせて修正 – binのパス – シリアル接続先のパス ● ここで紹介しているものであれば、接続された状態で ls /dev/tty.*をたたいて表示され た/dev/tty.usbserial〜がシリアルポートにあたる
  20. 20. make● 問題が無ければこうなる/Users/sandai/12step/src/01/bootload% make~/12step/tools/bin/h8300-elf-gcc -c -Wall -mh -nostdinc -nostdlib -fno-builtin-I. -Os -DKZLOAD vector.c~/12step/tools/bin/h8300-elf-gcc -c -Wall -mh -nostdinc -nostdlib -fno-builtin-I. -Os -DKZLOAD startup.s~/12step/tools/bin/h8300-elf-gcc -c -Wall -mh -nostdinc -nostdlib -fno-builtin-I. -Os -DKZLOAD main.c~/12step/tools/bin/h8300-elf-gcc -c -Wall -mh -nostdinc -nostdlib -fno-builtin-I. -Os -DKZLOAD lib.c~/12step/tools/bin/h8300-elf-gcc -c -Wall -mh -nostdinc -nostdlib -fno-builtin-I. -Os -DKZLOAD serial.c~/12step/tools/bin/h8300-elf-gcc vector.o startup.o main.o lib.o serial.o -okzload -Wall -mh -nostdinc -nostdlib -fno-builtin -I. -Os -DKZLOAD -static -Tld.scr -L.cp kzload kzload.elf~/12step/tools/bin/h8300-elf-strip kzload
  21. 21. フラッシュROMに書き込み● make imageで実行ファイルをフラッシュROMに 書き込める「モトローラSレコード・フォー マット」に変換● ディップ・スイッチをフラッシュROM書き込み モードにする(on on off on)● あとはmake writeで書き込み
  22. 22. 書き込みがうまくいかない● make writeがうまくいかない – 対処 ● シリアルケーブルを接続し直す ● PCを再起動● それでもうまくいかない場合はkz_h8writeを使 う ● kz_h8write ● kz_h8write-v0.1.0/src% makeで実行ファイルが得られるので、指定 の位置に置いてmake write
  23. 23. kz_h8writeがうまくいった例/Users/sandai/12step/src/01/bootload% make write../../../tools/kz_h8write -3069 -f20 kzload.mot /dev/tty.usbserial-FTG6PQ4H================================================= H8/3069F Flash Writer for KOZOS (Version 0.1.0) Copyright(C) 2011-2012 Shinichiro Nakamura=================================================Bitrate sequence: Done.Inquiry device: Done.Select device: Done.Inquiry clock mode: Done.Select clock mode: Done.Select bitrate: Done.Waiting for erase done:............Programming:.....Program: Done.Complete.
  24. 24. マイコン起動● フラッシュROMに書き込んだらディップ・ス イッチを起動モードにする(on off on off)● この状態で電源を入れるかリセットスイッチを 押す● シリアル接続 – sudo cu -l /dev/tty.usbserial-FTG6PQ4H
  25. 25. シリアル接続でHello World/Users/sandai/12step/src/01/bootload% sudo cu -l /dev/tty.usbserial-FTG6PQ4HConnected.Hello World!Hello World! ← リセット・ボタンを押す度にこれが表示される~.Disconnected.
  26. 26. 3. まとめ
  27. 27. まとめ● 開発環境の作成● ソースコードの作成● Hello Worldのサンプルを動作させる● といったことをやった● 2rd以降で詳しい説明が入ると思うから、この まま進めやっていく
  28. 28. メモ● 組込み機器で動作する実行ファイルを「ファー ムウェア」と呼ぶ● マイコンのフラッシュROMに書き込むにはELF形 式(デフォルトの実行ファイル形式かな)ではな く、「モトローラSレコード・フォーマット」 でなければならない – objcopyでできた

×