SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
12ステップで作る組込みOS自作入門
      1stステップ




               @sandai
【参考書籍】
12ステップで作る組込みOS自作入門
【内容】
1ステップずつ、実際に動かしながらプログラムを発展さ
せていく方式で無理なく学べる。OSやハードウェアに詳
しくない方にも理解できるよう
に十分な説明を提供

坂井 弘亮(著)
カットシステム(2010/5)

【税込価格】
4,410円

【サポートページ】
http://kozos.jp/books/makeos/
もくじ
1.開発環境の構築 for MacOSX
 –   ハード編
 –   ソフト編
2.Hello Worldの表示
3.まとめ
1. 開発環境の構築 for Mac OSX
ハード編
●   MacBook airならこれだけ必要
用意するもの
●   MacBook air : OSX Lion10.7.4
●   H8/3069Fマイコン・ボード
●   電源アダプタ
●   シリアル・ケーブル
●   USBシリアル・アダプタ
    –   シリアル・コネクタが無いPCには必要
    –   次ページで紹介しているアダプタ以外で動作確認は
        していない
用意する手段
●   書籍も含めて一括で購入
    –   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に
は無いので必要)
ソフト編
●   大まかに必要なのは以下の4つ
    –   セフル・コンパイラ
    –   クロス・コンパイラ
    –   h8write
    –   端末エミュレータ
        ●   Macであればターミナルが使える
セルフ・コンパイラ
●   プログラムの開発環境と実行環境が同一になる
    開発がセルフ開発
●   セルフ開発に用いるコンパイラをセルフ・コン
    パイラと言う
セルフ・コンパイラの構築
●   Mac OSX Lionはセルフ・コンパイラは特に必要
    な作業はなかった
●   とりあえず以下が必要。バージョンは書籍の通
    り
    –   binutils-2.19
    –   gcc-4.4.1
    –   make-1:3.81
クロス・コンパイラ
●   プログラムの開発環境と実行環境が異なる(組
    込み機器で動作)開発がクロス開発
●   クロス開発に用いるコンパイラをクロス・コン
    パイラと言う
クロス・コンパイラの構築
●   用意するもの
    –   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
h8write
●   フラッシュROM書き込みツール
    –   http://mes.sourceforge.jp/h8/writer-j.html
●   gccでコンパイルするだけ
    –   gcc -Wall -o h8write h8write.c
クロス・コンパイラの構造
●   最終的に以下のようなディレクトリ構造となっ
    た
    –   $HOME/12step/tools/
        ●   bin
        ●   h8300-elf
        ●   h8write
        ●   lib
        ●   …
        ●   …
●   toolsのbinにはパスを通しておく
    –   PATH=${HOME}/12step/tools/bin:$PATH
端末エミュレータ
●   もともと入っているターミナルを使えば良い
    –   アプリケーション>ユーティリティ>ターミナルに
        ある
2. Hello Worldを表示
ソースコード作成
●   以下のディレクトリ構造で作成
    –   ~/12step/
        ●   tools(クロス・コンパイラ)
        ●   src(ソースコード)
             –   01
                  ●   bootload
                        ● main.c

                        ● startup.s

                        ● vector.c

                        ●
                          …
                        ●
                          …
                        ● Makefile
ファイルの説明
●   main.c              main関数と「Hello World!」の出力
●   startup.s           スタートアップ(アセンブラ)
●   vector.c            割り込みベクタ定義
●   lib.h lib.c         各種ライブラリ関数
●   serial.h serial.c   シリアル・デバイス・ドライバ
●   defines.h           様々な型の定義など
●   ld.scr              リンカ・スクリプト
●   Makefile
ソースコード修正点
●   Makefile周りは自分の環境に合わせて修正
    –   binのパス
    –   シリアル接続先のパス
        ●   ここで紹介しているものであれば、接続された状態で
            ls /dev/tty.*をたたいて表示され
            た/dev/tty.usbserial〜がシリアルポートにあたる
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
フラッシュROMに書き込み
●   make imageで実行ファイルをフラッシュROMに
    書き込める「モトローラSレコード・フォー
    マット」に変換
●   ディップ・スイッチをフラッシュROM書き込み
    モードにする(on on off on)
●   あとはmake writeで書き込み
書き込みがうまくいかない
●   make writeがうまくいかない
    –   対処
        ●   シリアルケーブルを接続し直す
        ●   PCを再起動
●   それでもうまくいかない場合はkz_h8writeを使
    う
        ●   kz_h8write
        ●   kz_h8write-v0.1.0/src% makeで実行ファイルが得られるので、指定
            の位置に置いてmake write
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.
マイコン起動
●   フラッシュROMに書き込んだらディップ・ス
    イッチを起動モードにする(on off on off)
●   この状態で電源を入れるかリセットスイッチを
    押す
●   シリアル接続
    –   sudo cu -l /dev/tty.usbserial-FTG6PQ4H
シリアル接続でHello World
/Users/sandai/12step/src/01/bootload% sudo cu -l /dev/tty.usbserial-FTG6PQ4H
Connected.
Hello World!
Hello World! ← リセット・ボタンを押す度にこれが表示される
~.
Disconnected.
3. まとめ
まとめ
●   開発環境の作成
●   ソースコードの作成
●   Hello Worldのサンプルを動作させる
●   といったことをやった
●   2rd以降で詳しい説明が入ると思うから、この
    まま進めやっていく
メモ
●   組込み機器で動作する実行ファイルを「ファー
    ムウェア」と呼ぶ
●   マイコンのフラッシュROMに書き込むにはELF形
    式(デフォルトの実行ファイル形式かな)ではな
    く、「モトローラSレコード・フォーマット」
    でなければならない
    – objcopyでできた

Mais conteúdo relacionado

Mais procurados

組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
Kouhei Sutou
 
OSC2011 Tokyo/Fall 濃いバナ(virtio)
OSC2011 Tokyo/Fall 濃いバナ(virtio)OSC2011 Tokyo/Fall 濃いバナ(virtio)
OSC2011 Tokyo/Fall 濃いバナ(virtio)
Takeshi HASEGAWA
 

Mais procurados (20)

BGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみたBGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみた
 
自宅サーバ仮想化
自宅サーバ仮想化自宅サーバ仮想化
自宅サーバ仮想化
 
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりましたジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
ワタシはSingletonがキライだ
ワタシはSingletonがキライだワタシはSingletonがキライだ
ワタシはSingletonがキライだ
 
20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術
 
0円でできる自宅InfiniBandプログラム
0円でできる自宅InfiniBandプログラム0円でできる自宅InfiniBandプログラム
0円でできる自宅InfiniBandプログラム
 
レガシーフリーOSに必要な要素技術 legacy free os
レガシーフリーOSに必要な要素技術 legacy free osレガシーフリーOSに必要な要素技術 legacy free os
レガシーフリーOSに必要な要素技術 legacy free os
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
リアルタイムOSの必要性とTOPPERS/SSPの紹介
リアルタイムOSの必要性とTOPPERS/SSPの紹介リアルタイムOSの必要性とTOPPERS/SSPの紹介
リアルタイムOSの必要性とTOPPERS/SSPの紹介
 
プログラマ目線から見たRDMAのメリットと その応用例について
プログラマ目線から見たRDMAのメリットとその応用例についてプログラマ目線から見たRDMAのメリットとその応用例について
プログラマ目線から見たRDMAのメリットと その応用例について
 
OSC2011 Tokyo/Fall 濃いバナ(virtio)
OSC2011 Tokyo/Fall 濃いバナ(virtio)OSC2011 Tokyo/Fall 濃いバナ(virtio)
OSC2011 Tokyo/Fall 濃いバナ(virtio)
 
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくい
 
OS入門
OS入門OS入門
OS入門
 

Destaque

30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
Hirotaka Kawata
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門
demuyan
 
数理的に組み込みソフトを開発する方法入門
数理的に組み込みソフトを開発する方法入門数理的に組み込みソフトを開発する方法入門
数理的に組み込みソフトを開発する方法入門
Toshiyuki Fujikura
 

Destaque (20)

【学習メモ#6th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門 【学習メモ#6th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門
 
C++でできる!OS自作入門
C++でできる!OS自作入門C++でできる!OS自作入門
C++でできる!OS自作入門
 
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門 【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門
 
【学習メモ#3rd】12ステップで作る組込みOS自作入門
【学習メモ#3rd】12ステップで作る組込みOS自作入門【学習メモ#3rd】12ステップで作る組込みOS自作入門
【学習メモ#3rd】12ステップで作る組込みOS自作入門
 
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)
 
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門 【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門
 
【学習メモ#5th】12ステップで作る組込みOS自作入門
【学習メモ#5th】12ステップで作る組込みOS自作入門【学習メモ#5th】12ステップで作る組込みOS自作入門
【学習メモ#5th】12ステップで作る組込みOS自作入門
 
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門
 
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門 【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
 
やってよかったOS作り
やってよかったOS作りやってよかったOS作り
やってよかったOS作り
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門
 
アセンブラ漢文
アセンブラ漢文アセンブラ漢文
アセンブラ漢文
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 
【2000行弱!】x86用自作カーネルの紹介
【2000行弱!】x86用自作カーネルの紹介【2000行弱!】x86用自作カーネルの紹介
【2000行弱!】x86用自作カーネルの紹介
 
ハッキング実演
ハッキング実演ハッキング実演
ハッキング実演
 
RoadAR v.2.3 english
RoadAR v.2.3 englishRoadAR v.2.3 english
RoadAR v.2.3 english
 
バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)
バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)
バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)
 
コンピュータビジョン 1章
コンピュータビジョン 1章コンピュータビジョン 1章
コンピュータビジョン 1章
 
数理的に組み込みソフトを開発する方法入門
数理的に組み込みソフトを開発する方法入門数理的に組み込みソフトを開発する方法入門
数理的に組み込みソフトを開発する方法入門
 

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

Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
hiro345
 

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

NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
ASP.NET vNextの全貌
ASP.NET vNextの全貌ASP.NET vNextの全貌
ASP.NET vNextの全貌
 
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
 
20230128.pptx
20230128.pptx20230128.pptx
20230128.pptx
 
OpenCV2.2 Install Guide ver.0.5
OpenCV2.2 Install Guide ver.0.5OpenCV2.2 Install Guide ver.0.5
OpenCV2.2 Install Guide ver.0.5
 
サーバー設定自動化は経営課題
サーバー設定自動化は経営課題 サーバー設定自動化は経営課題
サーバー設定自動化は経営課題
 
Newcomer2020 Docker研修
Newcomer2020 Docker研修Newcomer2020 Docker研修
Newcomer2020 Docker研修
 
もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
CMake multiplatform build-tool
CMake multiplatform build-toolCMake multiplatform build-tool
CMake multiplatform build-tool
 
ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルド
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
 
Yocto Project ハンズオン / 参加者用資料
Yocto Project ハンズオン / 参加者用資料Yocto Project ハンズオン / 参加者用資料
Yocto Project ハンズオン / 参加者用資料
 
181106 02
181106 02181106 02
181106 02
 
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めCell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始め
 

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

  • 3. もくじ 1.開発環境の構築 for MacOSX – ハード編 – ソフト編 2.Hello Worldの表示 3.まとめ
  • 5. ハード編 ● MacBook airならこれだけ必要
  • 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
  • 25. シリアル接続でHello World /Users/sandai/12step/src/01/bootload% sudo cu -l /dev/tty.usbserial-FTG6PQ4H Connected. Hello World! Hello World! ← リセット・ボタンを押す度にこれが表示される ~. Disconnected.
  • 27. まとめ ● 開発環境の作成 ● ソースコードの作成 ● Hello Worldのサンプルを動作させる ● といったことをやった ● 2rd以降で詳しい説明が入ると思うから、この まま進めやっていく
  • 28. メモ ● 組込み機器で動作する実行ファイルを「ファー ムウェア」と呼ぶ ● マイコンのフラッシュROMに書き込むにはELF形 式(デフォルトの実行ファイル形式かな)ではな く、「モトローラSレコード・フォーマット」 でなければならない – objcopyでできた