自作組込みOSを エミュレータで 動かしてみた 坂井弘亮 (KOZOSプロジェクト) Twitter ID:kozossakai.

Slides:



Advertisements
Similar presentations
わんくま同盟 東京勉強会 #10 オブジェクト指向 #1 Windows メッセージを使いこな す -Windows 流オブジェクト指向 - とっちゃん 高萩 俊行 Microsoft MVP for Windows SDK 2005/ /09.
Advertisements

Android とぼく。 ㈱クレイジーワークス代表取締役 ㈱ロケットスタート取締役 村上 福之. 自己紹介 株式会社クレイジーワークス社長。 株式会社ロケットスタート取締役。 国際会計アカウンタビリティー。 オーストラリアコンピュータ協会アプリケー ションアナリスト。 オーストラリア技術独立永住権保持者.
Ruby on Rail の紹介 石渡正樹 Ruby on Rails とは? スクリプト言語 Ruby で書かれた web アプリケー ションフレームワーク 作者 –Devid Heinemeier Hansson という人だそうです ( 詳 しいことは知りません.
ライブラリ としての Web サービス 氏久 達博 大阪大学大学院 M1. 注 ➲ この発表はネタ半分ま じめ半分です。
引数(パラメーター)の意味 検索値これを 範囲この一覧表から探し出し 列番号対応したものの左から何列目データを答えとして表示 検索の型検索値と完全一致か近似値かを指定 Vlookup (検索値, 範囲, 列番号, 検 索の型)
理解度テスト8 業務担当者の「情報活用」を支援するソフトウェアー
Linuxを組み込んだマイコンによる 遠隔監視システムの開発
組込みOSを 作ってみよう! 坂井弘亮 (KOZOSプロジェクト) Twitter ID:kozossakai.
情報処理3 アプリケーション プログラミング 今井孝明.
(実はアイコンは単なる飾りで、この縦書きの部分のどこをクリックしても次のページに移動します。)
C言語システムプログラミング クラス分け 1の人:紫合クラス(302教室) 学籍番号を3で割った余りが、 0の人:冬爪クラス(208教室)
プログラマのレベルアップ.
クラスタの構成技術と クラスタによる並列処理
※開発中の製品につき、仕様、外観、名称に変更がある場合があります。
PHP AV(Audio Visual) 拡張 PHP asアプリケーション
榮樂 英樹 LilyVM と仮想化技術 榮樂 英樹
技術トピックス 2014/10.
オペレーティングシステムⅡ 第11回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト.
Docker.
プログラミング入門 (教科書1~3章) 2005/04/14(Thu.).
就活中の学生に対し、 日経新聞はどんなサービスを 提供することが有効か
アセンブラ 大集合! 坂井弘亮 (KOZOSプロジェクト) Twitter ID:kozossakai.
OSCを 雑誌で紹介! 坂井弘亮 (KOZOSプロジェクト) Twitter ID:kozossakai.
便利な活用方法 宮城教育大学 生活系教育専修 高久 敏宏.
VBA(Visual Basic Application)を使ったプログラミングの初歩概説
基礎プログラミング (第五回) 担当者: 伊藤誠 (量子多体物理研究室) 内容: 1. 先週のおさらいと続き (実習)
バージョン管理超入門 まだファイルコピーしてます?
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
オープンソフトウェア利用促進事業 第3回OSSモデルカリキュラム導入実証
RAD Studio 14/09/27 TEffectを使った綺麗なForm
オペレーティングシステムⅡ 第1回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト 2009/10/02.
“所有”から“利用”へ 情報社会とコンピュータ 第12回.
さとりすと Satori Ghost Editor 里々ゴーストの統合開発環境を作ったよ page: 1/25
はじめてのASP.NET 楽しいアプリ制作の会 #1 TWorks.

プログラミング論 II 電卓,逆ポーランド記法電卓
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
発表者 2011/01/08 楽しい256バイトイントロの 世界 発表者 2011/01/08.
こんにちは。これからVR部隊の紹介を始めます。
(B2) 親: minami, kazuki 多様な認証機器に対応する 認証システム (B2) 親: minami, kazuki.
情報 第2回:状態遷移 その2.
片岡 哲也 (社) システムエンジニアリング岡山
UDPマルチキャストチャット                    空川幸司.
レッスン1 情報の収集と整理 から プレゼンへ (道具を使いこなす)
マルチスレッド処理 マルチプロセス処理について
OSの仕組みとその機能 1E16M001-1 秋田 梨紗 1E16M010-2 梅山 桃香 1E16M013-3 大津 智紗子
ソフトウェア情報学総論 基盤ソフトウェア学講座
WEBアプリケーションの開発 2002年度春学期 大岩研究会2.
新しいSNSの提案 島本 尋史.
ミドルウェア”TSUNAGI”を 用いたWEBアプリケーションの構築
Limeを使ったユニットテストの実装方法
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Flashを用いたゲーム制作 05A1304 鈴木 浩高.
WindowsMobile de HelloWorld
WindowsMobile de HelloWorld
岡村耕二 TCP通信プログラム 課題と回答例 岡村耕二 情報ネットワーク.
★C++/オブジェクト指向実践企画★ Othelloゲーム作成
オブジェクト指向プログラミング クラス 継承
人を幸せにするアプリケーションの開発 2004年度春学期 大岩研究プロジェクト2 2004年4月8日(木) 発表:武田林太郎.
プログラミング入門 電卓を作ろう・パートI!!.
サブゼミ第7回 実装編① オブジェクト型とキャスト.
C言語講座 制御(選択) 2006年 計算技術研究会.
第5章 まだまだ続く反復処理!! ~繰り返しその2 for~
アルゴリズム入門 (Ver /10/07) ・フローチャートとプログラムの基本構造 ・リスト ・合計の計算
モジュール分割.
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
2005年度 データ構造とアルゴリズム 第2回 「C言語の復習:配列」
3.1 シューティングゲームの当たり判定 当たったら死亡.
ETロボコン2009 コード品質評価プロジェクト ~高品質プログラミングのススメ~ 九州地区 特別プロジェクト 2009/6/13
How To WPF アプリケーション Part3 By 中博俊.
Presentation transcript:

自作組込みOSを エミュレータで 動かしてみた 坂井弘亮 (KOZOSプロジェクト) Twitter ID:kozossakai

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

OSを自作しています

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

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

ひとりプロジェクトです KOZOSプロジェクトの構成 代表...坂井 企画担当...坂井 広報担当...坂井 設計担当...坂井 コーディング担当...坂井 テスト担当...坂井 営業担当...坂井 広報担当...坂井 会計担当...坂井 事務担当...坂井 カメラマン...坂井 運転手...坂井 ひとりプロジェクトです

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

個人の学習向け、 いじって遊ぶための OSです

で、作っている わけなんですが

前から思っていたこと

自作OSに TCP/IPを実装して、 Webサーバとか やらせてみたい!

フルスクラッチの Webサーバを 動かしてみたい!

作り始めてみたが... (もちろんフルスクラッチで)

TCPはステートフルなので、 デバッグがたいへん!

そもそも今までどうやって デバッグしていたのか?

自作組込みOSでは、 デバッガなんて 当然使えない! (自分で対応すれば別)

printf()デバッグは できないの?

そんなの超贅沢!

自作OSで 数値を表示 したかったら どうするか?

まずは 「数値表示ライブラリ」を 自作する必要がある

こんな感じですかね int putxval(unsigned long value, int column) { char buf[9]; char *p; p = buf + sizeof(buf) - 1; *(p--) = '\0'; if (!value && !column) column++; while (value || column) { *(p--) = "0123456789abcdef"[value & 0xf]; value >>= 4; if (column) column--; } puts(p + 1); return 0;

デバッグ環境も 自分でなんとかする 必要があるんです!

なんとかするのが めんどうくさい 場合には どうなるの?

デバッグ環境 無しでがんばる ことになります

というわけで 組込みのデバッグは

基本、「勘」です

「勘デバ」のいいところ ・特別な機材やアプリが不要 ・準備作業が不要 ・どこででもデバッグ可能 ・一瞬で解決できることあり (運が良ければ)  (運が良ければ) ・運が良ければ、最高の効率

しかし、まあそうも 言っていられない TCPの開発には、 デバッガが使いたい!

他にも... 最近暇が無い! 出先や移動中に開発したい! 電車でハックしたい! 飛行機でハックしたい!

エミュレータが使えれば 一石二鳥だ!

ということで、 まずはエミュレータで 動作するようにしよう

エミュレータには 何を使うか? ・HEW...CPUメーカ純正の 統合開発環境 ・GDB...超有名なフリーの デバッガ       統合開発環境 ・GDB...超有名なフリーの       デバッガ    (H8のエミュレーション機能有り)

HEWならば... ・CPUの品種ごとに、細かい動作 ・メーカ純正の安心感 ・きらびやかな統合開発環境 ・もちろんGUI ・日本語マニュアルあり GDBだと... ・自分でいろいろ対応が必要そう ・CPUのコア部分しかシミュレートしてくれない  (I/Oのエミュレートは自分でなんとかする) ・割り込み処理が未実装(自分でなんとかする) ・バグがあるかも(自分でなんとかする) ・マニュアルなんか当然無い(なんとかする)

まあ、 GDBかな、と

HEW GDB+emacs

で、まあGDBを 選んだわけです

では、実際に 「自作webサーバ with自作TCP/IP on自作OS from自作ブートローダー」 を動かしてみましょう

おしまい