急急急急急急,问题继续中——注册表保存相关,问题多多,求救,问题解决可加分

snow_haoxue 2008-08-19 05:24:00
各位大虾,问题一直未能解决,还请给为帮帮忙啊

1. 目的:利用剩余的nand flash空间、实现注册表保存功能。希望nand flash的剩余磁盘空间以磁盘形式显示,可以方便用户用来保存数据等。
2. 硬件使用:Marvell PXA310(PXA310 VF-BGA-416pin 624MHz MCP、NAND 256MB、DDR SDRAM 128MB)
3. 开发环境:wince 6.0 + vs2005
4. Memory Map(comfig.bib):

;* RAM Layout: Nand boot; non IU
;* ------------------------------
;* --------------------------------------> 8400_0000
;* | Display for ULDR UI | --------------------------------------> 83D0_0000
;* --------------------------------------> 83CC_7000 | EBT RAMIMAGE (1MB) |
;* | | --------------------------------------> 83C0_0000
;* | | | EBT/IPL Stack (1MB) |
;* | | --------------------------------------> 83B0_0000
;* | | | EBT/IPL RAM (1MB-16KB) |
;* | | --------------------------------------> 83A0_4000
;* | | | EBT Pagetables (16KB) |
;* | | --------------------------------------> 83A0_0000
;* | | | IPL RAMIMAGE (1MB) |
;* | | | |
;* | | --------------------------------------> 8390_0000
;* | | | |
;* | OS RAM | -------------------------------------->
;* | |
;* | |
;* | |
;* | |
;* | |
;* | |
;* | |
;* | |
;* | |
;* | |
;* |-------------------------------| *autosize can alter the start
;* | NK RAMIMAGE |
;* | |
;* --------------------------------------> 8000_1000
;* | |
;* | EBT ARGS(4K) |
;* --------------------------------------> 8000_0000

5. nand flash相关注册表(platform.reg):
; HIVE BOOT SECTION
; Use AutoLoad\MSFlash will result in flash driver loaded in FileSys process.
; However our flash driver depends on GIO device driver so we should not use
; this possibility. Scenario with flash driver loaded to FileSys process can
; have small performance advantages.
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash]
"DriverPath"="Drivers\\BuiltIn\\MSFlash"
"LoadFlags"=dword:1
"BootPhase"=dword:0
"Order"=dword:2

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash\IMGFS]
"MountHidden"=dword:1
"MountAsROM"=dword:1
"XIP"=dword:0

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash\FATFS]
"MountAsBootable"=dword:1
"MountAsRoot"=dword:1
"Flags"=dword:00000014
"FormatTFAT"=dword:1
"EnableWriteBack"=dword:1
"CheckForFormat"=dword:1
"Util"="fatutil.dll"

; @CESYSGEN IF CE_MODULES_FSREPLXFILT
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash\FATFS\Filters\fsreplxfilt]
"Dll"="fsreplxfilt.dll"
"Order"=dword:1 ; must be loaded before other filters
; @CESYSGEN ENDIF CE_MODULES_FSREPLXFILT

; END HIVE BOOT SECTION

IF BSP_NONAND !
; HIVE BOOT SECTION
;[HKEY_LOCAL_MACHINE\System\StorageManager\IMGFS]
; "CompressionType"="XPR"
; "CompressionDll"="cecompr.dll"

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\MSFlash]
"Prefix"="DSK"
"Dll"="NandFlsh.DLL"
"Index"=dword:1
"Order"=dword:1 ; Must follow the MFP
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
"Profile"="MSFlash"
; END HIVE BOOT SECTION
ENDIF BSP_NONAND !

6. 相关问题:
1). storage manage 中,无法找到nand flash的磁盘项
2). 应该是基于问题1的原因,nand flash盘符显示无法实现,hive-based注册表保存不成功
3). 根据config.bib配置文件,文件系统应该是FATFS还是BINFS?或者说,如何判断、选择文件系统类型。
4). 如果没有实现注册保存功能,我应该如何使得断电后,校正的数据不丢失。现在的想法是:自动运行程序修改注册表,可是修改不能立即生效,触摸屏校正数据没有用啊
5). 我是否可以保注册表保存在SD卡上呢?如果可以,注册表要怎么变动?

...全文
764 44 打赏 收藏 转发到动态 举报
写回复
用AI写文章
44 条回复
切换为时间正序
请发表友善的回复…
发表回复
devilgavin 2011-04-08
  • 打赏
  • 举报
回复
我也碰到这样的问题,怎么解决的?
zhougy1984 2009-10-16
  • 打赏
  • 举报
回复
mark一下!
okvictor_20082003 2008-11-27
  • 打赏
  • 举报
回复
MARK下,有时间学习下
gsymichael 2008-11-27
  • 打赏
  • 举报
回复
如何解决的啊?
snow_haoxue 2008-11-27
  • 打赏
  • 举报
回复
问题解决了,加分、结帖,谢谢各位啊,尤其是hzdysymbol的帮忙
lovealan 2008-11-26
  • 打赏
  • 举报
回复
对于第4)个问题,很简单,系统启动时先做触摸屏坐标校正,然后读出注册表中关于触摸屏的那个子键(主要是CalibrationData),再改变你的BSP中触摸屏驱动的注册表设置,再重新编译烧NK就行了,示例如下:

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Touch]
"Priority256"=dword:64 ;hex value
"Order" = dword:1
"HighPriority256"=dword:64 ;hex value

[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH]
"DriverName"="at91sam9261ek_touch.dll"
"CalibrationData"="247,156 95,74 96,239 399,237 390,75"
"MaxCalError"=dword:10
hzdysymbol 2008-11-26
  • 打赏
  • 举报
回复
在原来的基础上再添加这个注册表项试试
[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\MSFlash]
"DriverPath"="Drivers\\BuiltIn\\MSFlash"
"LoadFlags"=dword:1
"BootPhase"=dword:0
"Order"=dword:0

在BAT中再添加这个宏定义试试
set PRJ_BOOTDEVICE_MSFLASH=1

试好了再告诉我结果
hzdysymbol 2008-11-25
  • 打赏
  • 举报
回复
1. 先试试这份注册表
; HIVE BOOT SECTION
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\MSFlash]
"Prefix"="DSK"
"Dll"="NandFlsh.DLL"
"Index"=dword:1
"Order"=dword:0
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
"Profile"="MSFlash"
"Flags"=dword:1000
"AutoFormat"=dword:1

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash]
"DefaultFileSystem"="FATFS"
"Name"= "NAND Flash1"
"Folder"="NAND Flash"
"BootPhase"=dword:0
"AutoMount"=dword:1
"AutoPart"=dword:1
"AutoFormat"=dword:1
"MountPermanent"=dword:1
IF SYSGEN_FSREGHIVE
"MountAsBootable"=dword:1
"MountHidden"=dword:0 ;;if want to hide this partition, please set it to 1
ENDIF
IF SYSGEN_FSREGHIVE!
"MountAsBootable"=dword:0
"MountHidden"=dword:0
ENDIF

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash\FATFS]
"EnableCacheWarm"=dword:0
"MountAsRoot"=dword:1
; END HIVE BOOT SECTION

; @CESYSGEN IF FILESYS_FSREGHIVE
; HIVE BOOT SECTION
[HKEY_LOCAL_MACHINE\init\BootVars]
"SystemHive"="Documents and Settings\\system.hv"
"ProfileDir"="Documents and Settings"
"Flags"=dword:3
; END HIVE BOOT SECTION
; @CESYSGEN ENDIF FILESYS_FSREGHIVE

2. 确认Workspace中选中Hive-based Regsitry, RAM and ROM file system, Fat file system, partition driver
3. 在你的BAT文件中添加set PRJ_ENABLE_FSREGHIVE=1
4。 必须clean Sysgen整个工程


snow_haoxue 2008-11-25
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 hzdysymbol 的回复:]
你的问题应该还好了,没有实现binfs,只是实现Hive-Based而已,你把现在相关的注册表信息贴出来
[/Quote]

哦,binfs、imgfs有什么区别么?在bsp的platform.reg中压根没有binfs的注册信息,只有imgfs的,如果可以能不能给我讲讲他们的区别,谢谢
以下是nand flash相关的注册表:

; HIVE BOOT SECTION
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash]
"DriverPath"="Drivers\\BuiltIn\\MSFlash"
"LoadFlags"=dword:1
"BootPhase"=dword:0
"Order"=dword:0
"Name"= "NAND Flash"
"MountHidden"=dword:0 ;test for hidden the disk
"Folder"="NAND Flash"

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash\IMGFS]
"MountHidden"=dword:1
"MountAsROM"=dword:1
"XIP"=dword:0

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash\FATFS]
"MountAsBootable"=dword:1
"MountAsRoot"=dword:1
"Flags"=dword:00000014
"FormatTFAT"=dword:1
"EnableWriteBack"=dword:1
"CheckForFormat"=dword:1
"Util"="fatutil.dll"

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\MSFlash]
"Prefix"="DSK"
"Dll"="NandFlsh.DLL"
"Index"=dword:1
"Order"=dword:0
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
"Profile"="MSFlash"
"Flags"=dword:00010000

[HKEY_LOCAL_MACHINE\init\BootVars]
"SystemHive"="NAND Flash\\system.hv"
"ProfileDir"="NAND Flash"
"Start DevMgr"=dword:1
"RegistryFlags"=dword:1
"Flags"=dword:3

; END HIVE BOOT SECTION
hzdysymbol 2008-11-25
  • 打赏
  • 举报
回复
不用添加,
你上CSDN聊天,我在上面给你留言
snow_haoxue 2008-11-25
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 hzdysymbol 的回复:]
你应该还有一些注册表项没有加入到
; HIVE BOOT SECTION
; END HIVE BOOT SECTION
里面进去
[/Quote]

我想问一下,在Workspace中有ATAPI PCI support和MSFlash driver,这两个有什么区别呢?nand flash驱动和他们有什么关系么?是不是需要添加他们中的一个呢?
中国168 2008-11-25
  • 打赏
  • 举报
回复
学习,帮顶!
hzdysymbol 2008-11-25
  • 打赏
  • 举报
回复
你应该还有一些注册表项没有加入到
; HIVE BOOT SECTION
; END HIVE BOOT SECTION
里面进去

snow_haoxue 2008-11-25
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 hzdysymbol 的回复:]
1. 先试试这份注册表
2. 确认Workspace中选中Hive-based Regsitry, RAM and ROM file system, Fat file system, partition driver
3. 在你的BAT文件中添加set PRJ_ENABLE_FSREGHIVE=1
4。 必须clean Sysgen整个工程
[/Quote]

我试了你的方法,3设置bat文件会有问题,如果我加入那个环境变量的设置,我的系统就无法启动了,调试信息也只显示“ 0 PID:0 TID:0 -OEMInit”,然后就不动了
hzdysymbol 2008-11-24
  • 打赏
  • 举报
回复
你的问题应该还好了,没有实现binfs,只是实现Hive-Based而已,你把现在相关的注册表信息贴出来
hzdysymbol 2008-11-22
  • 打赏
  • 举报
回复
下周有时间帮你看看吧,现在已经成功实现CE5.0和6.0的Hive+binfs在Samsung和Intel的平台上
Hive Base 主要跟注册表有关,Binfs的话涉及的东西会比较多一点
fan227 2008-11-22
  • 打赏
  • 举报
回复
Hive-Based registry,按照网上的搞法,我也没弄成功,不知道为什么,先放放,没办法!注册表好象网上也没有能说清楚各个键值的意义。原因没搞清楚,也不知道他们究竟是怎么搞的!
snow_haoxue 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 gooogleman 的回复:]
恭喜,什么原因啊,我的始终不出现盘符哦,你的是哪里啊?
[/Quote]

确实是有一个注册键的值不对,在以前那个版本上做的时候编译会报错,现在不报错了,wince就用了默认的或者没用那个键,朋友提醒我才有点印象,试了一下OK。但是,会出现两个nand flash,很奇怪,网上也有人遇到按他的方法该也没搞定……下周继续努力
gooogleman 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 snow_haoxue 的回复:]
忙了很久别的东西,又来做这个,现在nand flash挂载成功,盘符也可以显示了,但问题是,我想要实现注册表保存的功能,HIVE也已经加了,系统能够启动,但是以下注册表使得系统出现了一个nand flash的文件夹(不是磁盘),而nand flash的盘符名称变成了nand flash 2,请问原因是什么呢?
[HKEY_LOCAL_MACHINE\init\BootVars]
"SystemHive"="NAND Flash\\system.hv"
"ProfileDir"="NAND Flash"
"Start DevMgr"=dword:1 …
[/Quote]

恭喜,什么原因啊,我的始终不出现盘符哦,你的是哪里啊?

snow_haoxue 2008-11-21
  • 打赏
  • 举报
回复
忙了很久别的东西,又来做这个,现在nand flash挂载成功,盘符也可以显示了,但问题是,我想要实现注册表保存的功能,HIVE也已经加了,系统能够启动,但是以下注册表使得系统出现了一个nand flash的文件夹(不是磁盘),而nand flash的盘符名称变成了nand flash 2,请问原因是什么呢?
[HKEY_LOCAL_MACHINE\init\BootVars]
"SystemHive"="NAND Flash\\system.hv"
"ProfileDir"="NAND Flash"
"Start DevMgr"=dword:1
"RegistryFlags"=dword:1
"Flags"=dword:3

另外,"SystemHive"中的路径具体要怎么设置呢?我想把system.hv直接放在nand flash下
加载更多回复(24)

19,502

社区成员

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

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