基于2410/2440让程序在Windows CE系统启动时自动运行(含platform.reg .dat .bib介绍)

转载 2012年03月26日 10:30:19

关于系统程序的启动顺序(自启动方法一)

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.exeMyApp.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")

6. Platform Builder IDE:【Build】->【Make Image】(记得千万不要Build或者Rebuild)

7. 成功后,得到的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 ENDIFIF IMGTINY !;

 @CESYSGEN

IF CE_MODULES_DEVICE

 "Launch20"="device.exe";

@CESYSGEN

ENDIF;

@CESYSGEN

IF CE_MODULES_GWESIF 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就可以了,不用重新编译。

去掉系统启动 explorer项

Windows CE.NET的桌面确实漂亮,但是如果我们的嵌入式系统使用微软的桌面,总让我感觉不伦不类。因此,要想个办法,让我们的程序开机启动,把微软的那个桌面给替换掉。其中使用startup的快捷方式再加上隐藏任务栏的方法,效果非常的好,但是每次启动的时候,总是微软的桌面先出来,再启动我们的程序,感觉还是不爽。

有一种方法如下:

1) 首先新建工程,把你的应用程序放到内核里面去(前面介绍了如何做);

2) 编译平台;

3) 修改E:\SMDK2440\RelDir\SAMSUNG_SMDK2440_ARMV4IRelease\shell.reg的文件 :在文件中有这样一行:[HKEY_LOCAL_MACHINE\init]"Launch50"="explorer.exe""Depend50"=hex:14,00, 1e,00把这个explorer.exe改成你的应用程序(比如:MyApp.exe)就可以了;

4) Platform Builder IDE:【Build】->【Make Image】(记得千万不要Build或者Rebuild)否则就前功尽弃了。

5) 成功后,得到的NK.bin(或NK.nb0)就包含了应用程序MyApp.exe和MyApp.lnk,当把相应的内核烧入开发板MyApp程序就会在系统启动时自动运行。至此,随心所欲的让自己的程序在Windows CE系统启动时自动运行了。

原理说明:

1.将自定义的文件打包进NK.bin中的方法有两种 一种是编辑project.bib文件。在FILES Section描述文件的名称,源文件的路径,文件在目标系统中的属性。在上面, MyApp.exe $(_FLATRELEASEDIR)\MyApp.exe NK H 表示将你所建工程如:E:\SMDK2440\RelDir\SAMSUNG_SMDK2440_ARMV4IRelease 目录下的文件MyApp.exe文件打包进NK.bin,并且此文件将处在Kernel内存区,文件属性类型为隐藏。 第二种方法是添加User Feature。PlatformBuilder IDE->FeatureView->在"MyWinCE Features"上Right Click鼠标->Insert User Feature->指向想打包的文件。无论采用哪种打包方法,在启动的Windows CE系统中,文件都在\Windows目录下。下一步就是根据需要重新组织文件系统的目录结构。

2.组织文件系统的目录结构的途径在于修改project.dat文件添加文件目录结构的描述。描述的语法如下:root:-Directory("<目录名>") 表示在root目录(\)下创建目录Directory("\<目录名>"):-Directory("<子目录名>") 表示在指定目录下创建子目录Directory("\("<目录名>\<子目录名>"):-File("<文件名>.<扩展名>","\Windows\<文件名>.<扩展名>") 表示在指定目录下创建\Windows目录下文件的拷贝,显示名称是<文件名>.<扩展名>。

3.应用程序并不一定需要打包进NK.bin假定程序在硬盘的某个位置,如\硬盘\MyApp\MyApp.exe,那么只需创建快捷方式文件,链接指向\硬盘\MyApp\MyApp.exe就是了。整个过程简单来说就是,想清楚应用程序将会出现在哪个目录下,创建正确的快捷方式文件,修改目标系统目录组织配置,最后将应用程序和相应的快捷方式文件打包进NK.bin。ARMCE备注:

1 最好不要修改common.reg,需要改动在platform.reg中做,platform.reg中的注册表内容会覆盖common.reg的,如果改动了common.reg编译起来就比较麻烦了

2 改动了platform.reg需要手动将其从platform拷贝到release目录,这样才可以直接执行makeimg,因为makeimg是不会拷贝files目录下的东西的

3 lnk文件的内容可能有些问题,标准格式为{number}#{link}其中:{number}为#后面所有字符的长度,也即字节数{link}为指向的exe的路径如:16#\Windows\cmd.exe23#"\Windows\dmacnect.exe"

说明:这个是设定启动顺序,launch后面的数字越大的越是后启动,Depend80后面的指定依赖项,为16进制,上面的语句表明依赖项为launch20 定义的device.exe和launch30中定义的gwes.exe, 注意Launch后面的数字范围为0到99

以上转自:http://www.armce.cn/bbs/thread-65-1-2.html

让程序在Windows CE系统启动时自动运行

 让程序在Windows CE系统启动时自动运行(方法一)1. 假定Windows CE.NET目标工程目录为E:/ SMDK2440,并且工程已经Build成功,假定Windows CE.NET的应...
  • hyalbert8084
  • hyalbert8084
  • 2007年10月08日 17:26
  • 1426

让程序在Windows CE系统启动时自动运行-两种方法

让程序在Windows CE系统启动时自动运行-两种方法 一、快捷方式 假定Windows CE.NET目标工程为CEPC类型,目录为E:/Project/MyWinCE,并且工程已经Build(或者...
  • embedayd
  • embedayd
  • 2005年10月21日 14:50
  • 3357

在Windows CE系统让程序启动时自动运行

让程序在Windows CE系统启动时自动运行(方法一) 1. 假定Windows CE.NET目标工程目录为E:\ SMDK2440,并且工程已经Build成功, 假定Windows CE.NE...
  • jiudiwai
  • jiudiwai
  • 2012年07月13日 10:04
  • 486

让程序在Windows CE系统启动时自动运行

转载自:http://blog.csdn.net/zggxyx2004/archive/2008/10/10/3050308.aspx          让程序在Windows CE系统启动时自动运行...
  • freeishwk
  • freeishwk
  • 2009年12月15日 15:08
  • 347

让程序在Windows CE系统启动时自动运行(转)

 demon(2005-06-25)1. 假定Windows CE.NET目标工程目录为E:/Project/MyWinCE,并且工程已经Build成功,假定Windows CE.NET的应用为MyA...
  • wdsswadjsn
  • wdsswadjsn
  • 2008年04月11日 20:41
  • 573

WinCE 应用程序开机自动运行

一、开机自运行常规方法[转载]近日在开发过程中遇到WinCE应用程序开机自动运行的问题,在网上找了找,发现大概有以下三种方法:1、 将应用程序和应用程序快捷方式添加到映像里,再将快捷方式添加到Star...
  • mistyeyed
  • mistyeyed
  • 2011年02月26日 20:47
  • 10719

[转帖]让程序在Windows CE系统启动时自动运行[转帖]让程序在Windows CE系统启动时自动运行

导读:   1. 假定Windows CE.NET目标工程目录为E:/Project/MyWinCE,并且工程已经Build成功,   假定Windows CE.NET的应用为MyApp.exe; ...
  • wincemobile
  • wincemobile
  • 2008年01月18日 14:37
  • 520

Windows CE下开机自动运行程序

 How to Configure the Registry to Run an Application at StartupYou can add an application to your OS...
  • dreamzqw
  • dreamzqw
  • 2007年08月12日 18:42
  • 4375

nodejs项目windows下开机自启动

Nodejs项目开机自启动 1. 在需要自启动的项目中安装 node-windows 模块 npm install node-windows --save   2. 在项目根目录创建nw.js文件 代...
  • github_39294367
  • github_39294367
  • 2017年07月29日 01:40
  • 6673

用Keil-MDK开发TQ2440裸机程序入门教程(把裸机程序下载到Nor Flash中!)

转载自http://blog.csdn.net/wo519074786/article/details/8082258 原文来自http://www.amobbs.com/thread-528151...
  • huang446276616
  • huang446276616
  • 2014年01月20日 13:26
  • 2569
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于2410/2440让程序在Windows CE系统启动时自动运行(含platform.reg .dat .bib介绍)
举报原因:
原因补充:

(最多只允许输入30个字)