diff paper/chapter/chapter4.tex @ 15:82407e7fefd9

fix
author okud
date Sun, 14 Feb 2021 15:40:34 +0900
parents 101c076a190b
children c977b5f82b9f
line wrap: on
line diff
--- a/paper/chapter/chapter4.tex	Sat Feb 13 02:11:40 2021 +0900
+++ b/paper/chapter/chapter4.tex	Sun Feb 14 15:40:34 2021 +0900
@@ -36,7 +36,7 @@
 \subsection{メモリ空間}
 16bitCPUのメモリのアドレス空間は2の16乗で64KBであった。
 つまり、16bitBIOSでは、64KBの16倍である1MBまでしか使えない。
-UEFIでは、32bitなら2の32乗bitで4GB、64bitなら2の64乗bitで256TBまでメモリを潤沢に使える。
+UEFIでは、32bitなら2の32乗bitで4GB、64bitなら2の64乗bitで16EBまでメモリを潤沢に使える。
 これにより、セキュリティを含めたシステム機能の強化が可能になった。
 
 \subsection{BOOT}
@@ -59,10 +59,33 @@
 一方、UEFIではUSBが主流なため、デバイスの規格は基本的にUSBであることが多い。
 
 \section{UEFI Application}
-aaa
-\section{UEFI Hello World}
-UEFIを開発する際に
+ UEFIの内部構造は図\ref{uefiapps}になっている。
+赤い点線で囲まれている部分がUEFIのApplicationの部分になる。
+UEFI Boot Managreがロード、実行するプログラムのことをUEFI Applicationと呼ぶ。
+UEFI仕様に適合するUEFI実装はEFI Byte Codeを含んでいるため全てのプロセッサ、アーキテクチャと互換性がある。
+つまりUEFI Applicationにも互換性がある。
+また、UEFI ApplicationはC言語で記述することが可能なので、個人で開発することが可能である。
+UEFI Applicationはefiという拡張子でC言語で書かれたコードをコンパイルするとUEFI Applicationになる。
+UEFI OS LoaderはUEFI Applicationの一種であり、これを使えばbootloaderも開発が可能になる。
+
+\begin{figure}[H]
+    \begin{center}
+        \includegraphics[width=150mm]{fig/uefiapp.png}
+    \end{center}
+    \caption{UEFI Application}
+    \label{uefiapps}
+\end{figure}
+
+\section{UEFI 開発環境}
+ UEFIを開発するにあたって使われる開発環境が2つ存在する。
+ Intelのtianocore EDK2\cite{edk2}とGNU-efi\cite{gnu}である。
+Tianocoreは、独自のビルドシステムをもつ大規模で複雑な環境で、
+CrossCompilerとしてGCC、MinGW、Microsoft Visual C++などが使用できる。
+UEFI Application のコンパイルだけでなくBIOS ROMにフラッシュするUEFIファームウェアのコンパイルにも利用できる。
+ Gnu-efiは、システムのネイティブGCCでUEFIアプリケーションをコンパイルするためのライブラリとヘッダのセットである。
+UEFI ファームウェアのコンパイルには使用できない。UEFI Applicationをリンクするためのライブラリがいくつかあり、
+UEFI Applicationの開発に特化している。
 
 \section{Raspberry Pi上のUEFI}
-a
+
 \section{QEMU 上の UEFI}
\ No newline at end of file