我现在已经成功的将CE系统装入ARM9系统里了,,我如果让这个系统启动后自动执行一个程序呢?
以下转载来自http://blog.eeworld.net/hyalbert8084/archive/2007/10/08/1815661.aspx
让程序在Windows CE系统启动时自动运行(方法一)
1. 假定Windows CE.NET目标工程目录为E:\ SMDK2440,并且工程已经Build成功,
假定Windows CE.NET的应用程序为MyApp.exe并存放在本地硬盘 E 盘下;
2. 修改MyWinCE工程的project.bib文件,在MODULES添加如下内容:
MyApp.exe E:\MyApp.exe NK H
3. 创建快捷方式文件MyApp.lnk,文件内容如下:
10#\Windows\MyApp.exe
MyApp.lnk文件也放入E:\目录下;
4. 修改MyWinCE工程的project.bib文件,在FILES 添加如下内容:
MyApp.lnk E:\MyApp.lnk NK H
5. 修改MyWinCE工程的project.dat文件,添加如下内容:
Directory("\Windows\Startup"):-File("MyApp.lnk","\Windows\MyApp.lnk")
8. Platform Builder IDE:【Build】->【Make Image】(记得千万不要Build或者Rebuild)
9. 成功后,得到的NK.bin(或NK.nb0)就包含了应用程序MyApp.exe和MyApp.lnk,当把相应的内核烧入开发板MyApp程序就会在系统启动时自动运行。
关于系统程序的启动顺序(自启动方法二)
采用这种方法的前提是你要启动的应用程序已经编译进了NK.nb0或者NK.bin中了。具体方法及说明如下:
platform.reg或者common.reg,在[HKEY_LOCAL_MACHINE\init]段添加如下类似内容:
"LaunchXX"="<你的程序>"
"DependXX"=hex:YY,ZZ,...
其中XX是十进制的数字,表示<你的程序>的启动顺序标识;YY,ZZ是Least Significant的十六进制数字,表示<你的程序>所依赖(先于<你的程序>运行)的程序的启动顺序标识。
来看两个系统的例子:
[HKEY_LOCAL_MACHINE\init]
; @CESYSGEN IF CE_MODULES_SHELL
"Launch10"="shell.exe"
; @CESYSGEN ENDIF
IF IMGTINY !
; @CESYSGEN IF CE_MODULES_DEVICE
"Launch20"="device.exe"
; @CESYSGEN ENDIF
; @CESYSGEN IF CE_MODULES_GWES
IF NOGUI !
"Launch30"="gwes.exe"
"Depend30"=hex:14,00
ENDIF
Launch10、Launch20、Launch30表示了系统在启动时会先加载“shell.exe”,然后再加载“device.exe”和”gwes.exe”,而且可以看到”gwes.exe”的启动还有依赖“device.exe”,即只有在“device.exe”完全启动后“gwes.exe”才能启动。如果我们要在系统启动时候也启动自己的程序可以像如下设置:
例如:
"Launch80"="MyApp.exe"
"Depend80"=hex:1E,00
语意为程序MyApp.exe的启动顺序标识是80,它依赖标识为30(即001E)的程序。
如果<你的程序>不依赖其他程序,那么不需要添加"DependXX"=hex:YY,zz,...指示;
如果<你的程序>依赖多个程序,那么在"DependXX"指示中指明;
eg.
"Launch80"="MyApp.exe"
"Depend80"=hex:0A,00,1E,00
语意为MyApp.exe程序的启动依赖标识为10和30的程序。注意Launch后面的数值不能和系统默认的某个程序的值一样,不然在编译的时候就会报错。
修改完后只要 PlatformBuilder IDE->Build->MakeImage,生成新的NK.bin就可以了,不用重新编译。
eeworld真是个好地方,回复这么快,,,多谢楼上的兄弟了