这是一个很老的话题了--不过网上还是很难找到一个完整的操作步骤,所以打算写一下送给象我一样的菜鸟.
仍然以已经编译成功的例子--hello(具体内容可以参阅前面的文章)来说明这个过程.也就是假设程序已经编译好了!(hello的编译过程可以参看http://www.itsn.cn/bbs/dispbbs.asp?boardID=2&ID=1&page=1中第7个问题)
在网上搜索了一些相关内容,都提到了如果想实现程序自启动,需要修改一个etc/rc文件的内容.这个文件大家都不陌生,就是一个负责启动或运行级别变化的脚本文件.但uClinux-dist目录下并没有etc这个目录,所以定位rc文件的位置成了关键.
最开始我找到了uClinux-dist/romfs/etc/rc这个文件,并在文件的最后添加了一行:
/bin/hello --也就是编译好的可执行文件
保存,重新编译uClinux,并不需要从头开始编译
只需执行下面的4步就可以了.
make user_only
make romfs
make image
make
之后下载uClinux的镜象到ITSN的开发板中,重新启动.
但是结果让我很失望,程序并没有自动运行起来,分析一下原因,我错误的以为是由于没有重新编译内核的原因,所以我重新编译了一次(重头开始),步骤如下:
make mrproper
make menuconfig
make clean
make lib_only
make user_only
make romfs
make image
make
这些过程都是按照ITSN上的说明来做的.
可是结果还是一样让人失望.
冷静下来仔细分析,编译的时候执行了make romfs,也就是说romfs目录中的内容应该是根据其他文件的内容生成的,并用于下载到开发板中的镜象文件的源代码,这样说来,它的内容是不能直接修改的,为了验证我的想法,我又打开了这个rc文件,果然,刚才的改动已经自动消失了.
我又开始在uclinux-dist目录下搜索可能的rc文件,发现了uClinux- dist/vendors/Samsung/44B0/rc这个文件(vendors目录下保存的是所有厂商和产品的备选),由于在设置内核的时候使用的就是44B0这个选项,猜想大概就是它了,增加一行:
/bin/hello
保存并编译,也是只执行了后4步.
重新启动,竟然ok了!
超级终端上显示出"hello andy"
仍然以已经编译成功的例子--hello(具体内容可以参阅前面的文章)来说明这个过程.也就是假设程序已经编译好了!(hello的编译过程可以参看http://www.itsn.cn/bbs/dispbbs.asp?boardID=2&ID=1&page=1中第7个问题)
在网上搜索了一些相关内容,都提到了如果想实现程序自启动,需要修改一个etc/rc文件的内容.这个文件大家都不陌生,就是一个负责启动或运行级别变化的脚本文件.但uClinux-dist目录下并没有etc这个目录,所以定位rc文件的位置成了关键.
最开始我找到了uClinux-dist/romfs/etc/rc这个文件,并在文件的最后添加了一行:
/bin/hello --也就是编译好的可执行文件
保存,重新编译uClinux,并不需要从头开始编译
只需执行下面的4步就可以了.
make user_only
make romfs
make image
make
之后下载uClinux的镜象到ITSN的开发板中,重新启动.
但是结果让我很失望,程序并没有自动运行起来,分析一下原因,我错误的以为是由于没有重新编译内核的原因,所以我重新编译了一次(重头开始),步骤如下:
make mrproper
make menuconfig
make clean
make lib_only
make user_only
make romfs
make image
make
这些过程都是按照ITSN上的说明来做的.
可是结果还是一样让人失望.
冷静下来仔细分析,编译的时候执行了make romfs,也就是说romfs目录中的内容应该是根据其他文件的内容生成的,并用于下载到开发板中的镜象文件的源代码,这样说来,它的内容是不能直接修改的,为了验证我的想法,我又打开了这个rc文件,果然,刚才的改动已经自动消失了.
我又开始在uclinux-dist目录下搜索可能的rc文件,发现了uClinux- dist/vendors/Samsung/44B0/rc这个文件(vendors目录下保存的是所有厂商和产品的备选),由于在设置内核的时候使用的就是44B0这个选项,猜想大概就是它了,增加一行:
/bin/hello
保存并编译,也是只执行了后4步.
重新启动,竟然ok了!
超级终端上显示出"hello andy"