我的學習之旅(28) 目錄結構調整

kernel_start()函數增加對trap_init()的調用。

void kernel_start(void)
{       
    clear_screen(DISP_FG_WHITE + DISP_BG_BLACK);

    (void)printk_init();
    (void)trap_init();
    return ;
}

文件越來越多,沒辦法了,仿照linux ,先調整文件的目錄結構如下:

+boot目錄+

                 --包含 boot.s setup.s build_boot.c build_setup.c Makefile

+include目錄+

                --包含 要用到的所有頭文件包括io.h system.h printk.h stdarg.h

+init目錄+

               -- 包含 main.c 和start32.s Makefile

+drivers+

              -- 保留給接下來的pcnet32 網卡驅動

+schedule+

             -- 任務調度用,其他所有的.c文件,有空還要再整理後再按功能分目錄.包括:printk.c vsprintf.c

+tools+

            -- 工具目錄,主要用來打包image,包括:build_image.c

最外層則是Makefile

 

內核加載後的內存分佈:

0~64K    start32.s 開始的內核,不包括boot.s和setup.s,此時bios的原生中斷都已經不可用,並且通過調用trap_init()初始化成響應函數default_handle()了。

0x10000地址開始處除了0x90200有setup.s其餘部分保留bios時的原樣內容。

特別是VGA相關的地址:0xb8000開始的內容不能改動,否則打印就掛了。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章