uClinux系统上运行自已编写的Hello程序


后在uClinux的user目录下面建立了一个名为test的目录:
 
   

cd uClinux/user/
mkdir test

 

   
    然后在test目录下建立一个名为hello.c的C程序,源代码如下:
   
   
#include
int main(void)
{
printf("Hello,uClinux! ");
return(0);
}

 

   
    然后使用交叉编译器编译hello.c源程序,生成名为hello的可执行文件:
    arm-elf-gcc -Wall -elf2flt -o hello hello.c

    再将该可执行文件复制到uClinux映像文件目录(/home/user/uClinux/romfs/bin)中:

    cp ./hello ../../romfs/bin/

    然后在test目录下建立一个Makefile文件,内容如下(其实是从user下的其他目录中复制过来稍加修改得到的):

EXEC = hello
OBJS = hello.o
all: $(EXEC)
$(EXEC): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
$(OBJS): hello.c
romfs:
$(ROMFSINST) /bin/$(EXEC)
clean:
-rm -f $(EXEC) *.elf *.gdb *.o

 

   
    将来大家可以照着这个模板来修改其中的关联关系即可,其余的嘛,可以不动。
    接下来要对uClinux的一些配置文件进行修改,告诉uClinux系统添加了一个User Application。

    编辑uClinux目录下的文件user/Makefile,增加下面这行文字:

    dir_$(CONFIG_USER_TEST_HELLO) += test

    在这里注意两个问题:一是增加的位置,打开文件就会发现这个Makefile里面有很多类似的语句,只要按照字母顺序,把上面这行放到合适的位置即可;二是注意上面这行文字的颜色变化,黑色部分其实跟其他行是一样的,红色部分则是我们在user中添加的那个用户程序目录,注意前面出现是全大写,后面出现是要与用户目录一致的,而蓝色部分则是用户程序编译之后生成的那个可执行文件的名字,要全大写。

    编辑uClinux目录下的文件config/Configure.help,在文件末尾追加下面这段文字:

    CONFIG_USER_TEST_HELLO

    This is an example C program in uClinux OS, and it will print "Hello, uClinux!" on screen.

    注意:第一行要顶头写,第二行则要以2个空格开头,总长度小于70个字符。

    编辑uClinux目录下的文件config/config.in,在文件末尾追加下面这段文字:

    #########################mainmenu_option next_comment

    comment 'Test'

    bool 'hello' CONFIG_USER_TEST_HELLO

    endmenu

    #########################

    然后返回uClinux的根目录下,重新编译内核,不过这个过程就不用像第一遍编译内核那么复杂了,可以只编译连接最后需要生成的那个镜像文件即可:

genromfs -v -V "ROMdisk" -f ./images/romfs.img -d ./romfs
make image
make

 

   
    前面两步操作会给出一个内存映像表,在里面可以发现有一个名为hello的应用程序。如果没有错误的话会很快完成

本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3