OSDN Git Service

MochiBooterのカーネルイメージ化対応
authorMochi <master.c.mochi@gmail.com>
Mon, 17 Jul 2017 06:11:56 +0000 (15:11 +0900)
committerMochi <master.c.mochi@gmail.com>
Mon, 17 Jul 2017 06:11:56 +0000 (15:11 +0900)
build/Makefile
src/booter/LoadMng/LoadMngKernel.c
src/booter/Makefile
src/kernel/Makefile

index 42a52dc..28304d4 100644 (file)
@@ -1,25 +1,21 @@
 #******************************************************************************#
 #* build/Makefile                                                             *#
-#*                                                                 2017/07/11 *#
+#*                                                                 2017/07/16 *#
 #* Copyright (C) 2016-2017 Mochi                                              *#
 #******************************************************************************#
 #******************************************************************************#
 #* マクロ設定                                                                 *#
 #******************************************************************************#
 # ディスクイメージファイル
-IMG_NAME    = mochi.img
-
-# ループデバイス
-LOOP_DEV    = /dev/loop0
-LOOP_DEV_P1 = /dev/loop0p1
-LOOP_DEV_P2 = /dev/loop0p2
+DISK_IMG    = mochi.img
 
 # booter
-BOOTER_IPL  = objs/booter/booter-ipl
-BOOTER_MAIN = objs/booter/booter-main
+BOOTER_IPL  = objs/booter/booter-ipl.bin
+BOOTER_MAIN = objs/booter/booter-main.bin
 
 # kernel
-KERNEL      = objs/kernel/kernel
+KERNEL      = objs/kernel/kernel.bin
+KERNEL_IMG  = kernel.img
 
 
 #******************************************************************************#
@@ -34,20 +30,21 @@ all:
 .PHONY: clean
 clean:
        make -C ../src/ clean
-       -rm -f $(IMG_NAME)
+       -rm -f $(DISK_IMG)
+       -rm -f $(KERNEL_IMG)
        -rm -rf objs
 
 # ディスクイメージの作成
 .PHONY: image
-image: $(IMG_NAME)
+image: $(DISK_IMG)
 
 
 #******************************************************************************#
 #* イメージファイル作成                                                       *#
 #******************************************************************************#
-$(IMG_NAME): all
-       sync
-       tools/makedisk -o $@ -i $(BOOTER_IPL) -b $(BOOTER_MAIN) -k $(KERNEL)
+$(DISK_IMG): all
+       tools/makeimg  -o $(KERNEL_IMG) -K $(KERNEL)
+       tools/makedisk -o $@ -i $(BOOTER_IPL) -b $(BOOTER_MAIN) -k $(KERNEL_IMG)
        sync
 
 #******************************************************************************#
index 48f75d1..bce647b 100644 (file)
@@ -1,6 +1,6 @@
 /******************************************************************************/
 /* src/booter/LoadMng/LoadMngKernel.c                                         */
-/*                                                                 2017/07/11 */
+/*                                                                 2017/07/16 */
 /* Copyright (C) 2017 Mochi.                                                  */
 /******************************************************************************/
 /******************************************************************************/
@@ -9,6 +9,7 @@
 /* 共通ヘッダ */
 #include <stdarg.h>
 #include <kernel/MochiKernel.h>
+#include <MLib/Basic/MLibBasic.h>
 
 /* 外部モジュールヘッダ */
 #include <Cmn.h>
 /******************************************************************************/
 void LoadMngKernelLoad( void )
 {
+    uint32_t            size;   /* LBAサイズ              */
+    MochiKernelImgHdr_t header; /* カーネルイメージヘッダ */
+    
     /* トレースログ出力 */
     DEBUG_LOG( "%s() start.", __func__ );
     
+    /* 初期化 */
+    size = sizeof ( MochiKernelImgHdr_t ) / 512;
+    
+    /* カーネルイメージヘッダ読込み */
+    DriverAtaRead( &header,
+                   gLoadMngInitPt[ 1 ].lbaFirstAddr,
+                   size );
+    
     /* カーネル読込み */
     DriverAtaRead( ( void * ) MOCHIKERNEL_ADDR_ENTRY,
-                   gLoadMngInitPt[ 1 ].lbaFirstAddr,
-                   gLoadMngInitPt[ 1 ].lbaSize );
+                   gLoadMngInitPt[ 1 ].lbaFirstAddr + size,
+                   MLIB_BASIC_ALIGN( header.fileSize, 512 ) / 512);
     
     /* トレースログ出力 */
     DEBUG_LOG( "%s() end.", __func__ );
index 7238069..302b6f0 100644 (file)
@@ -1,6 +1,6 @@
 #******************************************************************************#
 #* src/booter/Makefile                                                        *#
-#*                                                                 2017/07/06 *#
+#*                                                                 2017/07/16 *#
 #* Copyright (C) 2016-2017 Mochi.                                             *#
 #******************************************************************************#
 #******************************************************************************#
@@ -10,9 +10,9 @@
 CUR_DIR   = booter
 
 # IPL部バイナリ名
-IPL_NAME  = booter-ipl
+IPL_NAME  = booter-ipl.bin
 # メイン部バイナリ名
-MAIN_NAME = booter-main
+MAIN_NAME = booter-main.bin
 
 # IPL部ソースコード
 IPL_SRCS  = Ipl/IplMain.s
index 7459313..d00a36c 100644 (file)
@@ -1,6 +1,6 @@
 #******************************************************************************#
 #* src/kernel/Makefile                                                        *#
-#*                                                                 2017/07/06 *#
+#*                                                                 2017/07/16 *#
 #* Copyright (C) 2016-2017 Mochi.                                             *#
 #******************************************************************************#
 #******************************************************************************#
@@ -10,7 +10,7 @@
 CUR_DIR      = kernel
 
 # バイナリ名
-KERNEL_NAME  = kernel
+KERNEL_NAME  = kernel.bin
 
 # ソースコード
 SRCS = InitCtrl/InitCtrlInit.c \