Mais conteúdo relacionado
Semelhante a 【学習メモ#1st】12ステップで作る組込みOS自作入門 (20)
【学習メモ#1st】12ステップで作る組込みOS自作入門
- 6. 用意するもの
● MacBook air : OSX Lion10.7.4
● H8/3069Fマイコン・ボード
● 電源アダプタ
● シリアル・ケーブル
● USBシリアル・アダプタ
– シリアル・コネクタが無いPCには必要
– 次ページで紹介しているアダプタ以外で動作確認は
していない
- 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. ソフト編
● 大まかに必要なのは以下の4つ
– セフル・コンパイラ
– クロス・コンパイラ
– h8write
– 端末エミュレータ
● Macであればターミナルが使える
- 9. セルフ・コンパイラ
● プログラムの開発環境と実行環境が同一になる
開発がセルフ開発
● セルフ開発に用いるコンパイラをセルフ・コン
パイラと言う
- 10. セルフ・コンパイラの構築
● Mac OSX Lionはセルフ・コンパイラは特に必要
な作業はなかった
● とりあえず以下が必要。バージョンは書籍の通
り
– binutils-2.19
– gcc-4.4.1
– make-1:3.81
- 11. クロス・コンパイラ
● プログラムの開発環境と実行環境が異なる(組
込み機器で動作)開発がクロス開発
● クロス開発に用いるコンパイラをクロス・コン
パイラと言う
- 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. h8write
● フラッシュROM書き込みツール
– http://mes.sourceforge.jp/h8/writer-j.html
● gccでコンパイルするだけ
– gcc -Wall -o h8write h8write.c
- 14. クロス・コンパイラの構造
● 最終的に以下のようなディレクトリ構造となっ
た
– $HOME/12step/tools/
● bin
● h8300-elf
● h8write
● lib
● …
● …
● toolsのbinにはパスを通しておく
– PATH=${HOME}/12step/tools/bin:$PATH
- 15. 端末エミュレータ
● もともと入っているターミナルを使えば良い
– アプリケーション>ユーティリティ>ターミナルに
ある
- 17. ソースコード作成
● 以下のディレクトリ構造で作成
– ~/12step/
● tools(クロス・コンパイラ)
● src(ソースコード)
– 01
● bootload
● main.c
● startup.s
● vector.c
●
…
●
…
● Makefile
- 18. ファイルの説明
● main.c main関数と「Hello World!」の出力
● startup.s スタートアップ(アセンブラ)
● vector.c 割り込みベクタ定義
● lib.h lib.c 各種ライブラリ関数
● serial.h serial.c シリアル・デバイス・ドライバ
● defines.h 様々な型の定義など
● ld.scr リンカ・スクリプト
● Makefile
- 19. ソースコード修正点
● Makefile周りは自分の環境に合わせて修正
– binのパス
– シリアル接続先のパス
● ここで紹介しているものであれば、接続された状態で
ls /dev/tty.*をたたいて表示され
た/dev/tty.usbserial〜がシリアルポートにあたる
- 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 -o
kzload -Wall -mh -nostdinc -nostdlib -fno-builtin -I. -Os -DKZLOAD -static -T
ld.scr -L.
cp kzload kzload.elf
~/12step/tools/bin/h8300-elf-strip kzload
- 21. フラッシュROMに書き込み
● make imageで実行ファイルをフラッシュROMに
書き込める「モトローラSレコード・フォー
マット」に変換
● ディップ・スイッチをフラッシュROM書き込み
モードにする(on on off on)
● あとはmake writeで書き込み
- 22. 書き込みがうまくいかない
● make writeがうまくいかない
– 対処
● シリアルケーブルを接続し直す
● PCを再起動
● それでもうまくいかない場合はkz_h8writeを使
う
● kz_h8write
● kz_h8write-v0.1.0/src% makeで実行ファイルが得られるので、指定
の位置に置いてmake write
- 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. マイコン起動
● フラッシュROMに書き込んだらディップ・ス
イッチを起動モードにする(on off on off)
● この状態で電源を入れるかリセットスイッチを
押す
● シリアル接続
– sudo cu -l /dev/tty.usbserial-FTG6PQ4H
- 27. まとめ
● 開発環境の作成
● ソースコードの作成
● Hello Worldのサンプルを動作させる
● といったことをやった
● 2rd以降で詳しい説明が入ると思うから、この
まま進めやっていく
- 28. メモ
● 組込み機器で動作する実行ファイルを「ファー
ムウェア」と呼ぶ
● マイコンのフラッシュROMに書き込むにはELF形
式(デフォルトの実行ファイル形式かな)ではな
く、「モトローラSレコード・フォーマット」
でなければならない
– objcopyでできた