An old gem that has stood the test of time. This implements the key functionality of s stream driver project (as OS subprojects with test apps) for Windows Embedded Compact and CE. Time for an major update:
Versions 3.0 and 3.5 were Standard Editions. When a driver project was generated, there were a lot of place holders as comments (what is needed to be done) in the code that implement things such as shared memory, registry access, counting driver instances, as well as driver context and open context buffers etc. This Professional Version fully implements all of those features.
In this blog, the eBoot menu is modified to to allow user selection of Clearing of the Hive or not. This is implemeneted by adding a further parameter to the BOOT_CG and BSP_ARGS structures to handle the boolean selection. The eBoot code is then extended to pass the selection up to the OS args driver. The OS args driver then is modified to get the value when requested by getting it from the structure passed to it through shared memory. This replaces the use of the dummy variable s_bClearHive as used in args.c in the previous blog.
Read the rest of entry »
The previous blog in this series demonstrated how to add a custom OAL IOCTL to the BSP. In particular it implemented the IOCTL_HAL_GET_HIVE_CLEAN_FLAG IOCTL so that it returns a fixed value to the OS when called. In this blog, that code is extended to call the BSP boot args using a custom boot arg. A fixed value is returned by boot args in this case. A later blog will pass that arg from eboot.
OAL IOCTLs are callable from OAL code to perform specific functions within the OS Kernel. The OS requires the OEM to specifically implement certain IOTLCs that it calls, and some other standard IOTCLs if implemented are automatically called by the OS. One such optional IOCTL, IOCTL_HAL_GET_HIVE_CLEAN_FLAG, will cause the OS to clear the hive registry if it passes back a TRUE when called at OS startup. These IOCTLs are normally called in kernel mode as they are called directly by the the kernel. Some IOCTLs can be called by a user mode thread as well. In our book, Professional Windows Embedded Compact 7, I covered implementing a custom OAL IOCTL for the VCEPC BSP. This blog looks at adding an OAL IOCTL with the ARM TI AM335X BSP
Booting a Windows Embedded Compact image is a three step sequence.. A raw binary of binary file or a record based binary file is used for each phase of the OS boot. Includes use of CELoader to image a target.
A new release of Windows Embedded Compact 7 is available on MSDN which is a rollup of all previous updates packaged as a new installation.
App development outside of Compact 7 Platform Builder involves using a second instance of Visual Studio for a Smartdevice .Project. The target OS must have the correct version of Corecon that VS targets it with.