搜索
bottom↓
回复: 1

wec7 应用程序下载掉电保护问题

[复制链接]

出0入0汤圆

发表于 2014-11-26 18:15:21 | 显示全部楼层 |阅读模式

平台:AM335x的硬件平台 ,跑wince(WEC7)
上位机暂且用VS2008 编了一个Hello Word 程序,下称为app1.exe
调试 部署都通过了,用ActiveSync4.5 进行的同步

问题1:板子重启之后,app1.exe就没有了,怎样才能掉电保护
问题2:其他同事如果用其他上位机平台(Labview)开发的app2.exe,又应该怎样掉电保护?

谢谢各位!

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2014-11-27 08:37:40 | 显示全部楼层
本帖最后由 Link_Ling 于 2014-11-27 09:44 编辑

我先想到一个笨办法,就是将app.exe,包含到内核里去,当然同时也为了以后启动之后直接运行app.exe
网上有N篇方法关于应用程序自启动的,这里借花献佛一下

-------------------------------------------------------------------------------
----------------------------------借花献佛---------------------------------------------

就我的理解来说,wince系统是跑在ram里的,所以无法直接在根目录或者是\windows目录下保存文件.任何新建的文件在断电后都会消失.所以想要在\windows目录下保存文件只有编写在nk.bin中了.

方法一:

1) 假定Windows CE.NET目标工程目录为D:\WINCE600\OS_try,并且工程已经Build成功,假定Windows CE.NET的应用程序为MyApp.exe;

2) 将应用程序MyApp.exe复制到OS_try工程目录D:\WINCE600\OS_try\RelDir\xxx_Release 下

3) 修改OS_try工程的project.bib或者platform.bib文件,在FILES Section添加如下内容:

MyApp.exe     $(_FLATRELEASEDIR)\MyApp.exe        NK      H

这里$(_FLATRELEASEDIR)相当于D:\WINCE600\OS_try\RelDir\xxx_Release 目录.文件属性如下:

    S:系统
    H:隐藏
    R:压缩的资源文件
    C:压缩文件
    U:非压缩文件

4) 创建快捷方式文件MyApp.lnk,(先建文本文件,写入内容后再改扩展名为.lnk)文件内容如下:

        18#\Windows\MyApp.exe

WINCE的快捷方式和WIN2K,XP的不同,只是一个后缀名为.LNK的文本文件.
    其格式如下: 数字#路径
    比如,有个快捷方式写法如下:23#\Windows\ToolViewer.exe
    指的是指向WINDOWS文件夹下的Toolviewer.exe可执行文件.数字究竟代表的是什么意思,我也不太清楚;有一说法是#后的ACSII字符 的数量,但如果把上述例子改为1#\Windows\ToolViewer.exe也可正常运行,但去掉数字则系统无法识别.虽然可以正常使用,但建议还 是按照文档#之后的ACSII字符数量填写.

将MyApp.lnk文件也放入到OS_try工程目录d:\WINCE600\OS_try\RelDir\xxx_Release 下

5) 修改OS_try工程的project.bib或者platform.bib文件,在FILES Section添加如下内容:

MyApp.lnk      $(_FLATRELEASEDIR)\MyApp.lnk     NK      H

6) 修改Os_try工程的project.dat文件,添加如下内容:

Directory("\Windows\StartUp":)-File("MyApp.lnk","\Windows\MyApp.lnk")

实际上第3步已经将MyApp.exe添加到了\windows目录下,所以这里只加快捷方式,如果是再拷执行文件到ram目录的话就有些浪费了.

注意:如果是已经成功编译完nk的,直接改d:\WINCE500\OS_try\RelDir\xxx_Release 目录下的platform.bib,project.dat等文件,选Platform Builder IDE:【Build】->【Make RunTime Image】(记得千万不要Build或者Rebuild,否则前功尽弃,需从头再来)

注:如果改的OS_try下的属性就只能全部Build了。


方法二: 主要思想:将应用程序添加到映象里,然后用你的应用程序直接替换Wince的桌面程序。

步骤:

1. 像方法一一样把你的应用程序添加到映象里。

2. 修改shell.reg(可以再XXX_Release文件夹下找):

    [HKEY_LOCAL_MACHINE\init] "Launch50"="explorer.exe"     "Depend50"=hex:14,00,1e,00

    把explorer.exe改成相应的应用程序(如:MyApp.exe)

3. 【Make RunTime Image】一下 (记得千万不要Build或者Rebuild),把生成的NK.bin烧到设备中,这样就可以看到应用程序MyApp.exe自启动了。这样的好处是启动时wince桌面程序不会启动了,坏处就是当把应用程序关闭时由于原先wince桌面程序的丢失而会造成死机。



方法三:将应用程序添加到映象中,然后修改注册表,让应用程序自启动,但不替换wince的桌面程序,而是让wince像加载桌面一样加载应用程序。

步骤同方法二,只是在第二步中稍有不同:在shell.reg文件[HKEY_LOCAL_MACHINE\init]之下添加如下语句:

        "Launch80"="MyApp.exe"     "Depend50"=hex:1e,00

注: "Depend50"=hex:1e,00用来设置启动顺序和依赖程序的。若应用程序不依赖与其它程序,这句可以不加。

(原文链接)
http://blog.csdn.net/yizhou2010/article/details/6738285



-------------------------------------------------------------------------------
个人实验经历
方法一
1.我一开始是将应用程序App.exe放到C:\WINCE700\PLATFORM\SBC8600\FILES目录下
(SBC8600就是我的开发平台)

后面也可以放在C:\WINCE700\OSDesigns\SBC8600\SBC8600O\RelDir\xxx_Release,但如果放在这里的话不能build只能是make run-time image,注意中文版VS下是 “生成”->“make run-time image”

2.建立App.lnk然后将此文件复制到C:\WINCE700\PLATFORM\SBC8600\FILES目录下
后面也可以放在...\xxx_Release,
注意:App.lnk的内容 ,有引号!16表示#后面的字符,不包括引号
16#"\windows\App.exe"

3.将App.exe和App.lnk包含到内核中
  在C:\WINCE700\PLATFORM\SBC8600\FILES\platform.bib文件的FILES Section添加:

App.exe       $(_FLATRELEASEDIR)\App.exe         NK      U
App.lnk       $(_FLATRELEASEDIR)\App.lnk         NK      H

这一步做完,生成的NK.bin,启动之后可以在开发板上的windows文件夹中找到App.exe了
也就完成了我的提问,下载应用程序掉电保护

4.
在C:\WINCE700\PLATFORM\SBC8600\FILES\platform.dat中添加:
Directory("\Windows\startup"):-File("App.lnk","\Windows\App.lnk")


注意这一步的意思是使App.lnk拷贝到\Windows\startup中:然后开机调用快捷方式

好了到这里,接下去就是sysgen,漫长的等待,大概20min

然后将...\xxx_Release下的NK.bin下到开发板中



我的问题也就出现了,开机显示了一下下桌面,就自运行App.exe,但是USB鼠标没有反应了,感觉是开机USB驱动还没调用或是Power管理的问题,因为USB鼠标供电都没供上。
无奈之下尝试后面几个方法

方法三:
1 先完成方法一的1、2、3
在已完成一次sysgen的情况下,可以Copy相应的App.exe,App.lnk到...\xxx_Release下
注意:修改...\xxx_Release下的platform.bib,(不是C:\WINCE700\PLATFORM\SBC8600\FILES下的)a
不用修改platform.dat

2 在...\xxx_Release下找到shell.reg,打开添加
        "Launch80"="App.exe"
        "Depend80"=hex:14,00, 1e,00

上面有一个Launch50,直接Copy修改过来就行
因为前面已经Sysgen,在...\xxx_Release已经有修改过的platform.bib和platform.dat,还有app.lnk、app.exe,所以直接“生成”->“make run-time image”,1min就可以了
然后将...\xxx_Release下的NK.bin下到开发板中

上电重启,自运行App.exe,等了1s不到,USB鼠标供电成功
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 21:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表