QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1252|回复: 8

在uClinux下添加用户应用程序

[复制链接]
发表于 2004-10-18 23:57:44 | 显示全部楼层 |阅读模式
在uClinux下添加用户应用程序


在uClinux下,由于编译要求的限制,许多功能无法实现。无法动态加载驱动程序模块,也无法动态地编译用户程序。所以要求在编译整个uClinux的时候将驱动程序编译到内核空间,将用户程序编译到用户空间。
下面我将阐述具体过程。

1.        在uClinux源代码下的user目录下,例如/uClinu-dist/user目录
增加应用程序的目录,例如,我将加载一个叫做test的用户程序,那么建立一个test目录。在应用程序目录test下建立用户应用程序。例如,
Test.c
/*
In /uClinux-dist/user/test
*/
#include <stdio.h>

int main(void)
{
        printf(“This is a test!Hello you!\n”);
        return 0;
}

并且建立Makefile用来编译用户程序,直接用/uClinux-dist/user/tip的Makefile并改一下也成。例如,
EXEC = Test
OBJS = Test.o

all: $(EXEC)

$(EXEC): $(OBJS)
        $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS$(LDLIBS_$@))

romfs:
        $(ROMFSINST) /bin/$(EXEC)

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

2.修改/uClinu-dist/user/Makefile 增加对用户应用程序的支持
在适当位置增加下面这句话,具体位置无所谓的,可以按照字母顺序排列
dir_$(CONFIG_USER_Test_Test)          += test

3.        uClinux-dist/config/Configure.help,也可以不编辑。主要是为了别人的阅读要求建立一个帮助模块。例如,
Test is a test application. You can run this application if you set this checkbox true.

4.编辑nux-dist/config/config.in  在配置菜单中建立你的用户程序选项
我增加的内容
###########################################################

mainmenu_option next_comment
comment        'User applications'

bool        'Run test application Test'         CONFIG_USER_Test_Test

endmenu

5.然后运行make menuconfig,设置程序将发现新的用户程序并询问是否编译,你选择y就行了

6.然后make dep
                make lib_only
                make user_only
                make linux
                make romfs
                make image

7.可以跑skyeye试试,进入bin目录发现Test这个用户程序,运行./Test就可以运行了

8.如果你想在uClinux启动的时候运行用户程序,就修改相应架构的rc文件,例如,
如果你运行的是arm-elf-gdb、skyeye或者GDB/ARMULATOR,就修改
vender/GDB/ARMULATOR/rc
如果你运行的是真正的硬件,例如S3C4510,就修改
vender/Samsung/S3C4510/rc
在rc文件的最后加上bin/Test这句话,启动的时候就可以自动运行应用程序了!
发表于 2004-10-19 17:05:19 | 显示全部楼层
呵呵,挺好的...
4510的我也玩过一段时间...
回复

使用道具 举报

发表于 2004-11-30 15:43:12 | 显示全部楼层
请问coredesign,在armlinux下如何添加应用程序,不胜感激!
回复

使用道具 举报

发表于 2004-12-2 19:52:22 | 显示全部楼层
编译。。。 烧入板子,就可以了啊/
复杂的应用可能要用到一些链接库。
回复

使用道具 举报

发表于 2004-12-2 20:21:01 | 显示全部楼层
我现在就是编译这块卡住了,编译后的可执行文件下载到板子里面后,不认这种格式,提示无法识别的二进制文件。我是按照coredesign的帖子上的编译方式编译的,结果就是这样,还望版主及各位高手指点,不胜感激!
回复

使用道具 举报

发表于 2004-12-3 14:49:11 | 显示全部楼层
你交叉编译的程序不可能有问题的,说说你的步骤,和具体错误。
回复

使用道具 举报

发表于 2004-12-3 15:54:23 | 显示全部楼层
我采用的coredesign的帖子上的方法做的,但是由于armlinux和uclinux结构不同,我把驱动程序的文件夹考到drivers/block目录下,修改了相关的makefile,以及configure.in文件,在make menuconfig里面添加上相应的相应的选项,选中,然后编译,整体编译没有什么反应,我直接在测试程序的文件夹里面运行make ,结果就生成了相应的文件,比如test.o,test.exe,把test.exe 下载到开发板里面结果提示无法识别的二进制文件。
回复

使用道具 举报

发表于 2004-12-3 16:48:04 | 显示全部楼层
还望班主及各位位高手指点!
回复

使用道具 举报

发表于 2004-12-6 16:15:28 | 显示全部楼层
uclinux只支持静态连接
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-25 13:04 , Processed in 0.043716 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表