当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 1 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : uclinux添加用户应用程序
帖子发表于 : 2007-06-05 21:31 

注册: 2007-05-09 19:59
帖子: 28
送出感谢: 0 次
接收感谢: 0 次
文中所用的路径为uclinux 安装的相对路径, 比如: /uClinux-Samsung)编译uclinux 并运行成功后, 下一步的工作就是写个最经典、最简单的程序“ hello, world” 。
在uclinux下, 当然要比在普通的OS下麻烦些。( 我用的是ANYWHERE-Ⅱ 开发板, 不同的开发板的过程应相似)我基本是按照 Documentation/Adding-User-Apps-HOWTO 的步骤进行, 有部分修改。
1、在user 目录下创建新目录 user/sample, 用来存放源代码。写“ hello.c” 文件。( “ hello.c” 文件如何写,不用我说了吧。)
2、编辑文件 user/Makefile,
增加下面这行 dir_$(CONFIG_USER_SAMPLE_HELLO) += sample
具体增加到哪里, 你打开文件就会发现相似的语句, 按照字母顺序, 放到合适的位置。
$(CONFIG_USER_SAMPLE_HELLO)是一个变量,如果在配置用户应用程序时选择此程序那么它的值将是y,反之为n。在下一步中有更详细的介绍。这一行的意思是如果配置此程序,则将第一步新建的目录(即sample)添加到dir_y变量中,稍后进入dir_y变量里的各个目录进行编译。
3、编辑文件 config/Configure.help,
增加下行
CONFIG_USER_SAMPLE_HELLO
A example C program. This Program print "hello, world" on screen.
注意: 第2行以2个空格开头, 总长度小于70 个字符。
4、编辑文件 config/config.in
在 ‘ Games’ 后添加新的部分
##################################################
mainmenu_option next_comment
comment 'Sample'
bool 'hello' CONFIG_USER_SAMPLE_HELLO
endmenu
( 注意这里的单引号字符不对, 不要直接COPY这里的字符, 最好自己手工输入, 或参考文件中已有的行修改。)
第一句表示下面将是一个菜单,
第二句表示菜单名称是 Sample,
第三句是一个选项,名字是hello,由变量CONFIG_USER_MYAPP保存这个选现的值,y或n。
第四句表示菜单结束。

以上各步完成后,在用make menuconfig配置用户程序时即可见到最后有个 Sample,将焦点调到此选项上,回车就进入了哪个菜单,只有一项hello,按空格选中,按两次ESC保存配置退出即可。
若想在系统启动时运行此程序,则需要编辑vendors/Samsung/44B0/rc,在最后一行添加此程序编译后的名字即可(如hello)。此文件编译后会被放在目标系统的/etc目录下。此rc文件实际上是一个shell脚本,在系统启动后会自动执行。因为myapp编译后会放在目标系统 /bin目录下,此目录已包含在系统路径中,所以在rc文件中写入hello系统会找到它并运行。

##################################################
5、创建合适的 user/sample/Makefile 文件
HELLO = hello
HELLOOBJS = hello.o

all: $(HELLO)

$(HELLO): $(HELLOOBJS)
$(CC) $(LDFLAGS) -o $@ $(HELLOOBJS) $(LDLIBS)

romfs:
["$(CONFIG_USER_SAMPLE_HELLO)" != y] || cp hello $(ROMFSDIR)/bin/.

clean:
-rm -f $(HELLO) *.elf *.gdb *.o
6、重新编译生成image.rom。注意在运行make config 或make menuconfig时选择生成"hello" 。
是否Makefile 文件中修改如下:
romfs:
["$(CONFIG_USER_SAMPLE_HELLO)" == y] || cp hello $(ROMFSDIR)/bin/.
是否能默认选择“ hello” , 我还未试。
7、烧写image.rom, 运行 >hello 即可看到输出“ hello, world"
8、完毕。
注意:GCC前必须要用[Tab],否则会出现错误:missing separator. Stop.


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 1 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译