使用skyeye编译u-boot

本试验的运行环境:VMWARE WORKSTATION + REDHAT 9.0

本实验需要的文件:arm-linux-gcc-3.4.1.tar.bz2

                     arm-linux-gcc-3.3.2.tar.bz2

                     arm-elf-20040427.tar.bz2

                     u-boot-1.2.0.tar.bz2

                     skyeye-1.2.5_REL.tar.gz

                     skyeye-testsuite-1.2.5.tar.gz

 

一、安装交叉编译器、配置环境

 1. 下载交叉编译器arm-linux-gcc-3.4.1.tar.bz2, arm-elf-20040427.tar.bz2, 并将其拷贝到根目录下

 2. 安装arm-linux-gcc-3.4.1.tar.bz2和arm-elf-20040427.tar.bz2:

 # cd /

            # tar jxvf arm-linux-gcc-3.4.1.tar.bz2

            # ./arm-elf-20040427.tar.bz2

3.设置环境变量: 从新打开终端,然后执行

            # vi .bashrc    添加

            export PATH=$PATH:/usr/local/arm/3.4.1/bin

4.查看是否成功安装

           退出控制台,然后从新打开终端,输入

           # arm-linux-

          按下tab键,可以看到所有”arm-linux-“打头的工具。再使用命令”arm-linux-gcc –v”查看编译器信息:

 

 

二.安装skyeye

1.下载skyeye-1.2.5_REL.tar.gz, 在/home/redhat/下建立文件夹lab3

    # mkdir lab3

将skyeye-1.2.5_REL.tar.gz拷贝到lab3中,解压缩

    # tar zxvf skyeye-1.2.5_REL.tar.gz

进入/skyeye-1.2.5_REL编译并安装

    # ./configure (与skyeye匹配的编译器是gcc-3.4或者gcc-4.2,如果本虚拟机默认的不是此版本,则可以写成:CROSS_COMPILE = /usr/local/arm/3.4.1/bin/gcc-3.4 ./configure)

# make

# sudo make install

3. 下载测试集

最新的skyeye-testsuite-1.2.5.tar.bz2测试集并解压缩

4、使用skyeye模拟板子s3c2410运行某个Linux

    如:进入/skyeye-testsuite-1.2.5/linux/s3c2410/s3c2410x-2.6.14

# cd skyeye-testsuite-1.2.5/linux/s3c2410/s3c2410x-2.6.14

命令:skyeye –c skyeye.conf –e vmlinux

#skyeye –c skyeye.conf –e vmlinux

执行命令后,会出现”Welcome to ARMLINUX”的欢迎界面:

 

 

5、编写应用程序hello.c

//hello.c

#include <stdio.h>

int main(void)

{

for(int i=0; i<6; i++)

    printf(“This is my program!”);

return 0;

}

 

使用命令:arm-linux-gcc –static –o hello hello.c

6、将所选择的测试linux的根文件系统映像initrd.img加载到某个目录下:

在/home/redhat/下,执行命令,

# mkdir root

在/skyeye-testsuite-1.2.5/linux/s3c2410/s3c2410x-2.6.14中

 # sudo mount –o loop initrd.img /home/redhat/lab3/root/

7、将hello拷贝到根文件系统中

 # sudo cp hello root/bin

 # sudo umount root 卸载刚刚加载过的root

8、进入skyeye模拟该板子运行应用程序,如:hello

 进入/skyeye-testsuite-1.2.5/linux/s3c2410/s3c2410x-2.6.14

 # skyeye –c skyeye.conf –e vmlinux 进入skyeye然后查找并执行hello

 # cd bin

 # ls

 # ./hello

可看到出现”This is my program!”

# skyeye –c skyeye.conf –e vmlinux

 

 

三、编译u-boot

1、下载u-boot-1.2.0.tar.bz2 并解压缩

2、因为我们要模拟ep7312芯片,而u-boot已经支持一个基于ep7312的板子了,所以我们只要对u-boot里面有关ep7312的板子的配置做修改就可以了。U-boot里面有关主板的配置文件都在include/configs/ep7312.h中,

现在我们要对ep7312修改:

找到#define CONFIG_DRIVER_CS8900  1

改为#define CONFIG_DRIVER_CS8900  0

 

找到#define CONFIG_COMMANDS(CONFIG_CMD_DFL | CFG_CMD_JFFS2)

改为#define CONFIG_COMMANDS(CONFIG_CMD_DFL)

 

找到#define CONFIG_BOOTDELAY   3

改为#define CONFIG_BOOTDELAY   -1

 

3、还要做以下修改:

(1)cpu/arm720t/config.mk

找到# supply options according to compiler version

 

PLATFORM_CPPFLAGS += $(call cc-option,-mapcs-32,$(call cc-option,-mabi=apcs-gnu),)

 

(2)include/asm-arm/processor.h

union debug_insn{

 

        u32  Arm;

        u16  thumb;

};

 

(3) examples/Makefile

$(LIB):$(obj).depend $(LIBOBJS)

     $(AR) $(ARFLAGS) $@ $(LIBOBJS)

 

$(SREC):

       $(obj)%.srec: $(obj)%.o

$(OBJCOPY) –o srec $< $@ 2>/dev/null

 

$(BIN):

      $(obj)%.bin: $(obj)%.o

$(OBJCOPY) –o binary $< $@ 2>/dev/null

 

4、然后在 u-boot的根目录下,配置,编译:

# make ep7312_config

(与u-boot匹配的编译器是arm-linux-gcc-3.3.2,指定编译时要在Makefile文件中加入:

CROSS_COMPILE = /usr/local/arm/3.3.2/bin/arm-linux-即可,ARCH = arms)

#sudo make all, 结果如下:

 

经过编译,如果不出错,结果中会出现u-boot, u-boot.bin, u-boot.map, u-boot.srec 文件。

 

四、用skyeye仿真u-boot

1、创建一个目录,如:/home/redhat/lab3/uboot

  并把u-boot, u-boot.bin, u-boot.map, u-boot.srec拷贝到这个目录,

 

 

  并在这个目录创建一个skyeye.conf文件,内容如下:

  mpu: arm720t

  mach: ep7312

  mem_bank: map=M, type=RW, addr=0x00000000, size=0x00400000

  mem_bank: map=I, type=RW, addr=0x80000000, size=0x00010000

  mem_bank: map=M, type=RW, addr=0xc0000000, size=0x00200000

  mem_bank: map=M, type=RW, addr=0xc0200000, size=0x00600000

  mem_bank: map=M, type=RW, addr=0xc0800000, size=0x00800000

 

  #1cd: type=ep7312, mod=gtk

 

  dbct: state=on

 

2、然后输入命令:skyeye –c skyeye.conf –e u-boot, 就能看到u-boot运行结果了。

 

 

 

至此,整个u-boot编译就完成了。

五、编译中遇到的问题:

1.       安装arm-linux-gcc-时,在设置安装路径时要注意路径的正确性,如果设置不正确,使用tab键时就不会出现结果。我们可以直接拷贝到根目录下即可。

2.       在编译u-boot时,注意u-boot和arm-linux-gcc的版本一致,否则编译时会出现错误,且如果版本不同,可在u-boot的Makefile中设置CROSS_COMPILE的值。

3.       编译工作是一个十分繁琐的过程,因此要认真对待每一步。

你可能感兴趣的:(redhat,cmd,测试,compiler,makefile,编译器)