changeset 20:b9113f671dec

fix slide
author okud
date Mon, 15 Feb 2021 22:41:04 +0900
parents 0dd66a59256b
children 1769ede4d434
files slide/slide.md slide/slide.pdf
diffstat 2 files changed, 36 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/slide/slide.md	Mon Feb 15 22:17:01 2021 +0900
+++ b/slide/slide.md	Mon Feb 15 22:41:04 2021 +0900
@@ -48,6 +48,7 @@
 - CPUなどの機種依存性を避けることができる
 - GearsOSはCbC(Continuation based C)で記述されていて、CPUやデバイスに影響されない
 - 様々な組み込みシステムに対してGearsOSを応用できる様になる
+
 ---
 <!-- class: slide -->
 # CbC(Continuation based C)
@@ -136,6 +137,8 @@
 ```
 ---
 BootLoader.c
+- efi_mainの引数設定
+
 ```
 #include<efi.h>
 #include<efilib.h>
@@ -152,7 +155,13 @@
 
     InitializeLib(ImageHandle, SystemTable);
     Print(L"Hello, EFI!\n");
-    Status = uefi_call_wrapper(BS->OpenProtocol, 6, ImageHandle, &LoadedImageProtocol,(void**)&LoadedImageParent, ImageHandle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);
+```
+---
+- OSファイルのファイルパスを代入している
+```
+    Status = uefi_call_wrapper(BS->OpenProtocol, 6, ImageHandle, &
+    LoadedImageProtocol,(void**)&LoadedImageParent, 
+    ImageHandle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);
     if (EFI_ERROR(Status)) {
         Print(L"Could not get LoadedImageProtocol handler %r\n", Status);
         return Status;
@@ -162,13 +171,22 @@
         Print(L"Could not get device path.");
         return EFI_INVALID_PARAMETER;
     }
+```
+---
+- KernelをLoadしている
+```
     Status = uefi_call_wrapper(BS->LoadImage, 6, FALSE, ImageHandle, Path, NULL, 0, &Image);
     if (EFI_ERROR(Status)) {
         Print(L"Could not load %r", Status);
         FreePool(Path);
         return Status;
     }
-    Status = uefi_call_wrapper(BS->OpenProtocol, 6, Image, &LoadedImageProtocol, (void**)&LoadedImage, ImageHandle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);
+```
+---
+- ImageをLoadしてKernelを起動している
+```
+    Status = uefi_call_wrapper(BS->OpenProtocol, 6, Image, &LoadedImageProtocol, 
+    (void**)&LoadedImage, ImageHandle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);
     if (EFI_ERROR(Status)) {
         Print(L"Could not get LoadedImageProtocol handler %r\n", Status);
         uefi_call_wrapper(BS->UnloadImage, 1, Image);
@@ -177,8 +195,9 @@
     }
     LoadedImage->LoadOptions = Options;
     LoadedImage->LoadOptionsSize = (StrLen(LoadedImage->LoadOptions)+1) * sizeof(CHAR16);
+    Print(L"Hello,6!\n");
+
     
-    Print(L"Hello,6!\n");
     Status = uefi_call_wrapper(BS->StartImage, 3, Image, NULL, NULL);
     uefi_call_wrapper(BS->UnloadImage, 1, Image);
     FreePool(Path);
@@ -195,14 +214,14 @@
 - initプロセスがOSのBootプロセスを起動
 - OSがBootされる
 
----
+
+------
 <!-- class: slide -->
-# 研究の成果
-- uefiの開発環境をSingularityで作成した
-- GNU-efiで作成したUEFI ApplicationをQEMU-ARMで動かすことができた
-- RaspberryPiにUEFIをファームウェアとして設定し、実行することができた
-- ミニマムなKernel Loaderを調査しARM xv6用に書き直した
-
+# 大変だったこと
+- EDK2は汎用的だがARMのConfigなどの書き換えが困難
+- UEFI開発の情報が少なく、偏りがあった
+- UEFI独特のプログラムの書き方があった
+- 低レベルの開発に慣れていなかった
 
 ---
 <!-- class: slide -->
@@ -214,11 +233,12 @@
 - xv6を書き換えたGearsOSを実装する
 - USB Driverを実装し、キーボードやマウスを使える様にする
 
+
+
 ---
 <!-- class: slide -->
-# 大変だったこと
-- EDK2は汎用的だがARMのConfigなどの書き換えが困難
-- UEFI開発の情報が少なく、偏りがあった
-- UEFI独特のプログラムの書き方があった
-- 低レベルの開発に慣れていなかった
-
+# 研究の成果
+- UEFIの開発環境をSingularityで作成した
+- gnu-efiで作成したUEFI ApplicationをQEMU-ARMで動かすことができた
+- RaspberryPiにUEFIをファームウェアとして設定し、実行することができた
+- ミニマムなKernel Loaderを調査しARM xv6用に書き直した
Binary file slide/slide.pdf has changed