# HG changeset patch # User Koki Okuda # Date 1600084619 -32400 # Node ID 7117bbdc79ecb6d2a49818d8c83581c25a45db36 # Parent aeefa483d39a40778c88119b4a93572b3e5c957b fix3 diff -r aeefa483d39a -r 7117bbdc79ec mid_thesis.pdf Binary file mid_thesis.pdf has changed diff -r aeefa483d39a -r 7117bbdc79ec mid_thesis.tex --- a/mid_thesis.tex Mon Sep 14 19:57:31 2020 +0900 +++ b/mid_thesis.tex Mon Sep 14 20:56:59 2020 +0900 @@ -15,7 +15,7 @@ \date{} \maketitle \begin{abstract} -An OS must be reliable and extensible. We are designing Gears OS with the goal of guaranteeing reliability for normal level calculations and scalability for meta-level calculations.Currently, It need to connect a Mac to run Geas OS on a Raspberry Pi via serial communication to get input.Being able to use a keyboard and mouse on the Gears OS on the Raspberry Pi will improve convenience. It would also eliminate the need to connect to hardware other than the Raspberry Pi through a PC.The purpose of this study is to develop a Gears OS Device Driver in CbC on a Rasberry Pi. +An OS have to be reliable and extensible. We are designing Gears OS with the goal of guaranteeing reliability for normal level calculations and scalability for meta-level calculations.Currently, It need to connect a Mac to run Geas OS on a Raspberry Pi via serial communication to get input.Being able to use a keyboard and mouse on the Gears OS on the Raspberry Pi will improve convenience. It would also eliminate the need to connect to hardware other than the Raspberry Pi through a PC.The purpose of this study is to develop a Gears OS Device Driver in CbC on a Rasberry Pi. \end{abstract} \thispagestyle{fancy} @@ -23,16 +23,18 @@ \section{研究目的} OSには信頼性が保証できることと拡張性があることが求められている。信頼性をノーマ ルレベルの計算に対して保証し、拡張性をメタレベルの計算で実現することを目標に Gears OS を設計中である。現在,Geas OSをRaspberry Pi上で動かすためにはMacとシリアル通信で繋げなければ入力ができない。Raspberry Pi上のGears OSでキーボードやマウスを使えるようになれば利便性が向上する。また、Raspberry Pi以外のハードウェアで動かす時にも、PCを介して接続しなくて良くなる。本研究では、Rasberry Pi上でGears OS のDevice DriverをCbCで開発しすることが目的である。 \section{Device Driver} -OSは、接続された機器を直接理解することはできず、OSと接続機器の橋渡しの役割を担うのがDevice Driverである(図1)。Device DriverはOSごとに作成する必要がある。当研究室で開発されているGeas OSに対応するDevice Driver としてUSB接続機器が市場に多いことやRaspberry PIに接続端子があることからUSB Driverを開発する。USB Driverの構成は図2のようになる。また、開発されたDevice Driverの信頼性の検証をしたいため、USBDriverのソースコードをCbmakCで書いていく。 +OSは、接続された機器を直接理解することはできず、OSと接続機器の橋渡しの役割を担うのがDevice Driverである(図\ref{fig1})。Device DriverはOSごとに作成する必要がある。当研究室で開発されているGeas OSに対応するDevice Driver としてUSB接続機器が市場に多いことやRaspberry PIに接続端子があることからUSB Driverを開発する。USB Driverの構成は図\ref{fig2}のようになる。また、開発されたDevice Driverの信頼性の検証をしたいため、USBDriverのソースコードをCbmakCで書いていく。 \begin{figure}[H] - \centering - \includegraphics[width=75mm]{pic/fig1.pdf} + \begin{center} + \includegraphics[width=75mm]{pic/fig1.pdf} + \end{center} \caption{Device Driverの役割} \label{fig1} \end{figure} \begin{figure}[H] - \centering - \includegraphics[width=90mm]{pic/USBDriver.pdf} + \begin{center} + \includegraphics[width=75mm]{pic/fig2.pdf} + \end{center} \caption{USB Driverの構成} \label{fig2} \end{figure} @@ -56,20 +58,17 @@ Gear の特 徴として処理やデータの構造が Code Gear、Data Gear に閉じている事にある。 これにより、実行時間、メモリ使用 量などを予測可能なものにすることができる。 -\section{Raspberry Pi上のGears OS} -先行研究でRaspberry Pi上でGears OSを実装するために、Raspberry Pi上でCbCのmakeを行った。 -しかし、メモリが小さくてmakeするのに時間がかかる。 -またRaspbianでは、qemuによるメモる拡張ができないので別のOSでRaspberry Piで動くCbCを実装する必要がある。 -そこでCross Compileを行うことで別のOSでRaspberry Piで動くCbCを実装した。 -\subsection{Cross Compile} -Cross Compileとは、別のOSで実行可能なコードを生成するコンパイル手法である。 -Raspbian以外の以外のOS環境であらかじめRaspberry Pi上でCbCが動くようにCross Compileを行い、そのコードをRaspberry Piに移すことで、実行できるようになる。 +\section{xv6 on Raspberry Pi} \subsection{xv6} xv6とは MIT のオペレーティングコースの教育目的で 2006 年に開発されたオペレーティングシステムである。 xv6 はオリジナルである v6 が非常に古い C 言語で書かれている為、 ANSI-C に書き換えられ x86 に再実装された。xv6 は read や write などの systemcall、プロセス、仮想メモリ、カーネルとユーザーの分離、割り込み、ファイルシステムなど Unix の基本的な構造を持っている。 xv6はRaspberry Piに移植することができ、ANSI-Cで書かれているxv6をCbCに書き直すことで、Raspberry Pi上でCbCを動かすことができる。 +\subsection{Cross Compile} +Cross Compileとは、別のOSで実行可能なコードを生成するコンパイル手法である。 +Raspbian以外の以外のOS環境であるxv6であらかじめRaspberry Pi上でCbCが動くようにCross Compileを行い、そのコードをRaspberry Piに移すことで、実行できるようになる。 + \section{今後の予定} \subsection{現状} @@ -78,7 +77,8 @@ これにより、Raspberry Pi上のxv6でCbCを書くことができる。 \subsection{研究計画} 今後の計画として本格的にDevice Driverを開発していく。 -USB Driverを開発するためにRaspberry PiのUEFIをbootできるようにする。 +USB Driverを開発するためにRaspberry PiのUEFI BIOSをbootできるようにする。 +UEFI BIOSとは、OSとプラットフォームウェアとの間のソフトウェアインターフェースを定義する使用である。 その後、xHCIを実装するために、そのUSBプロトコルをCbCで実装していきたい。 また、CbCのバージョンが上がったのでCross Compilerも新たに作成する必要がある。 diff -r aeefa483d39a -r 7117bbdc79ec pic/USBDriver.graffle Binary file pic/USBDriver.graffle has changed diff -r aeefa483d39a -r 7117bbdc79ec pic/device.graffle Binary file pic/device.graffle has changed diff -r aeefa483d39a -r 7117bbdc79ec pic/fig1.pdf Binary file pic/fig1.pdf has changed