hive注册表和内核啥关系啊?

wmj0402   2010-6-25 10:38 楼主
重新烧写nk注册表还能不清(就是不恢复到platform.reg中的值)?注册表不是在内核中的吗?重新烧写内核请不请注册表是在哪里做的 啊?

回复评论 (14)

注册表在内核中,但hive每次挂起时会把当前注册表复制一份放在nand中。
点赞  2010-6-25 10:50
CE的注册表分为两种,HIVE的是做为动态的数据处理使用的。这个东西我也曾经想控制他,不过最终还是放弃了。有点儿麻烦。
这个东西,重新弄是全新的,这个你放心。
点赞  2010-6-25 10:51
HIVE注册表的话应该是可以的。
我目前使用HIVE注册表加XIP,更新OS的时候做判断,如果不让它清就不会清
点赞  2010-6-25 11:20
引用: 引用 1 楼 hzxiao1981 的回复:
注册表在内核中,但hive每次挂起时会把当前注册表复制一份放在nand中。

但是重新刷内核的话,系统用内核中的还是在nand中的那个啊?
点赞  2010-6-28 10:36
引用: 引用 3 楼 veabol 的回复:
HIVE注册表的话应该是可以的。
我目前使用HIVE注册表加XIP,更新OS的时候做判断,如果不让它清就不会清

呵呵,应该在哪个地方判断啊,能不能详细说下具体位置,比较菜。。。多谢啊
点赞  2010-6-28 10:37
系统启动过程中会使用这个IOCTL_HAL_GET_HIVE_CLEAN_FLAG命令的iocontrol,在你的BSP中添加对这个的支持,然后告诉内核需要清除HIVE注册表就可以了。
点赞  2010-6-28 10:51
重新烧写hive注册表也没了。。。
点赞  2010-6-29 00:06
是重新刷内核的话,系统用内核中的还是在nand中的那个啊?
点赞  2010-6-29 00:07
引用: 引用 6 楼 veabol 的回复:
系统启动过程中会使用这个IOCTL_HAL_GET_HIVE_CLEAN_FLAG命令的iocontrol,在你的BSP中添加对这个的支持,然后告诉内核需要清除HIVE注册表就可以了。

好久没来这里了,请问韦伯大哥这个具体应该怎么实现??
最近购买了友坚6410的开发板, 发现每次download内核时都要重新对屏幕进行calibration,感觉很不爽,是不是通过对Hive注册表的控制就可以解决此问题??
请韦伯大哥多多指教
点赞  2010-6-30 20:04
用了BINFS/IMGFS的话,注册表分成两部分,一个是boot.hv,一个是default.hv。前者是后者的子集。
启动之后注册表会保存在RAM里,注册表的改动会定时flush,用户做的改动就放在一对delta hives里,即user.hv和system.hv。
重新刷了NK/XIP之后,这一对delta hives和rom hives之间的MD5校验就会失败,ce启动的时候会把这两个delta hives删除,恢复到默认注册表设置。
如果你指定了IOCTL_HAL_GET_HIVE_CLEAN_FLAG返回true,那么kernel就会删除delta hives,如果你没有动过这个IOCTL码,那么默认是false即保留delta hives。
点赞  2010-7-1 02:14
每次都要校准触摸屏是因为注册表的设置没有保存下来,你应该检查一下两个delta hives是否保存到flash等非挥发性存储器卷上了。
点赞  2010-7-1 02:15
一般来说只要更新了ROM hives——例如重新烧写了新的ROM image,那末delta hives是一定会被清掉的,这是by design的。要迁移delta hives到新的ROM image中需要在boot phase 1做一些tricky的事情。
点赞  2010-7-1 02:18
学习一下
点赞  2010-7-1 07:30
又受益匪浅啊!!感谢codewarrior的精辟讲解。
我试着改动一下
点赞  2010-7-1 09:21
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复