posts - 20 , comments - 57 , trackbacks - 0

Windows Embedded Compact

Debugging PCI bus with Windows CE
This time I will write about something I don't understand :-( Or at least not completely. Some time ago I was debugging a new Intel hardware platform (Adlink ETX-BT, Celeron J1900) and I experienced unexpected hangups during boot of the DEBUG version of my WINCE800 image. The RELEASE version never gave problems and started properly. After narrowing down the problem, I came across this piece of code inside PCIBUS.DLL (pcicfg.c line ±800) ... // Set the bus numbers & secondary latency // Need to ......

Posted On Wednesday, October 21, 2015 9:56 AM | Comments (0) | Filed Under [ Windows CE Windows Embedded Compact Microsoft Visual Studio 2012 Visual Studio 2013 Intel PCI Debugging ]

x86 bootloader for WCE8
This blog will reveal how to build the Windows CE bootloader for x86 that shipped with Windows CE 6. This bootloader also works for Windows CE 7 and 8 (CE2013) Locate the x86 bootloader code in WINCE600\PLATFORM\CEPC\SRC\... and copy it "as is" to WINCE600\PLATFORM\<YourB... Making any changes now to <YourBsp> prevents that the CEPC sources are "polluted" with your changes. You can also copy the BOOTLOADER sources to a Windows CE 7 or 8 platform directory. The bootloader ......

Posted On Monday, August 3, 2015 8:48 PM | Comments (0) | Filed Under [ Windows Embedded Compact Embedded Microsoft BootLoader ]

x86 ISR for WCE8
In Windows CE all hardware interrupts are handled by 1 Interrupt Service Routine (ISR) at the lowest level. Its main purpose is to identify the Interrupt Request (IRQ) source and handle some low level hardware clearing and resetting of the Interrupt Controller such that new interrupts can be triggered. Once the IRQ is recognized by the ISR, it is handed over to an Interrupt Service Thread (IST). This has the advantage that the hardware IRQ priority can be overruled by the IST thread priority scheduling. ......

Posted On Monday, July 13, 2015 10:23 PM | Comments (1) | Filed Under [ Windows CE Windows Embedded Compact USB UHCI EHCI APIC ACPI Interrupt IRQ PIC Intel ]

On Demand Paging in Windows CE
Recently I was working on a tool program that allowed me to read/rewrite the complete binary image of a drive (HDD) in Windows CE 8 (Compact Edition 2013). We use this program to restore a complete image to a (bootable) drive as part of the software upgrade of our device/application. At some part of writing the image to the drive, the program itself crashed with an AV while reading a static const array of integers. Debugging with Visual Studio 2012 showed that at that particular place half of the ......

Posted On Monday, May 25, 2015 2:05 PM | Comments (2) | Filed Under [ Windows CE Windows Embedded Compact RTOS Visual Studio 2012 Visual Studio 2013 ]

HPET for x86 BSP (how to build it for WCE8)
"I needed a timer". That is how we started a few blogs ago our series about APIC and ACPI. Well, here it is. HPET (High Precision Event Timer) was introduced by Intel in early 2000 to: Replace old style Intel 8253 (1981!) and 8254 timers Support more accurate timers that could be used for multimedia purposes. Hence Microsoft and Intel sometimes refers to HPET as Multimedia timers. An HPET chip consists of a 64-bit up-counter (main counter) counting at a frequency of at least 10 MHz, and a set of ......

Posted On Saturday, August 2, 2014 10:02 PM | Comments (0) | Filed Under [ Windows CE Windows Embedded Compact RTOS APIC ACPI Visual Studio 2013 HPET ]

PCI Latency Timer
In my previous blog I mentioned I was involved in searching for Windows socket data that got corrupted upon reception in a Windows CE 6 executable. The short explanation is that the Realtek 100MBit (RTL8139, RTL8101) network interface card simply couldn’t swallow high load bursts of TCP packets (The long explanation took weeks...). The Realtek card couldn’t transfer its data fast enough to the cpu’s main memory for further handling by NDIS and the Windows CE 6 TCP/IP stack. The loss of data showed ......

Posted On Tuesday, July 1, 2014 9:29 PM | Comments (0) | Filed Under [ Windows CE Windows Embedded Compact Microsoft NDIS TCP/IP ]

FtpWebRequest
As I described in my previous post, I use the Windows CE Ftp File Server for remote browsing the device's file system. I also use it to update the device's firmware. Some time ago I wrote .NET C# code to initiate the firmware upgrade from a desktop Windows PC. I decided to use the .NET System.Net.FtpWebRequest library. At first everything seemed to work quite well and the code was easy to use. Until at a certain date the firmware upgrade failed. The WireShark trace revealed "an unrecognized command" ......

Posted On Monday, September 2, 2013 8:25 PM | Comments (0) | Filed Under [ Windows CE Windows Embedded Compact Ftp FtpWebRequest Microsoft ]

Ftp server in Windows Embedded Compact 2013
With the introduction of Windows Embedded Compact 2013 (aka Windows CE 8.0), the good old File Explorer is no longer present. On itself I understand why Microsoft did this - what end-user application needs a File Explorer? - but during DEBUG development, it was/is a helpful tool. So what are your options as a developer (debugger)? - Add the Command Shell to your image. Ok if you can type fast (I am not) - Add the Telnet Server to your image. Ok if you can type fast (I am not) - Add the Ftp File Server ......

Posted On Sunday, September 1, 2013 9:22 PM | Comments (0) | Filed Under [ Windows CE Windows Embedded Compact Embedded RTOS Ftp Microsoft ]

NDIS Packet Capturing DLL
Recently I was involved in searching for Windows socket data that got corrupted upon reception in a Windows CE 6 executable. The data was transmitted from a Windows 7 desktop PC. At first it was not clear where the problem was located. Was it the Windows 7 (C#) application? Was it the Windows 7 TCP/IP stack? Was it the Windows 7 NDIS? Was it the Windows 7 network interface driver? Was it the Windows 7 PCI interface between the network card and the cpu (main memory)? Was it the Windows 7 network interface ......

Posted On Tuesday, July 1, 2014 9:25 PM | Comments (0) | Filed Under [ Windows CE Windows Embedded Compact Microsoft NDIS TCP/IP ]

APIC for x86 BSP (how to build it for WCE8)
As promised I will talk about how to replace the “old” PIC (Peripheral Interrupt Controller) with the “new” APIC (Advanced Peripheral Interrupt Controller) in a CEPC (x86) BSP. I will refer to the “MyBSP” BSP in my explanation, your clone of the CEPC BSP. As APIC is mostly only available for (Intel) x86 platforms, this talk will only be valid for x86, not ARM. The Windows CE Boot to Kernel startup phase There are a few good MSDN links that explain quite a bit about the Windows CE startup phase. This ......

Posted On Monday, June 23, 2014 8:39 PM | Comments (7) | Filed Under [ Windows CE Windows Embedded Compact Embedded RTOS Microsoft APIC ACPI ACPICA BSP Visual Studio 2013 ]

Installing the Windows Embedded Compact Edition 2013 Update for Visual Studio 2013
I wanted to install the Windows Embedded Compact Edition 2013 Update that is compatible with Visual Studio 2013. But I discovered that the install process is poorly described. What follows is what I found out (most of it) myself. The Windows Embedded Compact Edition 2013 download link itself has been updated with a more recent image named “Windows Compact Edition 2013 Update 5”. So you just need to re-download through the original link where you could find the original image (year 2012). I installed ......

Posted On Sunday, April 27, 2014 7:45 PM | Comments (2) | Filed Under [ Windows CE Windows Embedded Compact Microsoft Visual Studio 2012 Smart Device application Visual Studio 2013 ]

The ACPICA library (how to build it for WCE8)
ACPI (Advanced Configuration and Power Interface) is an open industry specification co-developed by Hewlett-Packard, Intel, Microsoft, Phoenix, and Toshiba.Download acpica-win-<date>.zip, acpitests-win-<date>.zip as well as acpica_reference_<x>.pdf and aslcompiler_<y>.pdf from http://acpica.org. Also download ACPISpec50.pdf from http://www.acpi.info to complete your documentation.Things to know before building the ACPICA libraryThe ACPICA v5.0 package consists of the following ......

Posted On Sunday, March 23, 2014 8:26 PM | Comments (3) | Filed Under [ Windows CE Windows Embedded Compact Embedded APIC ACPI ACPICA BSP ]

APIC and ACPI in Windows Embedded Compact 2013
APIC: Advanced Programmable Interrupt ControllerACPI: Advanced Configuration & Power InterfaceACPICA: ACPI Component ArchitectureI needed a timer. A timer with a granularity of < 1msec and not tied to the Windows CE 1msec kernel tick. I wanted to program the timer hardware, raise an interrupt and signal an event to trigger specific code in my application.I used to do this with custom timer hardware in an FPGA design that resides on my Intel x86 based board (as a PCI device) and my own driver. ......

Posted On Sunday, March 23, 2014 1:46 PM | Comments (0) | Filed Under [ Windows CE Windows Embedded Compact Embedded RTOS APIC ACPI ACPICA ]

SetDbgZone
In my previous post I spoke about finding a problem with the Intel UHCI USB driver. In this post I will explain how we found the cause of problem and what tools we used. Already a long time ago I wrote a little tool called ‘SetDbgZone.exe’. What is it and why did I wrote it? Well, sometimes your Windows CE image drivers suffer from intermittent problems that you didn’t encounter when you were developing and testing the driver. Even worse, a bug shows up in a RELEASE build and not in a DEBUG build. ......

Posted On Tuesday, December 31, 2013 4:51 PM | Comments (0) | Filed Under [ Windows CE Windows Embedded Compact Embedded Microsoft CeLog ]

Intel USB Host Controller
When using Intel hardware for your embedded platform, you most likely will include the UHCI (1.1) and/or EHCI (2.0) USB drivers in your Windows CE image. Already some time ago I noticed that when unplugging a USB device (keyboard, mouse, memory stick …) and inserting it again, the UI stalled for a moment while the USB device was inserted again. I also noticed on a particular hardware platform where 2 CAN channels were used, that the CAN communication failed with timeouts of a few 100milliseconds. ......

Posted On Monday, December 30, 2013 12:40 PM | Comments (1) | Filed Under [ Windows CE Windows Embedded Compact USB UHCI EHCI ]

Building Windows CE 6 or 7 Smart Device Application with Visual Studio 2012 (Part 2)
In Part 1 of this blog post we learned how to create a Visual Studio 2012 compatible Windows CE 6 or 7 SDK. Now I show you how you can create Visual Studio 2012 C++ projects (vcxproj) for it. Or if you want, how to upgrade your Visual Studio 2008 projects (vcproj) for Windows CE 6/7 to Visual Studio 2012 projects (vcxproj) for Windows CE 6/7. If you followed the steps in Part 1 carefully, you should have now the following situation (the same applies to Windows CE 7): A Windows CE 6 SDK folder compatible ......

Posted On Friday, September 13, 2013 10:19 PM | Comments (5) | Filed Under [ Windows CE Windows Embedded Compact Microsoft Visual Studio 2012 Smart Device application ]

Building Windows CE 6 or 7 Smart Device Application with Visual Studio 2012 (Part 1)
With every new release of Windows CE (Windows Embedded CE, Windows Embedded Compact Edition) version 4.x, 5.0, 6.0, 7.0, 2013 (aka 8.0), people ask what version of Visual Studio they should use for Smart Device development. And how much it is different from the Visual Studio you use for developing the OS image, or how much it is different from the latest Visual Studio version? For those people that don’t understand what I am talking, a summary: OS image : the image (NK.BIN) that will include kernel, ......

Posted On Friday, September 13, 2013 10:00 PM | Comments (25) | Filed Under [ Windows CE Windows Embedded Compact Microsoft Visual Studio 2012 Smart Device application ]

Windows Embedded Compact 2013 Smart Device application projects in Visual Studio 2012 (and their bugs)
After I built my first new Windows Embedded Compact 2013 image (named “MyDevice8”) and corresponding SDK, I was eager to test how you can build Smart Device applications with VS2012. I mean with that: without the need to install Platform Builder, but only the SDK and create a VS2012 Smart Device application project (as you would do for a desktop WIN32 project). Before you can start however creating a new “MyDevice8” based project, these are the installation steps to follow: Install Visual Studio ......

Posted On Friday, September 6, 2013 10:54 PM | Comments (9) | Filed Under [ Windows CE Windows Embedded Compact Microsoft Visual Studio 2012 Smart Device application ]

Visual Studio 2012 + Windows Embedded Compact 2013 on Virtual Machine with Windows 7
Many people run their Windows CE development environment (Platform Builder) on a Virtual Machine. In case you screw up things in the PUBLIC or PRIVATE folder, you can quickly return to the initial situation by restoring a previous snapshot. So do I. Moreover, during lengthy rebuilds, I usually return to my host PC to do other work. If not, I get a coffee. Since a few months I run my Virtual Machines by means of Oracle’s free (like) VirtualBox VM software http://www.virtualbox.org. My setup is a Windows ......

Posted On Tuesday, September 3, 2013 7:56 PM | Comments (2) | Filed Under [ Windows CE Windows Embedded Compact Microsoft Visual Studio 2012 ]

Hi there
I started working with Windows CE (aka Windows Embedded Compact) with version 4.2 somewhere in 2003, if I remember it well. Over the last 10 years I build some experience with it, so I thought it might be interesting for the few interested out there to share my (Windows CE) knowledge with you.Making Windows CE images is not my daily main task - I am an embedded C++ software designer making industrial machines - but for most of our applications we need an RTOS and we use Windows CE for that. Back ......

Posted On Sunday, September 1, 2013 8:08 PM | Comments (0) | Filed Under [ Windows CE Windows Embedded Compact Embedded RTOS Microsoft ]

Powered by: