Friday, September 25, 2015

Manage BSP build dependencies under Windows Embedded Compact 2013

Hi Folks,

The Build process of the Windows Embedded Compact 2013 source code is a complex process that is usually divided within different build steps.


Usually the pre-sysgen and sysgen steps are automated and part of what Microsoft provided within the installation package. So lets focus on the the Build step, the one that builds the source code of your BSP.

  • The build tool is used to compile source code and link binary modules using the build environment created during the Sysgen phase.
  • The build tool navigates inside the a directory tree to find directories containing source code.
  • It then invokes the nmake tool to perform the actual build.
  • The build tool is configured using the dirs configuration file
The DIRS files are the only way for the build engine to get through the folders to be proceed, and is a text file that should be present in any folder that contains sub-folders involved in the build process.
Folders listed in the DIRS files are proceed in the description order, this allows you to select the build order of subfolder, and therefore five you the chance to manage components dependencies.


There si a drawback when compiling source code that is split into libraries, all over the BSP subfolders. In that case due to the large amount of binaries that compose a BSP and drviers, it is not possible to do so, and an alternative solution is required at the build directive level.

Located within you source files folder, of the BSP components, the SOURCES and MAKEFILE.DEF contains the build directives, and in Windows Embedded Compact 2013, it has been introduce the module depency directives that allows build engine to postpone the build of sources files if dependency is not satisfied.

The  LINK_PRODUCES and LINK_CONSUMES directives can be used to mange those dependencies. The generated libraries are using the LINK_PRODUCES to define a library name and the sources that requires the generated library specify this requirement using the LINK_CONSUMES directive.

Library producer SOURCES sample
TARGETNAME=cspddk
TARGETTYPE=DYNLINK
RELEASETYPE=PLATFORM

LINK_PRODUCES=cspddk

Library consumer SOURCES sample
TARGETNAME=hcd
TARGETTYPE=DYNLINK

LINK_CONSUMES=cspddk
Now the hcd library, will requires the cspddk library to be built first.

Enjoy!
-Nicolas

Tuesday, September 22, 2015

Windows Embedded Compact QFEs for August 2015 have arrived!

Hi all,

the August updates for Windows Embedded Compact are available for download:


Update 22 (August 2015)


Component: CoreOS
150827_KB3091199  -  List selection changes after you quickly scroll up and down on a Windows Embedded Compact 2013 device.

Component: Internet Explorer
150831_KB3091190  -  An update rollup is available that includes several cumulative security updates for Internet Explorer for Windows Embedded Compact 2013.
150831_KB3091200  -  An exception occurs in Wininet.dll after the HttpRequestEnd() function is called on a device that is running Windows Embedded Compact 2013.       

Component: Platform
150827_KB3089335  - Kernel crashes after you add OAL code to a project and enable symmetric multiprocessing in Windows Embedded Compact 2013.

Component: SDK
150821_KB3090075  -  "Error MSB6006: "CL.exe" exited with code -1073741515" error when you build a basic application by using the ARM SDK for a Windows Embedded Compact 2013 device.

Component: Shell
150831_KB3091191  -  List entries disappear from the DateTimePicker control in an application that is running in Windows Embedded Compact 2013.

Component: Silverlight
150831_KB3089833  -  Windows Media Player stops responding when you play a .wma file on a Windows Embedded Compact 2013 device.

Component: Tools
150831_KB3088374  -  Makeimg crashes when an application is built with AppBuilder in Windows Embedded Compact 2013.
Component: Networking
150831_KB3089834  -  A handle leak occurs when a USB communication device is plugged in and removed two times on a device that is running Windows Embedded Compact 2013.
150831_KB3091201  -  The IP stack and functionality are deadlocked when you try to make a Profile Configuration File connection on Windows Embedded Compact 2013.

Update 50 (August 2015)

Fixes made in this update:

Known Issues in this update:

The Compact Test Kit (CTK) checkbox is disabled in the  "Repair Installation" of Windows Embedded Compact 7 there by not allowing to uncheck the CTK repair.

Component: Browser
150828_KB3091176 -  An update rollup is available that includes several cumulative security updates for Internet Explorer for Windows Embedded Compact 7.

Component: DSHOW
150831_KB3092496 -  In repeat mode, music player stops playing wave file after some time on a device that is running Windows Embedded 7.

Component: Security
150821_KB3087205 - An exception occurs when you build the NK.BIN file and then start SSL communications on a device that is running Windows Embedded Compact 7.

Component: USB
150821_KB3088663 - A Windows Embedded Compact 7 device stops responding when you remove and re-insert a USB hub quickly.


Fixes made in this update:

By Component:

Component:  CoreOS
150831_KB3090818 - Vulnerability in Unicode Scripts Processor could allow remote code execution.

Component:  IE
150831_KB3087217 - Memory leak when you use the WinINet API to send HTTPS requests to a server in Windows Embedded CE 6.0.
150831_KB3090744 - An update rollup is available that includes several cumulative security updates for Internet Explorer for Windows Embedded CE 6.0.

REMEMBER: It’s important to keep your system up to date!


Have fun!