Did you start out with the Hive registry enabled in your OS project? If not, have you done a *clean* SYSGEN since adding it? If not, doing so might help.
Hi Tom, yes i've tried clean sysgen twice, exactly same result below. All i've done is to put SDCARD loader reg settings in HIVE_BOOT_SECTION as listed in first mail. Have I missed anything? "Tom Gensel (eMVP)" <nos...@please.com> wrote in message news:43737db9$0$6845$bb4e3ad8@newscene.com... Did you start out with the Hive registry enabled in your OS project? If not, have you done a *clean* SYSGEN since adding it? If not, doing so might help.
There are some very confusing messages in your debug output. Did you remember to add the Hive Registry component from the catalog to your OS project? It looks as though the RAM-based registry is being used. Check your environment and make sure SYSGEN_FSREGHIVE is set to 1.
In Ceconfig.h FILESYS_FSREGHIVE is set to 1. RAM registry works fine this only happened when switching to Hive. I've done a clean rebuild twice to make sure it wasn't that error. "Tom Gensel (eMVP)" <nos...@please.com> wrote in message news:4373cf5a$0$9115$bb4e3ad8@newscene.com... There are some very confusing messages in your debug output. Did you remember to add the Hive Registry component from the catalog to your OS project? It looks as though the RAM-based registry is being used. Check your environment and make sure SYSGEN_FSREGHIVE is set to 1.
I have only a couple more suggestions for you at this point:
1) Turn on the filesys debug zones for you debug output. This is done by adding the following registry entry to the desktop PC you are running Platform Builder from:
This may provide additional debug output to help solve the problem.
2) Make sure your SD card driver works, that it is getting loaded, the SD card is present and not corrupt, and that the filesystem is mounted successfully.
3) Check you build log, especially the MAKEIMG output and make sure no errors occurred during the build.
Going back to your original suggestion on the clean, i actually deleted the entire contents of the debug release directory and then did a rebuild. This has allowed the boot to move further. Not sure why clean sysgen didn't work. Now it gets as far as device manager loading the Sd card LOADER in the boot phase. Then the SD card loader calls ActivateDevice on the actual Sd card driver. Then createdevice fails on this. Actually on LoadDriver(sdmmc.dll) error= ERROR_FILE_NOT_FOUND
This is where i am unsure. As the Sd card registry settings are being created by the loader, will they be in the boot hive? Would it be even possible to modify the loader code in some way to allow the sdmmc.dll to be part of the boot hive.
Loaded symbols for 'C:\WINCE500\PBWORKSPACES\MP3\RELDIR\XSC1BD_ARMV4I_DEBUG\DEVICE.EXE' 4294767898 PID:43c30026 TID:43c30002 0x83c39dbc: InitSharedHeap: 46200000 0 c 4294767899 PID:43c30026 TID:43c30002 0x83c39dbc: InitSharedHeap: return 46200060 4294767903 PID:e3c703da TID:e3c703b6 0x83c70174: FS: Waiting for device to signal BootPhase1 completion 4294768054 PID:43c30026 TID:43c30002 0x83c39dbc: *** DLL_PROCESS_ATTACH - Current Process: 0x42, ID: 0x43c30026 *** 4294768137 PID:43c30026 TID:43c30002 0x83c39dbc: +InitDeviceFileSystems 4294768140 PID:e3c703da TID:43c30002 0x83c39dbc: FS: Registering file system $device, index 5, flags 0x00000001 4294768142 PID:e3c703da TID:43c30002 0x83c39dbc: FS: Registering file system $bus, index 6, flags 0x00000001 4294768143 PID:43c30026 TID:43c30002 0x83c39dbc: -InitDeviceFileSystems: status is 1 4294768149 PID:43c30026 TID:43c30002 0x83c39dbc: >>> Loading module ceddk.dll at address 0x03CC0000-0x03CC9000 (RW data at 0x01FDD000-0x01FDD0C4) Loaded symbols for 'C:\WINCE500\PBWORKSPACES\MP3\RELDIR\XSC1BD_ARMV4I_DEBUG\CEDDK.DLL' 4294768152 PID:43c30026 TID:43c30002 0x83c39dbc: Ceddk!CalibrateStallCounter: Enter 4294768158 PID:43c30026 TID:43c30002 0x83c39dbc: Ceddk!CalibrateStallCounter: Could not find stall counter 4294768161 PID:43c30026 TID:43c30002 0x83c39dbc: Ceddk!BeginCalibration: min(3687) max(4097) 4294768182 PID:43c30026 TID:43c30002 0x83c39dbc: Ceddk!BeginCalibration: Elapsed is 3704 4294768183 PID:43c30026 TID:43c30002 0x83c39dbc: Ceddk!BeginCalibration: Delay is 3 4294768249 PID:43c30026 TID:43c30002 0x83c39dbc: DEVICE!DevloadInit 4294768252 PID:43c30026 TID:43c30002 0x83c39dbc: DEVICE!InitDevices: Root Key is Drivers\BuiltIn. 4294768255 PID:43c30026 TID:43c30002 0x83c39dbc: DEVICE!RegReadActivationValues RegQueryValueEx(Drivers\BuiltIn\Prefix) returned 2 4294768256 PID:43c30026 TID:43c30002 0x83c39dbc: DEVICE!RegReadActivationValues RegQueryValueEx(Drivers\BuiltIn\BusPrefix) returned 2 4294768294 PID:43c30026 TID:43c30002 0x83c39dbc: >>> Loading module busenum.dll at address 0x03EF0000-0x03EFA000 (RW data at 0x01FF8000-0x01FF8514) Loaded symbols for 'C:\WINCE500\PBWORKSPACES\MP3\RELDIR\XSC1BD_ARMV4I_DEBUG\BUSENUM.DLL' 4294768400 PID:43c30026 TID:43c30002 0x83c39dbc: DEVICE!RegReadActivationValues RegQueryValueEx(Drivers\BuiltIn\sdmmcloader\BusPrefix) returned 2 4294768427 PID:43c30026 TID:43c30002 0x83c39dbc: >>> Loading module sdmmc_loader.dll at address 0x02D40000-0x02D46000 (RW data at 0x01F0F000-0x01F0F4DC) Loaded symbols for 'C:\WINCE500\PBWORKSPACES\MP3\RELDIR\XSC1BD_ARMV4I_DEBUG\SDMMC_LOADER.DLL' 4294768524 PID:43c30026 TID:43c30002 0x83c39dbc: SDMMCLoader : DLL_PROCESS_ATTACH 4294768545 PID:e3c703da TID:e3c703b6 0x83c70174: FILESYS: Starting device and waiting for boot file system. 4294768649 PID:43c30026 TID:c3bd30f2 0x83bd3838: DoRegSetUp is done successfully 4294768652 PID:43c30026 TID:c3bd30f2 0x83bd3838: DEVICE!RegReadActivationValues RegQueryValueEx(Drivers\BuiltIn\sdmmc\BusPrefix) returned 2 4294768730 PID:43c30026 TID:c3bd30f2 0x83bd3838: DEVICE!CreateDevice: couldn't load 'sdmmc.dll' -- error 126 4294768731 PID:43c30026 TID:c3bd30f2 0x83bd3838: CreateDevice: creation of type 'DSK', index 1, lib 'sdmmc.dll' returning 0x00000000, error code 2 4294768736 PID:43c30026 TID:c3bd30f2 0x83bd3838: DEVICE!I_ActivateDeviceEx: couldn't activate: prefix DSK, index 1, dll sdmmc.dll, context 0x59c78
1) Turn on the filesys debug zones for you debug output. This is done by adding the following registry entry to the desktop PC you are running Platform Builder from:
This may provide additional debug output to help solve the problem.
2) Make sure your SD card driver works, that it is getting loaded, the SD card is present and not corrupt, and that the filesystem is mounted successfully.
3) Check you build log, especially the MAKEIMG output and make sure no errors occurred during the build.
Hi, you have to set: "MountFlags"=dword:2 on the Storage Manager profile that contains contains the hive registry. In your case it's: [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SDMMC] Maybe this helps. Gunnar
> Hi, > you have to set: > "MountFlags"=dword:2 > on the Storage Manager profile that contains contains the hive > registry. In your case it's: > [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SDMMC] > Maybe this helps. > Gunnar
Yes, MountAsBootable=1 and MountFlags=2 are equivalent; either works in CE 5.0. I guess MountAsBootabe is preferred, probably if for no other reason than that it conveys more meaning to the reader.
Tom Gensel (eMVP)
"ms" <m...@discussions.microsoft.com> wrote in message
> The docs say that flag is no longer used in V5.0. They say use > MountasBootable which i've set to 1.
> "Gunnar Frenzel" <Gunnar_Fren...@web.de> wrote in message > news:1131705073.247804.323160@f14g2000cwb.googlegroups.com... >> Hi, >> you have to set: >> "MountFlags"=dword:2 >> on the Storage Manager profile that contains contains the hive >> registry. In your case it's: >> [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SDMMC] >> Maybe this helps. >> Gunnar
Well, this is good, because it means you've gotten the OS loading the registry hives correctly which was you problem before.
The obvious question now is - IS the sdmmc.dll file in your image? The error strongly suggests it is not, so check your CE.BIB or MAKEIMG ouput and make sure it's getting in there.
Changes made to the registry at this point are being stored in the boot hive. Eventually, when filesys swaps out the boot hive, it will migrate those changes into the system hive.
Hi Tom, it is in my image. I think the problem i have is the reg settings for sdmmc.dll are not in the platform.reg file as its is loaded by the sd loader dll which creates the reg keys. This driver/loader comes from the XSC1BD BSP in case you are familiar with this.The question is where do these reg keys go. Will they be in the boot.hive, i guess not as there won't be the ;HIVE BOOT SECTION tags around it.
So what i need to know is it possible to create reg keys targeted for the boot hive section in my sd loader dll? "Tom Gensel (eMVP)" <nos...@please.com> wrote in message news:43749d7e$0$6851$bb4e3ad8@newscene.com... Well, this is good, because it means you've gotten the OS loading the registry hives correctly which was you problem before.
The obvious question now is - IS the sdmmc.dll file in your image? The error strongly suggests it is not, so check your CE.BIB or MAKEIMG ouput and make sure it's getting in there.
Changes made to the registry at this point are being stored in the boot hive. Eventually, when filesys swaps out the boot hive, it will migrate those changes into the system hive.
You must have missed the point of my statement that "Changes made to the registry at this point are being stored in the boot hive". Okay, actually that is the boot HIVES (plural) as there are two, a ROM root and a virtual RAM for temporary storage of changes. If your loader creates registry keys before the system hive is mounted, they are created in the RAM boot hive. Once the system hive is mounted, changes made to the boot hive are migrated over to the system hive. But, at any point prior to the mounting of the system hive, the boot hive contains ALL of the pre-defined registry keys and all writes to the registry affect the boot hive and all reads come from either the RAM or the root ROM boot hive. There is nothing you need to do to account for the boot hive from any code running on the system. It is only in your registry configuration (.REG) files that you need to worry about this since the presence or absence of the HIVE BOOT SECTION determines, at image build time, whether registry entries are placed in the ROM boot hive or the ROM default hive which is used to initialize the system hive when it is first created.
So, instead of worrying about the registry entries your loader is creating, the message "DEVICE!CreateDevice: couldn't load 'sdmmc.dll' -- error 126", where error 126 ==> ERROR_MOD_NOT_FOUND, suggests that DEVICE.EXE could not load the DLL. You should find the cause of this particular error.
Ok Tom, you were right it was a problem with the sdmmc.dll not getting included in the platform.bib. Sorry but i did at one stage have the SDcard mounted when using ram hive so something must have happened in between. "Tom Gensel (eMVP)" <nos...@please.com> wrote in message news:4376bec4$0$6821$bb4e3ad8@newscene.com... You must have missed the point of my statement that "Changes made to the registry at this point are being stored in the boot hive". Okay, actually that is the boot HIVES (plural) as there are two, a ROM root and a virtual RAM for temporary storage of changes. If your loader creates registry keys before the system hive is mounted, they are created in the RAM boot hive. Once the system hive is mounted, changes made to the boot hive are migrated over to the system hive. But, at any point prior to the mounting of the system hive, the boot hive contains ALL of the pre-defined registry keys and all writes to the registry affect the boot hive and all reads come from either the RAM or the root ROM boot hive. There is nothing you need to do to account for the boot hive from any code running on the system. It is only in your registry configuration (.REG) files that you need to worry about this since the presence or absence of the HIVE BOOT SECTION determines, at image build time, whether registry entries are placed in the ROM boot hive or the ROM default hive which is used to initialize the system hive when it is first created.
So, instead of worrying about the registry entries your loader is creating, the message "DEVICE!CreateDevice: couldn't load 'sdmmc.dll' -- error 126", where error 126 ==> ERROR_MOD_NOT_FOUND, suggests that DEVICE.EXE could not load the DLL. You should find the cause of this particular error.