Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
sandai
1,709 views
【学習メモ#6th】12ステップで作る組込みOS自作入門
12ステップで作る組込みOS自作入門 http://www.amazon.co.jp/dp/4877832394/ 坂井 弘亮(著) カットシステム
Technology
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Downloaded 25 times
1
/ 18
2
/ 18
3
/ 18
4
/ 18
5
/ 18
6
/ 18
7
/ 18
8
/ 18
9
/ 18
10
/ 18
11
/ 18
12
/ 18
13
/ 18
14
/ 18
15
/ 18
16
/ 18
17
/ 18
18
/ 18
More Related Content
PDF
【学習メモ#9th】12ステップで作る組込みOS自作入門
by
sandai
PDF
【学習メモ#4th】12ステップで作る組込みOS自作入門
by
sandai
PDF
【学習メモ#11th】12ステップで作る組込みOS自作入門
by
sandai
PDF
【学習メモ#8th】12ステップで作る組込みOS自作入門
by
sandai
PDF
【学習メモ#1st】12ステップで作る組込みOS自作入門
by
sandai
PDF
【学習メモ#3rd】12ステップで作る組込みOS自作入門
by
sandai
PDF
【学習メモ#7th】12ステップで作る組込みOS自作入門
by
sandai
PDF
【学習メモ#5th】12ステップで作る組込みOS自作入門
by
sandai
【学習メモ#9th】12ステップで作る組込みOS自作入門
by
sandai
【学習メモ#4th】12ステップで作る組込みOS自作入門
by
sandai
【学習メモ#11th】12ステップで作る組込みOS自作入門
by
sandai
【学習メモ#8th】12ステップで作る組込みOS自作入門
by
sandai
【学習メモ#1st】12ステップで作る組込みOS自作入門
by
sandai
【学習メモ#3rd】12ステップで作る組込みOS自作入門
by
sandai
【学習メモ#7th】12ステップで作る組込みOS自作入門
by
sandai
【学習メモ#5th】12ステップで作る組込みOS自作入門
by
sandai
What's hot
PPT
リアルタイムOsのカスタマイズ
by
Kazuhiro Takahashi
PDF
[Basic 8] プロセスとスレッド / 入出力 / シェル
by
Yuto Takei
PDF
プロセスとコンテキストスイッチ
by
Kazuki Onishi
PPTX
リアルタイムOSの必要性とTOPPERS/SSPの紹介
by
NSaitoNmiri
PDF
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
by
Yuto Takei
PDF
さわってみようTOPPERS/SSP
by
NSaitoNmiri
PDF
[Basic 9] 並列処理 / 排他制御
by
Yuto Takei
PDF
ラズパイでデバイスドライバを作ってみた。
by
Kazuki Onishi
PDF
あるコンテキストスイッチの話
by
nullnilaki
PDF
x86とコンテキストスイッチ
by
Masami Ichikawa
PDF
X86opti01 nothingcosmos
by
nothingcosmos
PDF
Minix Learning
by
榎本 優樹
PDF
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
by
Hirotaka Kawata
PDF
systemd 再入門
by
Kazuhiro Nishiyama
PPT
d-kami x86-2
by
Daisuke Kamikawa
PPTX
x86-64/Linuxに独自メモリ空間を勝手増設
by
Minoru Nakamura
PPTX
ぼくnmonです
by
洋史 東平
PPT
Altanative macro
by
Motohiro KOSAKI
ODP
Read daemon on 20121110 by shinaisan
by
shinaisan
PDF
Intel TSX について x86opti
by
Takashi Hoshino
リアルタイムOsのカスタマイズ
by
Kazuhiro Takahashi
[Basic 8] プロセスとスレッド / 入出力 / シェル
by
Yuto Takei
プロセスとコンテキストスイッチ
by
Kazuki Onishi
リアルタイムOSの必要性とTOPPERS/SSPの紹介
by
NSaitoNmiri
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
by
Yuto Takei
さわってみようTOPPERS/SSP
by
NSaitoNmiri
[Basic 9] 並列処理 / 排他制御
by
Yuto Takei
ラズパイでデバイスドライバを作ってみた。
by
Kazuki Onishi
あるコンテキストスイッチの話
by
nullnilaki
x86とコンテキストスイッチ
by
Masami Ichikawa
X86opti01 nothingcosmos
by
nothingcosmos
Minix Learning
by
榎本 優樹
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
by
Hirotaka Kawata
systemd 再入門
by
Kazuhiro Nishiyama
d-kami x86-2
by
Daisuke Kamikawa
x86-64/Linuxに独自メモリ空間を勝手増設
by
Minoru Nakamura
ぼくnmonです
by
洋史 東平
Altanative macro
by
Motohiro KOSAKI
Read daemon on 20121110 by shinaisan
by
shinaisan
Intel TSX について x86opti
by
Takashi Hoshino
Viewers also liked
PDF
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
by
Hirotaka Kawata
PDF
組み込み向けC++のやり方を探る - mbedで楽しい組み込みプログラミング -
by
Kishi Shundo
PDF
QEMUでARM64bitベアメタルプログラミング
by
Yuma Ohgami
PDF
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)
by
kozossakai
PDF
やってよかったOS作り
by
Hidemi Kawai
PDF
低レイヤー入門
by
demuyan
PDF
Railsチュートリアルの歩き方 (第3版)
by
Yohei Yasukawa
PPTX
人工知能概論 1
by
Tadahiro Taniguchi
PPTX
ゼロから始める自作 CPU 入門
by
Hirotaka Kawata
PDF
【2000行弱!】x86用自作カーネルの紹介
by
Yuma Ohgami
PDF
Web系だって低レイヤーがやりたいんだよ! コンパイラことはじめ
by
Nisei Kimura
PDF
C++でできる!OS自作入門
by
uchan_nos
PDF
Ctfのためのpython入門
by
shiracamus
PDF
ハッキング実演
by
Ken Ogura
PDF
CTF超入門 (for 第12回セキュリティさくら)
by
kikuchan98
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
by
Hirotaka Kawata
組み込み向けC++のやり方を探る - mbedで楽しい組み込みプログラミング -
by
Kishi Shundo
QEMUでARM64bitベアメタルプログラミング
by
Yuma Ohgami
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)
by
kozossakai
やってよかったOS作り
by
Hidemi Kawai
低レイヤー入門
by
demuyan
Railsチュートリアルの歩き方 (第3版)
by
Yohei Yasukawa
人工知能概論 1
by
Tadahiro Taniguchi
ゼロから始める自作 CPU 入門
by
Hirotaka Kawata
【2000行弱!】x86用自作カーネルの紹介
by
Yuma Ohgami
Web系だって低レイヤーがやりたいんだよ! コンパイラことはじめ
by
Nisei Kimura
C++でできる!OS自作入門
by
uchan_nos
Ctfのためのpython入門
by
shiracamus
ハッキング実演
by
Ken Ogura
CTF超入門 (for 第12回セキュリティさくら)
by
kikuchan98
Similar to 【学習メモ#6th】12ステップで作る組込みOS自作入門
PDF
Hello world make
by
mitsu1119
PPTX
はりぼて OS で ELF なアプリを起動してみた
by
uchan_nos
PDF
ELFの動的リンク
by
7shi
PDF
スタート低レイヤー #0
by
Kiwamu Okabe
PPTX
UEFIによるELFバイナリの起動
by
uchan_nos
PDF
2011.09.18 v7から始めるunix まとめ
by
Makiko Konoshima
PDF
0章 Linuxカーネルを読む前に最低限知っておくべきこと
by
mao999
PDF
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
by
Takuya ASADA
PDF
2011.06.11 v7から始めるunix まとめ
by
Makiko Konoshima
ODP
Bhyve code reading
by
Takuya ASADA
PDF
ただのリンカを書いた話.pdf
by
simotin13 Miyazaki
PDF
OSvの概要と実装
by
Takuya ASADA
KEY
core dumpでcode golf
by
Nomura Yusuke
PPT
20110611 v7unix-b
by
Takayuki Ukai
PDF
What is Metasepi?
by
Kiwamu Okabe
PDF
UEFIで始めるLinux From Scratch
by
Yuma Ohgami
PDF
V6 unix in okinawa
by
magoroku Yamamoto
PDF
デバドラを書いてみよう!
by
Masami Ichikawa
PDF
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
by
inaz2
PDF
NetBSD/evbarm (APC9750) への道
by
tokudahiroshi
Hello world make
by
mitsu1119
はりぼて OS で ELF なアプリを起動してみた
by
uchan_nos
ELFの動的リンク
by
7shi
スタート低レイヤー #0
by
Kiwamu Okabe
UEFIによるELFバイナリの起動
by
uchan_nos
2011.09.18 v7から始めるunix まとめ
by
Makiko Konoshima
0章 Linuxカーネルを読む前に最低限知っておくべきこと
by
mao999
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
by
Takuya ASADA
2011.06.11 v7から始めるunix まとめ
by
Makiko Konoshima
Bhyve code reading
by
Takuya ASADA
ただのリンカを書いた話.pdf
by
simotin13 Miyazaki
OSvの概要と実装
by
Takuya ASADA
core dumpでcode golf
by
Nomura Yusuke
20110611 v7unix-b
by
Takayuki Ukai
What is Metasepi?
by
Kiwamu Okabe
UEFIで始めるLinux From Scratch
by
Yuma Ohgami
V6 unix in okinawa
by
magoroku Yamamoto
デバドラを書いてみよう!
by
Masami Ichikawa
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
by
inaz2
NetBSD/evbarm (APC9750) への道
by
tokudahiroshi
【学習メモ#6th】12ステップで作る組込みOS自作入門
1.
12ステップで作る組込みOS自作入門
6thステップ @sandai
2.
【参考書籍】 12ステップで作る組込みOS自作入門 【内容】 1ステップずつ、実際に動かしながらプログラムを発展さ せていく方式で無理なく学べる。OSやハードウェアに詳 しくない方にも理解できるよう に十分な説明を提供 坂井 弘亮(著) カットシステム(2010/5) 【税込価格】 4,410円 【サポートページ】 http://kozos.jp/books/makeos/
3.
もくじ 1.エントリ・ポイント 2.ブートローダとOSの作成 3.まとめ
4.
1.エントリ・ポイント
5.
エントリ・ポイント ●
ELF形式のファイルのセグメント情報は読み取 れるようになったので、これからセグメントを RAMに展開し処理を渡すことをする – このときにどのアドレスから実行開始すれば良いか を指示しなければならない ● この実行開始アドレスを、一般的にスタート・ アドレス又はエントリ・ポイントと呼ぶ – ELF形式ではエントリ・ポイントと言う
6.
ELF形式のエントリ・ポイント ●
ELF形式のファイルはエントリ・ポイントの情 報をヘッダに持っている – ELFヘッダのうち、「Entry point address」の部分 – そのアドレスから実行開始するのが妥当 ● アセンブリ的にはそのアドレスにジャンプする だけ。これを「実行を渡す」とか「処理を渡 す」と表現したりする
7.
2.ブートローダとOSの作成
8.
開発の流れ ●
ここからブートローダとOSに分かれる – ブートローダ ● ダウンロードしたOSを起動するプログラム – OS ● 今回はHello Worldを表示するだけのプログラム ● どっちもこれまで書いてきたプログラムをいじ るだけ
9.
ブートローダのプログラム ●
追加ファイル – なし ● 修正ファイル – elf.h,elf.c...メモリ上へのコピーとエントリ・ポ イント対応 – main.c...エントリ・ポイントからの起動を追加
10.
セグメントをRAMに展開する ●
そのままRAMにコピーするだけ ● 以前セグメント情報を表示していた部分を消し て以下のコードを追加 ● コピー先がVAではなくPAになってる。VAでも問 題ないが、あくまで論理アドレスだからPAの方 を利用すべしとのこと memcpy((char *)phdr->physical_addr, (char *)header + phdr- >offset, phdr->file_size); memset((char *)phdr->physical_addr + phdr->file_size, 0, phdr->memory_size - phdr->file_size);
11.
エントリ・ポイントを取得 ●
main.cで呼び出すエントリ・ポイントを返す関 数。ELFファイルのチェックとロードも行われ ている char *elf_load(char *buf) { struct elf_header *header = (struct elf_header * )buf; if (elf_check(header) < 0) return NULL; if (elf_load_program(header) < 0) return NULL; return (char *)header->entry_point; }
12.
OSのプログラム ●
追加ファイル – defines.h...ブートローダと同じ – lib.h,lib.c...ブートローダと同じ – serial.h,serial.c...ブートローダと同じ – startup.s...ブートローダと同じ – main.c...新しく作成。Hello Worldを表示 – ld.scr...OS側用のリンカ – Makefile ● これらのファイルは、~/12step/src/06/os以下 に保存
13.
プログラム修正 ●
main.c – 初期化関数を全て削除 ● データ領域のコピ、BSS領域のクリア、シリア ル・デバイスの初期化はブートローダ側でする ことになったので ● ld.scr – 全てram上に配置されるように変更 ● Makefile – 不要な部分を削除
14.
OS側のエントリ・ポイント ●
OS側のエントリ・ポイントは、ld.scrの ENTRY(“_start”)により、startup.sの_start ラベルの位置をエントリ・ポイントとしてELF ヘッダが作成 ● ブートローダのf()の呼び出しが、OS側の _startの位置から動作を開始することになる ● ブートローダのld.scrにもENTRY(“_start”) はあるが、実はこれは特に意味はない – リセット・ベクタから起動してるから
15.
プログラム実行 ●
osディレクトリでmakeして、それからbootload ディレクトリでmake、make image、make write してからのログ /Users/sandai/12step/src/06/os% sudo cu -l /dev/tty.usbserial-FTG6PQ4H Password: Connected. kzload (kozos boot loader) started. kzload> load ~+lsx kozos Sending kozos, 11 blocks: Give your local XMODEM receive command now. Bytes Sent: 1536 BPS:220 Transfer complete XMODEM receive succeeded! kzload> run starting from entry point: ffc020 Hello World! > echo aaa aaa
16.
補足 ●
もしosのld.scrで.text.startupの部分を削除 していなかったら、エントリ・ポイントのアド レス位置は違うので注意 ● なんなんだろうねこれ。よくわからんわ
17.
3.まとめ
18.
まとめ ●
ブートローダとOSを作成した – OSというか、Hello Worldのプログラム ● ブートローダ側とOS側でスタックとかかぶって るけどいいのかな? – ああ、あれか。スタックだもんな。関数抜け たら全部なくなるから、一緒のとこつかえば いいか ● とりあえずブートローダの仕組みがわかったの でよかった ● 書籍ではまだCPUの動作原理という話が続く が、ここでは省略する
Download