码迷,mamicode.com
首页 > 其他好文 > 详细

测试文件系统

时间:2014-07-01 12:55:07      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   width   文件   

一、本文主要内容

1.制作一个可执行文件,用于测试

(1)在一个新的文件loader.S中写一段测试代码,及相应的.ld文件

(2)修改makefile,使loader.S编译成loader.bin

(3)把loader.bin拷贝到boot.img上

2.加载测试文件

对上一篇文件的代码稍做修改,使得能搜索并加载指定文件《loader.bin》到内存指定位置

3.控制权转移到内存指定位置

二、写一个测试文件

(1)loader.S

.code16

.text
    mov $0xb800, %ax
    mov %ax, %gs
    mov $0xf, %ah
    mov $L, %al
    mov %ax, %gs:((80*0+39)*2)
    jmp .

(2)solrex_x86_dos.ld

这里我不太懂,加载的时候es:bx说明加载的位置,这个ld有什么用呢?

SECTIONS
{
    . = 0x0100;
    .text :
    {
        _ftext = .;
    } = 0
}

(3)makefile

a.增加loader.S –> loader.bin的make

b.增加make copy, 用于把loader.bin拷贝到boot.img上

CC=gcc
LD=ld
OBJCOPY=objcopy

CFLAGS=-c
TRIM_FLAGS=-R .pdr -R .comment -R.note -S -O binary

LDFILE_BOOT=solrex_x86.ld
LDFILE_DOS=solrex_x86_dos.ld
LDFLAGS_BOOT=-T$(LDFILE_BOOT)
LDFLAGS_DOS=-T$(LDFILE_DOS)

all: boot.img LOADER.BIN
    @echo #################################################################
    @echo # Compiling work finished, now you can use "sudo make copy" to
    @echo # copy LOADER.BIN into boot.img
    @echo #################################################################

boot.bin: boot.S
    $(CC) $(CFLAGS) boot.S
    $(LD) boot.o -o boot.elf $(LDFLAGS_BOOT)
    $(OBJCOPY) $(TRIM_FLAGS) boot.elf $@

LOADER.BIN: loader.S
    $(CC) $(CFLAGS) loader.S
    $(LD) loader.o -o loader.elf $(LDFLAGS_DOS)
    $(OBJCOPY) $(TRIM_FLAGS) loader.elf $@

boot.img: boot.bin
    @dd if=boot.bin of=boot.img bs=512 count=1
    @dd if=/dev/zero of=boot.img skip=1 seek=1 bs=512 count=2879

# You must have the authority to do mount, or you must use "su root" or
# "sudo" command to do "make copy"
copy: boot.img LOADER.BIN
    @mkdir -p /tmp/floppy;\
    mount -o loop boot.img /tmp/floppy/ -o fat=12;\
    cp LOADER.BIN /tmp/floppy/;\
    umount /tmp/floppy/;\
    rm -rf /tmp/floppy/;

clean: 
    @rm -f *.o *.elf *.bin *.BIN

distclean: clean
    @rm -f boot.img

release: clean
    @mv boot.img solrex.img

三、加载测试文件

不需要特殊处理,把要加载的文件名和文件名长度设置一下就可以了

四、转移控制权

在LABEL_FILE_LOADED后面加上

jmp        $BaseOfLoader, $OffsetOfLoader

四、编译

bubuko.com,布布扣

五、运行

(1)打印“Booting**”:引导程序开始执行

(2)打印“Loaded in”:找到了loader.bin

(3)打印“L”:跳转到loader.S的代码中

bubuko.com,布布扣

测试文件系统,布布扣,bubuko.com

测试文件系统

标签:style   blog   http   color   width   文件   

原文地址:http://www.cnblogs.com/windmissing/p/3817233.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!