将新增应用程序编译进内存镜像文件
将应用程序加入内存镜像文件,一般有两种方法:一种是先生成内存镜像文件,然后挂载内存镜像文件,将里面的目录拷到另一个可读写的目录下,将单独编译好的应用程序拷进去,然后再用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.c和Makefile都很简单,在(uClinux目录)/user下新建一个名为“hello”的新目录,将hello.c和Makefile拷贝进去。
二、 配置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仿真看看结果