組込みOSを 作ってみよう! 坂井弘亮 (KOZOSプロジェクト) Twitter ID:kozossakai.

Slides:



Advertisements
Similar presentations
Ruby on Rail の紹介 石渡正樹 Ruby on Rails とは? スクリプト言語 Ruby で書かれた web アプリケー ションフレームワーク 作者 –Devid Heinemeier Hansson という人だそうです ( 詳 しいことは知りません.
Advertisements

Linuxを組み込んだマイコンによる 遠隔監視システムの開発
ASP入門 - Windows 2000 Server 活用 -.
(実はアイコンは単なる飾りで、この縦書きの部分のどこをクリックしても次のページに移動します。)
理学院 宇宙理学専攻 惑星物理学研究室 修士 2 年 徳永 義哉
C言語システムプログラミング クラス分け 1の人:紫合クラス(302教室) 学籍番号を3で割った余りが、 0の人:冬爪クラス(208教室)
プログラマのレベルアップ.
情報検索概説II 第8回 パソコン組み立てと記憶装置 1999/11/25.
物理実験 I 情報実験第9回 2004/12/10 小西 丈予 2003/12/12 中神 雄一
物理実験 I 情報実験第9回 Modified 2005/12/2 徳永 義哉Original 2003/12/12 中神 雄一
オペレーティングシステムⅡ 第11回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト.
電子黒板活用研修 兵庫県教育委員会.
新人研修第1回 Introduction suzuk.
仮想化システムを用いて 複数のOSを動かす
アセンブラ 大集合! 坂井弘亮 (KOZOSプロジェクト) Twitter ID:kozossakai.
OSCを 雑誌で紹介! 坂井弘亮 (KOZOSプロジェクト) Twitter ID:kozossakai.
環境教育用E-Learningシステム の開発 平成19年度環境教育実践専修構想発表会 環境教育実践専修 鵜川研究室 彭艶萍
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
自作組込みOSを エミュレータで 動かしてみた 坂井弘亮 (KOZOSプロジェクト) Twitter ID:kozossakai.
報告 (2006/9/6) 高橋 慧.
技術トピックス 2014/08.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
組込みシステムとは コンピュータ制御システム?
Debian GNU/Linux ー Linuxインストールに必要な基礎知識 ー 三上 彩 鈴木 倫太郎
(original Takagi & Saito, 2007)
メモリ暗号化による Android端末の盗難対策
オペレーティングシステムⅡ 第3回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト 2009/10/16.
オペレーティングシステムⅡ 第1回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト 2009/10/02.
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
Linuxカーネルについて 2014/01.
発表者 2011/01/08 楽しい256バイトイントロの 世界 発表者 2011/01/08.
オープンソフトウェア利用促進事業 第3回OSSモデルカリキュラム導入実証
こんにちは。これからVR部隊の紹介を始めます。
基礎プログラミング演習 第1回.
Androidアプリの作成 07A1069 松永大樹.
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
2003年度 データベース論 安藤 友晴.
ホスティングサーバの作成と、 ラズベリーパイの利用
ICTを活用した授業づくり ③プログラミング教育
オペレーティングシステムJ/K (実時間処理システム)
RT-Linuxを用いた 多入力パルス波高分析システムの開発
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
杉山耕一朗(北大理) 2009/02/06 epnetfan
前坂 たけし (北大院・理) 其の壱 はじめての BIOS 前坂 たけし (北大院・理)
レッスン1 情報の収集と整理 から プレゼンへ (道具を使いこなす)
OSの仕組みとその機能 1E16M001-1 秋田 梨紗 1E16M010-2 梅山 桃香 1E16M013-3 大津 智紗子
ソフトウェア情報学総論 基盤ソフトウェア学講座
Make: Ogaki Meeting (2010/9/25-26)
実行時情報に基づく OSカーネルのコンフィグ最小化
Ibaraki Univ. Dept of Electrical & Electronic Eng.
WEBアプリケーションの開発 2002年度春学期 大岩研究会2.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
JAVAについて 高橋 雅哉.
JXTA Shell (1) P2P特論 (ソフトウェア特論) 第4回 /
TA 高田正法 B10 CPUを作る   実験の前に TA 高田正法
基礎プログラミング演習 第12回.
コンピュータ リテラシー 担当教官  河中.
組込みシステムとは コンピュータ制御システム?
★C++/オブジェクト指向実践企画★ Othelloゲーム作成
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
オペレーティングシステムⅡ 第2回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト 2009/10/09.
本当は消去できていない!? ~データを完全消去する方法~
本当は消去できていない!? ~データを完全消去する方法~
情報の授業 アプリ等を活用した勉強方法の改善(計画) ・R-PDCAサイクル ・アプリを活用した勉強方法の改善 計画書
ネットワーク・プログラミング デバイスドライバと環境変数.
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
第2回 Webサーバ.
オペレーティングシステム 作成 T21R003 荏原 寛太.
コンパイラ 2012年10月11日
Presentation transcript:

組込みOSを 作ってみよう! 坂井弘亮 (KOZOSプロジェクト) Twitter ID:kozossakai

略歴 1997年頃 プログラミングに傾倒 X Window System プログラミング オブジェクト指向プログラミング OSに興味を持つ 1999年 就職、組込みシステムに興味を持つ 2007年 自作組込みOS「KOZOS」の開発を開始 2009年 OSC出展、KOZOSを実ボードに移植 2010年 OSCなどのイベントに多数参加 セキュリティ&プログラミングキャンプ講師 組込み勉強会を主催

KOZOSの近況 2009/09 秋月のH8,SH2ボードに移植 2009/12 組込みOS自作本を執筆開始 2010/01 書籍用にソース整理、公開 2010/05 組込みOS自作本出版 2010/09 H8エミュレータ上で動作 2010/10 TCP/IP実装、webサーバ動作

最近の活動 詳しくはkozos.jpで! 2011/05 カーネル/VM発表(動画あり) 2011/08 セプキャン参加 2011/09 TechLION出演(動画あり) その他、OSC多数参加 @IT MONOist OS自作記事執筆 SD誌「イベント探訪記」連載中 アセンブラ本執筆中 詳しくはkozos.jpで!

KOZOSプロジェクトとは… マイコンボード上で動作する 独自組込みOS「KOZOS」を フルスクラッチで 作っているプロジェクトです

KOZOSの特徴は 完全フルスクラッチ! ブートローダ...自作 シンプルなOSカーネル ...自作 デバイスドライバ ...自作 libcっぽいライブラリ ...自作 シェルっぽいもの ...自作 なんちゃってTCP/IP ...自作 webサーバ ...自作 完全フルスクラッチ!

他にも… 「組込みOS」に関する 本を書いたり、 勉強会を開いたりしています

ホームページとブログで 情報発信しています 「KOZOS 坂井」 で検索してください

組込みOSを作る前に... そもそも 「組込みOS」って何?

組込み機器で動作するOSです

こんなのの 上で動く OSです ボードコンピュータ っていいます こんなのとか こんなのとか 携帯電話、カーナビ、炊飯器、とか PC上で動くわけではない

いわゆる 「PC」で動作する OSでは ありません

組込み機器の ソフトウエア開発

メモリ容量が 数KB~数百MB それでもひとくくり

お金で例えるなら... 2千円しか持って いない人もいれば、 2億5千6百万円 持っている人も

混沌とした 世界です

組込み機器でも 「OS」って 必要なの?

例えば... コマンド応答 プログラムを 考えてみよう

これだけの動きでも ・送受信割込み ・コマンド処理スレッド ・文字出力スレッド ・アイドルスレッド

炊飯器にも OSは必要か?

(実演) OSが無いとは どういうことか?

組込み機器といえど 資源を有効利用 したいならば OSは必要!

「資源」とは何か? ・CPU ・メモリ ・I/O

(坂井が考える) 「OSの最低条件」 ・CPU時間の割当て (スレッド管理) ・メモリ管理 ・I/O管理 (デバドラと割込みの管理)

組込みOSと 汎用OS

・汎用機器 ワークステーション、PC (そのままでは役立たず、 アプリを入れて使う) ・組込み機器 携帯電話、カーナビ、炊飯器、 電子レンジ、プリンタ、自動車... (アプリは製品の一部であり ユーザは意識しない)

・汎用OS Windows、Mac、Linux、 *BSD、Solaris... ・組込みOS μITRON、VxWorks、 uClinux、OSEK...

ユーザがアプリを 自由にインストール するかどうか 汎用機器と組込み機器の 決定的な違い ユーザがアプリを 自由にインストール するかどうか

汎用機器に必要なこと 「バグのあるアプリ」 「悪意のあるアプリ」 「わがままなアプリ」が インストールされるかも しれない!

汎用機器に必要なこと 「他のアプリに悪さをせず」 「すべて平等に」 そのために... ・仮想メモリ、メモリ保護 ・TSSによるスケジューリング ・ファイルシステム

組込み機器に必要なこと ある処理の最中なのに、突然別の処理が必要になるかもしれない!

組込み機器に必要なこと 「応答性を保証したい」 「タスクを優先度づけしたい」 「リアルタイム制御を行いたい」 そのために... ・優先度によるスケジューリング ・リアルタイム性の提供

ただし組込み機器では アプリも含め、ひとつのシステム として閉じられるので ・おかしなアプリがインストール されることはない! ・おかしなアプリがいたら、 アプリ側を直すべき! ・システム全体に渡っての調整 が可能(優先度など)

汎用OSは「性悪説」に 組込OSは「性善説」に もとづくOSです

組込みOSを 作ってみよう!

「OS自作」は ホビープログラミングの 題材として最適です! (いろいろな知識が 身につきます)

必要な知識... コンパイラ、リンカ、CPU、アセンブラ、ローダ、メモリ管理、I/O操作、ブートストラップ、スレッド、システムコール、ライブラリ、クロス開発、割込み、スタック、...

「OS自作」すれば、 これらの知識が ぜんぶ身について とってもお得!

組込みOSで遊んでみたいが 敷居が高い!

まず 考えなければ ならないこと

ターゲットボードを 何にするか?

各種CPUの評価ボード 商用コンピュータボード Linuxサーバ向けボード

まず、高い 高機能すぎる 開発環境は? ブートローダーは? フラッシュROM 書き込みの問題

実話1 展示会場で... このボード、個人購入で いくらくらいですか? ○○万円です! ボードが高い!

実話2 展示会場で... 開発は何で 進めるんですか? 当社の○○を使っていただきます! (○○万円) 開発環境が高い!

OSは何を いじってみるか?

実話3 書籍で... 本書で利用しているOSは××で、 個人でも購入可能な価格です! ずばり、○万円です! そもそもOSが高い!

Linuxなら μITRONなら ソースコードが巨大で 読みきれない!

ここでCM!

組込み勉強会 やってます!

「組込みこぞう勉強会」 「12ステップ組込み OS自作本もくもく会」

第3回 組込みこぞう勉強会(4月9日)

第2回 12ステップ本もくもく会(1月)

CM終わり! 本編に戻ります

CM前の話を まとめると

組込みOS初心者が パッと試して 遊べるような 学習向けOSが無い!

組込みOS自作の サンプルや、 まとまった資料が無い! つまみ食いで 勉強するしかない!

なんとか ならんもんか...

じゃ、作るか!

3原則!

安いこと (ボード、環境、もろもろ込みで) ソースコードが初心者でも読みきれること(分量的に) つぶしが効く勉強ができること (GNU環境は必須)

これなら自分でも 作れるじゃん!と 思わせられること

そこで、

「KOZOS/H8」 です!

↓ここで動くOSです! 秋月電子:H8/3069Fマイコンボード

今のところ こんなことができてます ブートローダ OSカーネル シリアル応答 TCP/IP webサーバ ROM化 エミュレータ上でも動作

何が必要?

マイコンボード PC 電源アダプタ シリアルケーブル USBシリアルアダプタ

開発環境は... FreeBSD GNU/Linux WinXP+cygwin

特徴は?

気軽にスタート! 5000円くらいで一式そろいます 半田付け不要のターゲットボード ROMライタ不要!

学習向け! OSとしての最低限の機能 ブートローダーも自作! 2000行程度のソースコード 可能な限り、Cで記述

融通が利く! 多様な開発環境 GNU環境での開発 オープンソース,フリーソフト

国産ボード/国産CPU なので 日本語資料が充実!

「KOZOS」 で検索してください

質問は 「KOZOS友の会」 で!

書籍が出ています! 「12ステップで作る 組込みOS自作入門」 (カットシステム) 絶賛発売中!

秋月のボードで動く ブートローダーと 組込みOSを自作します (完全フルスクラッチ!)

12ステップなので 授業や教材にも べんり!

第1部 ブートローダーの作成   第1回 開発環境構築と「Hello World」作成   第2回 各種ライブラリ関数を実装   第3回 静的変数の書き換え対応   第4回 XMODEMによるファイル転送   第5回 ELF形式の解析を実装   第6回 ブートローダーからプログラム起動 第2部 OSの作成   第7回 割込み処理の実装   第8回 スレッド動作を実装   第9回 優先度スケジューリング実装   第10回 メモリ管理を実装   第11回 スレッド間通信を実装   第12回 割込みハンドラ実装

もくもく会やってます! 「12ステップ組込み OS自作本もくもく会」

次の一歩は?

DRAM対応 TCP/IP実装 各種サーバ(telnet, web) デバッガ対応 ROM化 エミュレータ作成 多ボード展開   他H8ボード、SH2ボード、   ARMボード、arduinoボード、... まとまったら、また本を出したいなあ

OS自作は ゲームです!

組込みOSで 遊んでみたいと 思ったら

KOZOSを いじってみるのは どうでしょうか?

おしまい

最後にCM!

OS自作に リンカ・ローダの 知識は必須!

そんなときは この1冊!

CQ出版 より 発売中!