这两天为了让液晶屏在开机时可以自动启动界面,我研究了下Linux下应用程序子启动问题。
Linux系统启动时,内核启动完毕,会执行init程序,启动新进程和退出时重新启动其它进程。别的系统我不太清楚,只知道我的系统里,init工作是在/etc/init.d/rcS文件里,直接添加语句就可以了。
rcS会调用/usr/etc/rc.local,所以也可以把应用程序启动的语句加到这里,毕竟usr里放的都是用户相关的东西。
由于我们的平台上还使用了yaffs文件系统,因此在/mnt/yaffs下还有个init.sh的shell文件,在这里也可以初始化的工作。由于yaffs系统是可读写的,我们可以通过网线对init.sh文件进行修改,而不必重新制作烧写文件系统。所以,我在init.sh里进行了IP地址的设置、sd卡驱动的加载、boa服务器的启动、MiniGUI界面程序的启动。
具体代码如下:
#!/bin/sh
ifconfig eth0 172.23.2.225
route add default gw 172.23.2.9 netmask 0.0.0.0
inetd
cd /mnt/yaffs/sdcard; ./inssd.sh
insmod ./iccard/i2c-tomega8.o
cd /mnt/yaffs/boa; ./boa
ln -s /dev/fb/0 /dev/fb0
cd /mnt/yaffs/boa/web; ./coolbar
#version 2410s 1.6
在刚开始尝试的时候,我没有加上橙 {MOD}的语句,在启动时,液晶界面并没有显示出来,超级终端上显示
No available video device.
NEWGAL: Does not find matched engine: qvfb.
GDI: Can not get graphics engine information!
InitGUI failure when using incore resource.
开始我以为是液晶屏的驱动没有加载的问题,后来经高人指点,才知道是驱动的名称没有对应上,需要建立上面的链接才可以。高人就是高人呐!
这样,在开发平台启动时,就可以直接进入我写的液晶界面上了,感觉很不错的。比在超级终端下自己敲指令要爽多了,呵呵!