uClinux学习笔记之二 - 将新增应用程序编译进内存镜像文件

将新增应用程序编译进内存镜像文件

          

 

将应用程序加入内存镜像文件,一般有两种方法:一种是先生成内存镜像文件,然后挂载内存镜像文件,将里面的目录拷到另一个可读写的目录下,单独编译好的应用程序拷进去,然后再用genromfs生成内存镜像文件。第二种方法就是编辑uClinux的配置文件,使其在执行make romfs命令时与其它运用程序一起加入。显然第二种方法会好一些,自己在配置的过程中也可以加深对uClinux内核配置的了解。下面来看看是怎么做到的。

 

一、    写测试程序和Makefile

//hello.c

#include <stdio.h>

int main(void)

{

   printf("hello,embeded world!/n");

   return 0;

}

//--------------------------------------------------------------------

 

 

#Makefile for hello.c

EXEC = hello

OBJS = hello.o

 

all: $(EXEC)

 

$(EXEC): $(OBJS)

  $(CC)$(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)

 

romfs:

  $(ROMFSINST)/bin/$(EXEC)

 

clean:

  -rm-f $(EXEC) *.gdb *.elf *.o

#---------------------------------------------------------------

 

hello.cMakefile都很简单,在(uClinux目录)/user下新建一个名为“hello”的新目录,将hello.cMakefile拷贝进去。

 

 

二、    配置hello

1、打开(uClinux目录)/config目录下的config.in文件,

comment 'Core Applications' ”这行的的下一行加入:

bool   'hello app'            CONFIG_USER_HELLO_APP

2、打开(uClinux目录)/user目录下的Makefile,加入下面这行:

dir_$(CONFIG_USER_HELLO_APP)           += hello

3、开始配置

运行terminal,切换到uClinux目录

运行makemenuconfig,进入Target PlatformSelection,选择Customize Vendor/User Setting退出保存。

在新出现的菜单中,进入Core Applications,可以看见hello app 选项,将其选择,保存退出。

4、编译

make dep

make

5、在skyeye中仿真

在建立config文件skyeye.conf,保存在uClinux目录下,以下为内容:

#skyeye config file sample

cpu: arm7tdmi

mach: at91

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

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

mem_bank: map=M, type=R,  addr=0x01400000, size=0x00400000,file=./images/romfs.img

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

mem_bank: map=M, type=RW, addr=0x02400000,size=0x00008000

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

mem_bank: map=I, type=RW, addr=0xf0000000,size=0x10000000

#---------------------------------------------------------------------------------------------------

 

terminal中切换到uClinux目录,运行:

skyeye -e linux-2.4.x/linux

出现“>”提示符时输入:./bin/hello,看到什么就不用说了。

 

三、    设置程序自动运行

修改(uClinux目录)/vendors/GDB/ARMulator-EB下的rc,在其末尾加上一行:

/bin/hello

之所以是GDB/ARMulator-EB是因为我们在配置内核时在Choose a Vendor/Product combination子菜单里选择的是GDB/ARMulator-EB,如果你在配置时选择的是其它选项,那么就要根据你的配置在相应的目录下修改rc文件。

重新运行命令:

make  romfs

make  image


再用skyeye仿真看看结果


 

你可能感兴趣的:(uClinux学习笔记之二 - 将新增应用程序编译进内存镜像文件)