SlideShare a Scribd company logo
1 of 28
Download to read 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でできた

More Related Content

What's hot

プロセスとコンテキストスイッチ
プロセスとコンテキストスイッチプロセスとコンテキストスイッチ
プロセスとコンテキストスイッチKazuki Onishi
 
【学習メモ#3rd】12ステップで作る組込みOS自作入門
【学習メモ#3rd】12ステップで作る組込みOS自作入門【学習メモ#3rd】12ステップで作る組込みOS自作入門
【学習メモ#3rd】12ステップで作る組込みOS自作入門sandai
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例kazuhcurry
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門Hirotaka Kawata
 
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークSeastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークTakuya ASADA
 
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤTakashi Hoshino
 
リアルタイムOSの必要性とTOPPERS/SSPの紹介
リアルタイムOSの必要性とTOPPERS/SSPの紹介リアルタイムOSの必要性とTOPPERS/SSPの紹介
リアルタイムOSの必要性とTOPPERS/SSPの紹介NSaitoNmiri
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -zgock
 
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門 【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門 sandai
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化Takuya ASADA
 
CRDT in 15 minutes
CRDT in 15 minutesCRDT in 15 minutes
CRDT in 15 minutesShingo Omura
 
2011年度 新3年生向け
2011年度 新3年生向け2011年度 新3年生向け
2011年度 新3年生向けYuki Takahashi
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門Fixstars Corporation
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介AdvancedTechNight
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングTomoya Hibi
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
DockerクイックツアーEtsuji Nakai
 
プログラマ目線から見たRDMAのメリットと その応用例について
プログラマ目線から見たRDMAのメリットとその応用例についてプログラマ目線から見たRDMAのメリットとその応用例について
プログラマ目線から見たRDMAのメリットと その応用例についてMasanori Itoh
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたMITSUNARI Shigeo
 
Onieで遊んでみようとした話
Onieで遊んでみようとした話Onieで遊んでみようとした話
Onieで遊んでみようとした話Masaru Oki
 

What's hot (20)

プロセスとコンテキストスイッチ
プロセスとコンテキストスイッチプロセスとコンテキストスイッチ
プロセスとコンテキストスイッチ
 
【学習メモ#3rd】12ステップで作る組込みOS自作入門
【学習メモ#3rd】12ステップで作る組込みOS自作入門【学習メモ#3rd】12ステップで作る組込みOS自作入門
【学習メモ#3rd】12ステップで作る組込みOS自作入門
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークSeastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
 
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
 
リアルタイムOSの必要性とTOPPERS/SSPの紹介
リアルタイムOSの必要性とTOPPERS/SSPの紹介リアルタイムOSの必要性とTOPPERS/SSPの紹介
リアルタイムOSの必要性とTOPPERS/SSPの紹介
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -
 
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門 【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
 
CRDT in 15 minutes
CRDT in 15 minutesCRDT in 15 minutes
CRDT in 15 minutes
 
2011年度 新3年生向け
2011年度 新3年生向け2011年度 新3年生向け
2011年度 新3年生向け
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
Dockerクイックツアー
 
プログラマ目線から見たRDMAのメリットと その応用例について
プログラマ目線から見たRDMAのメリットとその応用例についてプログラマ目線から見たRDMAのメリットとその応用例について
プログラマ目線から見たRDMAのメリットと その応用例について
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
Onieで遊んでみようとした話
Onieで遊んでみようとした話Onieで遊んでみようとした話
Onieで遊んでみようとした話
 

Viewers also liked

【学習メモ#6th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門 【学習メモ#6th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門 sandai
 
C++でできる!OS自作入門
C++でできる!OS自作入門C++でできる!OS自作入門
C++でできる!OS自作入門uchan_nos
 
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)kozossakai
 
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門 【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門 sandai
 
【学習メモ#5th】12ステップで作る組込みOS自作入門
【学習メモ#5th】12ステップで作る組込みOS自作入門【学習メモ#5th】12ステップで作る組込みOS自作入門
【学習メモ#5th】12ステップで作る組込みOS自作入門sandai
 
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門sandai
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくばHirotaka Kawata
 
やってよかったOS作り
やってよかったOS作りやってよかったOS作り
やってよかったOS作りHidemi Kawai
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門demuyan
 
アセンブラ漢文
アセンブラ漢文アセンブラ漢文
アセンブラ漢文kozossakai
 
【2000行弱!】x86用自作カーネルの紹介
【2000行弱!】x86用自作カーネルの紹介【2000行弱!】x86用自作カーネルの紹介
【2000行弱!】x86用自作カーネルの紹介Yuma Ohgami
 
ハッキング実演
ハッキング実演ハッキング実演
ハッキング実演Ken Ogura
 
バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)
バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)
バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)kozossakai
 
コンピュータビジョン 1章
コンピュータビジョン 1章コンピュータビジョン 1章
コンピュータビジョン 1章motimune
 
数理的に組み込みソフトを開発する方法入門
数理的に組み込みソフトを開発する方法入門数理的に組み込みソフトを開発する方法入門
数理的に組み込みソフトを開発する方法入門Toshiyuki Fujikura
 
【学習メモ#11th】12ステップで作る組込みOS自作入門
【学習メモ#11th】12ステップで作る組込みOS自作入門 【学習メモ#11th】12ステップで作る組込みOS自作入門
【学習メモ#11th】12ステップで作る組込みOS自作入門 sandai
 
組込みにおけるHTML5
組込みにおけるHTML5組込みにおけるHTML5
組込みにおけるHTML5Tomo Watanabe
 
オープンアーキテクチャ,オープンソースソフトウェア時代の標準化フレームワークを使用したプロジェクトマネジメント
オープンアーキテクチャ,オープンソースソフトウェア時代の標準化フレームワークを使用したプロジェクトマネジメントオープンアーキテクチャ,オープンソースソフトウェア時代の標準化フレームワークを使用したプロジェクトマネジメント
オープンアーキテクチャ,オープンソースソフトウェア時代の標準化フレームワークを使用したプロジェクトマネジメントDaisuke Nishino
 
OSC東京(2014年10月)
OSC東京(2014年10月)OSC東京(2014年10月)
OSC東京(2014年10月)joeswebhosting
 

Viewers also liked (20)

【学習メモ#6th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門 【学習メモ#6th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門
 
C++でできる!OS自作入門
C++でできる!OS自作入門C++でできる!OS自作入門
C++でできる!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自作入門
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
 
やってよかったOS作り
やってよかったOS作りやってよかったOS作り
やってよかったOS作り
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門
 
アセンブラ漢文
アセンブラ漢文アセンブラ漢文
アセンブラ漢文
 
【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章
 
数理的に組み込みソフトを開発する方法入門
数理的に組み込みソフトを開発する方法入門数理的に組み込みソフトを開発する方法入門
数理的に組み込みソフトを開発する方法入門
 
【学習メモ#11th】12ステップで作る組込みOS自作入門
【学習メモ#11th】12ステップで作る組込みOS自作入門 【学習メモ#11th】12ステップで作る組込みOS自作入門
【学習メモ#11th】12ステップで作る組込みOS自作入門
 
組込みにおけるHTML5
組込みにおけるHTML5組込みにおけるHTML5
組込みにおけるHTML5
 
オープンアーキテクチャ,オープンソースソフトウェア時代の標準化フレームワークを使用したプロジェクトマネジメント
オープンアーキテクチャ,オープンソースソフトウェア時代の標準化フレームワークを使用したプロジェクトマネジメントオープンアーキテクチャ,オープンソースソフトウェア時代の標準化フレームワークを使用したプロジェクトマネジメント
オープンアーキテクチャ,オープンソースソフトウェア時代の標準化フレームワークを使用したプロジェクトマネジメント
 
OSC東京(2014年10月)
OSC東京(2014年10月)OSC東京(2014年10月)
OSC東京(2014年10月)
 

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

NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成Izumi Tsutsui
 
ASP.NET vNextの全貌
ASP.NET vNextの全貌ASP.NET vNextの全貌
ASP.NET vNextの全貌A AOKI
 
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎Noriaki Ando
 
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.5Tsukasa Sugiura
 
サーバー設定自動化は経営課題
サーバー設定自動化は経営課題 サーバー設定自動化は経営課題
サーバー設定自動化は経営課題 Maho Takara
 
Newcomer2020 Docker研修
Newcomer2020 Docker研修Newcomer2020 Docker研修
Newcomer2020 Docker研修Suguru Yazawa
 
もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順Hide Koba
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825hiro345
 
CMake multiplatform build-tool
CMake multiplatform build-toolCMake multiplatform build-tool
CMake multiplatform build-toolNaruto TAKAHASHI
 
ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドToru Tamaki
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on dockerHiroshi Miura
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on dockerHiroshi Miura
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西Masahide Yamamoto
 
Yocto Project ハンズオン / 参加者用資料
Yocto Project ハンズオン / 参加者用資料Yocto Project ハンズオン / 参加者用資料
Yocto Project ハンズオン / 参加者用資料Nobuhiro Iwamatsu
 
181106 02
181106 02181106 02
181106 02openrtm
 
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めCell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めYou&I
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Masahito Zembutsu
 

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

NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
 
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. プログラミング事始め
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
 

Recently uploaded

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 

Recently uploaded (9)

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 

【学習メモ#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でできた