wince6.0 VS2005打包产生NK.bin时,有没有把编译时间写进NK.bin呢?

zhengmeifu 2012-04-19 02:07:48
我现在要在底层升级NK.BIN时,判断是否是合理的,经过授权的年份编译的NK.BIN才能升级及烧写到flash。现在问题是:如何获得这个NK.BIN是什么时间编译的呢?PB有把编译时间打包进NK.BIN吗?如何找到这个时间?
...全文
327 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengmeifu 2012-06-07
  • 打赏
  • 举报
回复
哦,学习了。感谢楼上的说了这么多!!谢谢!
会思考的草 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]

引用 17 楼 的回复:
引用 16 楼 的回复:
你先在bib文件里面加上你的时间戳文件的名字……

这个是好方法,但是如何在eboot里读取找到及定位到NK.BIN里的这个时间戳文件呢?
[/Quote]
如果在eboot里面做的话就有点复杂了,牵涉到解析文件系统。比较彻底的解决办法是抛弃eboot,使用类似windows mobile系统升级的办法,定制一个极小的ce系统(WM中叫ULDR),利用此系统来加载现成的IMGFS/BINFS文件系统驱动,绕过自己解析文件系统的工作,在此系统中可以读写OS分区文件,取得当前的OS系统的时间戳,并与下载下来的OS image的时间戳比较,决定是否升级。
额外的一个好处就是,系统升级的工作也可以在此ULDR下进行,Windows mobile的系统升级过程大抵也是这样做的。bootloader根据一些flag(可能是硬件按键事件,也可能是软件触发),决定是加载OS正常启动,还是加载ULDR进入升级模式,其实Android的Recovery mode也是类似的做法。
zhengmeifu 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]
引用 16 楼 的回复:
你先在bib文件里面加上你的时间戳文件的名字……
[/Quote]
这个是好方法,但是如何在eboot里读取找到及定位到NK.BIN里的这个时间戳文件呢?
会思考的草 2012-05-31
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]

引用 14 楼 的回复:

见笑了,还真不懂怎么往NK.BIN里塞一个文件。能帮忙写几行代码吗?是不是:open(nkfile,..),seek(nkfile,...),append(nkfile,txtfile).. ?? 谢谢codewarrior

不是啊,修改bib文件,然后重新make image
[/Quote]
你先在bib文件里面加上你的时间戳文件的名字路径,然后在makeimage之前把这个时间戳文件更新一下,写上当前时间,不就行了。
会思考的草 2012-05-31
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

见笑了,还真不懂怎么往NK.BIN里塞一个文件。能帮忙写几行代码吗?是不是:open(nkfile,..),seek(nkfile,...),append(nkfile,txtfile).. ?? 谢谢codewarrior
[/Quote]
不是啊,修改bib文件,然后重新make image
zhengmeifu 2012-05-16
  • 打赏
  • 举报
回复
见笑了,还真不懂怎么往NK.BIN里塞一个文件。能帮忙写几行代码吗?是不是:open(nkfile,..),seek(nkfile,...),append(nkfile,txtfile).. ?? 谢谢codewarrior
会思考的草 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

引用 10 楼 的回复:
两个办法,
一,你搞个txt文件,修改一下toolchain,在makeimg的时候,把这个时间填进去,然后再一起打包到nk.bin里面;
二,你不是要判断能否升级吗?生成的nk.bin先加密,然后再挂到网上去,bootloader在执行升级之前,先检查nk.bin这个文件数字签名,或者用正确的私钥解密。

感谢这位大侠提供的思路。不知你有没有实现过。我觉得……
[/Quote]
第一种就是生成镜像的时候往ROM里面塞个文件,这还不简单?
zhengmeifu 2012-05-15
  • 打赏
  • 举报
回复
每天顶一下。等待高手来指点。
会思考的草 2012-05-11
  • 打赏
  • 举报
回复
两个办法,
一,你搞个txt文件,修改一下toolchain,在makeimg的时候,把这个时间填进去,然后再一起打包到nk.bin里面;
二,你不是要判断能否升级吗?生成的nk.bin先加密,然后再挂到网上去,bootloader在执行升级之前,先检查nk.bin这个文件数字签名,或者用正确的私钥解密。
zhengmeifu 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
两个办法,
一,你搞个txt文件,修改一下toolchain,在makeimg的时候,把这个时间填进去,然后再一起打包到nk.bin里面;
二,你不是要判断能否升级吗?生成的nk.bin先加密,然后再挂到网上去,bootloader在执行升级之前,先检查nk.bin这个文件数字签名,或者用正确的私钥解密。
[/Quote]
感谢这位大侠提供的思路。不知你有没有实现过。我觉得第二种比较可行。但第一种实现起来容易些。能否再详细一点描述一下第一种方法。或者如何联系你?谢谢!
zhengmeifu 2012-05-09
  • 打赏
  • 举报
回复
bootloader里没有包含系统编译时的时间记录。
zhengmeifu 2012-05-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
nk.bin进行数字签名不就行了?只有正当来源的nk.bin才有加密,非加密的统统不予更新。
[/Quote]
能详细点解释吗?数字签名在NK.BIN文件的哪里呢?谢谢!
oglsy 2012-04-29
  • 打赏
  • 举报
回复
这个我也不知道,顶一下。好像bootloader里没有关于时间设置的吧
会思考的草 2012-04-28
  • 打赏
  • 举报
回复
nk.bin进行数字签名不就行了?只有正当来源的nk.bin才有加密,非加密的统统不予更新。
zhengmeifu 2012-04-27
  • 打赏
  • 举报
回复
再顶下
zhengmeifu 2012-04-20
  • 打赏
  • 举报
回复
谢谢楼上大侠指点。我需要的时间不是进入OS后的,而是在bootloader阶段的,bootloader接收到NK.BIN镜像后要知道镜像里面的时间的。再谢!
月之海 2012-04-19
  • 打赏
  • 举报
回复
例如:#define PRO_DATE (L"COMPILE:"TEXT(__DATE__ )L"-" TEXT(__TIME__ ))
月之海 2012-04-19
  • 打赏
  • 举报
回复
获取OS的编译时间,需要os实现相关接口吧,在Deviceinfo.cpp中的函数OALIoCtlHalGetDeviceInfo实现,应用通过IOCTL_HAL_GET_DEVICE_INFO去获取。
zhengmeifu 2012-04-19
  • 打赏
  • 举报
回复
自己顶下,等待91program高手呀

19,504

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧