Javscript would provide a navigation menu here. HOME

The PocketPC boot process

When a PocketPC boots or you insert a memory card, the OS looks for a file called AutoRun.exe in a processor specific directory on the memory card. For Intels XScale ARM this dir is call 2577. Beside this, some companies provide additional auto-setup featured applications. ITC has a fine tuned startup sequence I would like to desribe here.

During the OS starts, it looks for the applications listed in HKLM\init and starts and controls these applications, this is standard. ITC extends this with additional applications, that will be started during the boot process. At first there is an app called RegSysGen.exe. This app will be started after the kernel and before device.exe. If this app finds a RegSysGen.exe in \FFS\SYSTEM, it will transfer the execution to this exe. This app can now replace device drivers, in example if new drivers have to be installed before launching device.exe. On exit or end of processing, the application has to call SignalStarted to inform the loader, that it has been finished working. If it does not call SignalStarted within 60 seconds after launch, the original RegSysGen will call SignalStarted instead. This is done to continue the boot process for the case FFS\SYSTEM\RegSysGen.exe is faulty.

The applications listed in HKLM\init have a launch order (LaunchXX with XX beeing the order number) and some of them depend on processes that have to been started before them. The OS will not launch the next process in order, if it has unsatisfied dependencies listed under HKLM\init\DependsXX.

OK, next there can be a NoCal.exe or NoStart.exe appearing in the HKLM\init order. These tools are helpers to avoid calibrating the PocketPC screen under defined circumstances. The calibration data is stored in the registry (HKLM\HARDWARE\DeviceMap\Touch\CalibrationData). The newer tool, NoStart.exe, will compare/store/restore calibration data between Registry and EEPROM values.

The next app in order of HKLM\init is PreShell.exe. This tool will look for an exe with the same name as itself in the directory \FFS\2577. You cab use this to start a custom programmed shell. If this custom shell does not call SignalStarted, the remaining HKLM\inits will only processed if they don't depend on the SignalStarted. You can also use this executable to do something very early in the boot process. The default shell is started with shell32.exe.

After the default shell, you can have an application called PostShell.exe in \FFS\2577. This app will be searched and executed by PostShell.exe launched by HKLM\init. See previous paragraph for usage.

With this state, the possible customization is finished, now shell32.exe is started and looks for apps or links to apps within the default \Windows\StartUp directory. This is similar to desktop windows PCs. A special tool located here for ITC devices is called RunAutoRun.exe. This exe will now search for an exe called autoexec.exe in the dir 2577 of the following temporary volumes:
Compact Flash memory card
SD memory card
DiskOnChip (Object store)
Flash File Store (Object store), DiskOnChip or Flash File Store maybe mapped into object store

RunAutoRun will only execute the first found AutoRun.exe!

The default location for autorun.exe on ITC devices is the object store (mapped as Flash File Store or DiskOnChip). The ITC autorun.exe will now start several tools and continues the autostart process. It is used to install and run applications automatically. See AutoRun mechanics for more information.

Overview of ITC devices startup





additional info

custom application




\Flash File Store\SYSTEM\RegSysGen.exe

should call SignalStarted()





\Flash File Store\2577\PreShell.exe

can call SignalStarted()





\Flash File Store\2577\PostShell.exe

can call SignalStarted()





\Flash File Store\2577\AutoExec.exe






\SD MMC Disk\2577\AutoCard.exe
\SStorage Card\2577\AutoCard.exe

launched by first lines in script AutoExec.dat






script AutoExec.dat






script AutoRun.dat






script AutoUser.dat



(1) ITC is