Windows Embedded CE and Windows Mobile (September 30, 2008)
Chat Topic: Windows Embedded CE and Windows Mobile
Date: Tuesday, September 30, 2008
Please note: portions of this chat have been edited for clarity.
Sue Loh [MS] (Moderator):
Welcome to today’s public chat. Our chat today covers the topic of Windows Embedded CE and Windows Mobile! Before we begin, I would like
to welcome our Experts for today’s chat. I will have them introduce themselves now.
Introductions:
luisca_MSFT (Expert):
Hello. I am Luis Cabrera, I am a design engineer currently working on the windows mobile shell. In the past I have also worked on the SDK, and the Windows Mobile managed APIs.
TomGet [MS] (Expert):
My name is Tom. I work on graphics and multimedia.
Sing Wee [MS] (Expert):
Hi! I'm Sing Wee, part of the General Embedded BSP Test Team.
MikeCal [msft] (Expert):
Hi, I'm Mike Calligaro and I'm a developer on the kernel debugger.
mikehall_ms (Moderator):
Hi, I'm Mike Hall, Software Architect for Windows Embedded CE.
Matt Gosline [MSFT] (Expert):
Hi - My name is Matt and I am a developer on the Win CE device drivers team.
Rob Williams [MSFT] (Expert):
Hey All -- I'm Rob Williams and I'm a developer who works on SQM/Watson and the Kernel Debugger
Travis Hobrla [MS] (Expert):
Hello, my name is Travis Hobrla and I'm a developer on the Windows CE BSP team.
Jason Peterson [MS] (Expert):
Hi, I'm Jason Peterson, I develop samples for the Windows Mobile SDK.
Sue Loh [MS] (Moderator):
Hi, I’m Sue Loh, a developer in the Windows Devices Core team at Microsoft. I work on the remote tools team, and have previous experience with the kernel and file system. I’m also moderating today’s chat. I hope we can answer some questions for you today!
GLanger_MS (Expert):
Hi, I'm Glen Langer, a PM for BSPs on the Windows Embedded CE team.
Ryan Ward [MSFT] (Expert):
Hi, I'm Ryan Ward and I'm a Test Developer on the Platform Builder IDE team
Kevin (Expert):
Hello, I am Kevin I am a software tester for Windows Mobile 7
AlSun [MS] (Expert):
Hi, my name is Albert and I'm a PM on the Multimedia team.
Marwan [MS] (Expert):
Hi, my name is Marwan and I'm a PM on the BSP/Drivers team.
luciad_msft (Expert):
My name is Lucia and I'm a developer on Windows Mobile Multimedia.
davbo_MSFTMultimedia (Expert):
Hi, I'm David Boyce, Microsoft Multimedia Group (DirectShow, Protocols) for Windows CE Embedded
kurtken_MSFT (Expert):
Hi, I'm Kurt Kennett and I'm a Dev manager in the Windows Devices Core OS team.
OguzS [MSFT] (Expert):
Hi, I'm Oguz Sinanoglu and I'm a developer in the Windows Devices Core OS team
Sue Loh [MS] (Moderator):
Let’s begin the chat!
Start of chat:
Travis Hobrla [MS] (Expert):
Q: 1> Can ARM BSPs be used as mentioned in platform builder/ msdn documentation for ARM platforms of different OEMs or OEM supplied BSP is required etc? or for same MCU diff partners offer BSPs along with OEM which one to choose?
A: The BSP needs to be specific to the hardware implementation. So, ARM BSPs included with Platform Builder can only be used for those specific hardware boards. For similar ARM boards (perhaps a board derived from the same chipset or system-on-chip), you can reuse some of the code that is included with platform builder, but you need a BSP that is specific to the final hardware.
Travis Hobrla [MS] (Expert):
Q: 4> suitable hardware for wince evaluation comment on CEPC as one candidate ?
A: CEPC is an easy candidate for CE evaluation, really you just need a CE-supported PCI network card like the RTL8139.
Travis Hobrla [MS] (Expert):
Q: 3> feasibility of voice and web cam interface over USB to wince device? need of drivers or anything in built to wince6.0r2
A: Yes, you would need drivers for the USB webcam. I believe Microsoft posted a sample of this that you could use as a starting point.
davbo_MSFTMultimedia (Expert):
Q: 3> feasibility of voice and web cam interface over USB to wince device? need of drivers or anything in built to wince6.0r2
A: There is a Web Camera Sample in DirectShow using the ICaptureGraph - refer to MSDN https://msdn.microsoft.com/en-us/library/ms879577.aspx
davbo_MSFTMultimedia (Expert):
Camera Camera Capture Graph https://msdn.microsoft.com/en-us/library/ms880617.aspx
C++ Win32 x ICaptureGraphBuilder2 Interface https://msdn.microsoft.com/en-us/library/ms893738.aspx Demonstrates the basic video capture functionalities using the native Camera APIs. Captures and encodes a video clip in WMV format. Captures and encodes a still image in jpeg format.
Folder: \Cameracapture
Camera https://msdn.microsoft.com/en-us/library/ms880615.aspx
C++ Win32, C# x x SHCameraCapture https://msdn.microsoft.com/en-us/library/aa454996.aspx,
CameraCaptureDialog Class https://msdn.microsoft.com/en-us/library/microsoft.windowsmobile.forms.cameracapturedialog.aspx
Take pictures and videos using the native Camera Capture API.
Folder: \Cecamera
davbo_MSFTMultimedia (Expert):
Q: for CEPC evaluation, can i use the web camera to usb in wince applications?
A: Yes you can develop Web Camera applications against the CEPC using DirectShow. Here is a link for some sample code for the DirectShow interfaces into USB and WebCamera capture https://msdn.microsoft.com/en-us/library/ms879577.aspx look under camera and there are 2 examples.
mikehall_ms (Moderator):
Q: 6>can i convert the eval license of 180 days into product runtime without going for redesigning image?
A: You will need to use the full version of Windows CE development tools to stamp a runtime image with the license key - your operating system project doesn't need to change.
Travis Hobrla [MS] (Expert):
Q: 9> can i boot wince and win std on same hardware? one for low level app scenarios like sensor measurements and audio communictions and one for high end apps like digital forms and handheld terminal, speech assistant etc?
A: You can, but if you want to boot them simultaneously you'd need two cores and a lot of synchronization to make sure they don't compete for the same devices.
mikehall_ms (Moderator):
Q: 9> can i boot wince and win std on same hardware? one for low level app scenarios like sensor measurements and audio communictions and one for high end apps like digital forms and handheld terminal, speech assistant etc?
A: I'm not sure whether you are asking whether its possible to boot Windows CE and Windows Embedded Standard at the same time, or dual-boot. There are two answers... 1) boot WinCE and WES at the same time, Kuka has a product called CEWin that boots Windows CE and Windows Embedded Standard at the same time, there are other similar products from companies like Real Time Systems (hypervisor), 2) dual boot - yes, this is do-able, you would need to setup the appropriate partitions and bootloaders (boot.ini, bios loader etc...)
TomGet [MS] (Expert):
Q: is there any time schedule to integrate current windows embedded ce 6 kernel (without 32 processes limitation) into windows mobile?
A: Unfortunately, we are not allowed to discuss future plans in this forum.
MikeCal [msft] (Expert):
Q: 2>do i need a streaming file driver for sensor at COM port ?
A: If you are writing the BSP, you can do whatever you want with respect to how you write your drivers. The stream driver interface is what we suggest, and our samples and MDDs use the stream model. But if you want to write your own driver style, you can. If you're asking about streaming files over serial, that's not something we require.
PaulT (Expert):
Q: We need to know how much memory are taken by our program (while running). We suspect having a memory fragmentation problem. We already tried using Remote Heap Walker but every time we double click on our program process the Remote Heap Walker crash. Is there any way by Windows CE API to get memory usage of our program process? I mean display it in the main windows title refreshed by a timer. I already post on "microsoft.public.windowsce.embedded.vc" but I did not get the whole response to my query.
A: What was the problem with the response in the newsgroup? "Incomplete" doesn't tell us anything useful...
PaulT (Expert):
Q: I only get the following link as response ; https://groups.google.nl/group/microsoft.public.windowsce.platbuilder/browse_thread/thread/719b343ad67bd86a/2e5151379f42bfb8?hl=nl&lnk=gst&q=heap+memory+per+process#2e5151379f42bfb8 There a method on how to get memory usage but not only for my program process.
A: So, the basic request is, How do I find out if I have a fragmentation problem or a leak? You can use the AppVerifier tool, depending on what sort of programming you're doing, or you can buy Entrek's TOOLBOX, which is what I use. For fragmentation, you're pretty much stuck with Heap tools. Maybe Entrek's version would be better for you, but, really, you're going to have to figure out if it's a fragmentation problem by inspecting your code!
PaulT (Expert):
Q: I'm already using Entrek Toolbox and we don't having any memory/resource leak.
A: Erkis: OK, so the only potential source of problems that you've identified is "fragmentation". What exactly *is* the problem? It might easily be that your problem is completely unrelated to this, but without knowing what the problem is, we're fishing in the dark.
PaulT (Expert):
Q: What we need to know it how much memory uses our program process and how much memory is still free for it. After several hour that application is running it being very slow.
A: And it's only your program that's slow or the whole system, even when your application is idle? It seems that the allocation map that TOOLBOX generates for you would tell you if you're constantly making allocation after allocation after allocation (that's a poor design, of course). If you're not doing lots of memory allocation, I'd look for another explanation. If you believe that it is fragmentation, then you have to address that, anyway. Knowing for sure doesn't fix the problem, only get you started working on it.
PaulT (Expert):
Q: Is there any way getting those information using Windows CE API?
A: Sure, or Entrek wouldn't be able to do it. However, there's no way to magically GetMeAListOfAllAllocatedBlocks(), of course; they intercept calls to the various memory allocation calls and record them before calling the original versions (that's what happens when you "instrument" your application in TOOLBOX). If you're writing code in C++, the run-time library allocates a big chunk from the system, then suballocates it when you call new(), so the Win32 API doesn't know how many allocations you have at a granular level. It just knows that, say, twenty 64k blocks of RAM are allocated to your application heap.
Sue Loh [MS] (Moderator):
Q: Is there any way getting those information using Windows CE API?
A: Inside an application you can call GlobalMemoryStatus to find out how much memory is in use. That only works for the current process though. You can get the same information by using VirtualQuery to iterate through the process memory space. If you think it's just heap, you can use ToolHelp to look at heap allocations. Also, a good tool for looking at heap leaks is the Application Verifier from Microsoft.
PaulT (Expert):
Q: The application is running on the same Dialog (Idle if you want). The only allocation here is about 30 CString per 500ms. Average length of CString is 20 chars and they are allocate on Stack.
A: Even if you allocate the object on the stack, isn't the data allocated dynamically? I never use MFC (it's a pig), so I'm not sure about that. You might create your own string class that does something smarter and use that instead. When you have your own class, you can easily change how allocations are made or avoid fragmentation entirely by making all of the allocations for a specific type of object of fixed size.
PaulT (Expert):
Q: This is a path we've explored yesterday I mean write our own CString class with a fixed size allocation. Maybe it will help us to reduce fragmentation. Else do you have any other clues about that problem?
A: You haven't, frankly, told us enough to even make a guess. We'd actually have to know what the application is doing, how often, and how, and what the magnitude of the problem is and how you are measuring it. A newsgroup thread is a good way to do this, but ask the question about addressing the slow performance over time, not as a question about "how to find out about memory". That assumes the problem and the solution...
PaulT (Expert):
Q: If our problem is memory fragmentation could that crash our application after a long time running ?
A: Theoretically, yes, but that would be a pretty degenerate case. It would probably eventually not be able to satisfy a request for memory because the OS wouldn't have any more to give and the run-time library would not have a block of the right size. However, allocate-process-deallocate is not a pattern that would be likely at all to cause that problem.
davbo_MSFTMultimedia (Expert):
Q: If our problem is memory fragmentation could that crash our application after a long time running ?
A: It's would be good to understand the type of memory fragmentation you are concerned with - for virtual memory the shell will put up a warning dialog and there are other notification events you can respond to in your application. Here is a good embedded article on memory management. https://msdn.microsoft.com/en-us/library/aa454885.aspx#effective_memory_storage_power_mgmt_wm5_topic2
Sue Loh [MS] (Moderator):
Q: If our problem is memory fragmentation could that crash our application after a long time running ?
A: Only if your application is written in such a way that it cannot handle out-of-memory errors...
PaulT (Expert):
Q: Our application is pooling Serial Port RS-232) (MODBUS) for controlling/monitoring automation system. We have about 40 dialog in memory but only one is showing and only this one received a message for pooling about 20 request on serial port.
A: And that's all it does? Monitor? It just grabs the strings and throws them away? I have serial port programs that operate that way and they will run for months with no effect on the speed of operation. You're not telling us something. If it were me: 1) throw away MFC, 2) read the code and figure out what the allocation pattern is; if it's a problem, fix it, 3) figure out what is actually slow; is it allocation of memory? serial port I/O? something else you haven't told us about? add logging to your program and use GetTickCount() or a profiler to figure out where the time is going. Maybe MFC is leaking window handles? Maybe you're opening the serial port over and over without closing it?
Travis Hobrla [MS] (Expert):
Q: 5> 5.0 or 6.0r2 as consultants say its not yet stable?
A: This really depends on what expertise you have in-house and what features you need. CE6 removes many memory limitations and has several additional features.
PaulT (Expert):
Q: I'm trying to "port" the MSDN sample of Alex Feinman's Hosting ActiveX controls to Win CE 5.0 / ARM. His sample works great in PPC 2003 as written but I cannot seem to get Flash swf's to load and "fire" - start running. Is this even possible?
A: And where did you get a Flash ActiveX for Windows CE? The desktop one, of course, won't work. There is a Flash version for Windows CE, but it's not free. I think that you need to contact BSquare about licensing it.
mikehall_ms (Moderator):
Q: Trying to host BSquare's Flash on .NET CF 2.0 Form, flash appears black, loadmovie does nothing and no event handlers are ever called. Using the MSDN sample HostingLibrary on Win CE 5.0 build instead of PPC 2003. swf loads manually w/ Flash lite & plays.
A: You should talk to bSquare about their Flash Lite implementation - They may even have a sample that shows how to use their Flash Lite implementation!
Travis Hobrla [MS] (Expert):
Q: 14>i want headless configuration i.e. no UI on my wince device for some scenarios and for some i want a high end UI pad so i plan external ui pad (USB), can it be made plug and play or i have to boot again for the new scenario? or PnP support
A: Can you define what you mean by plug and play? Certainly you can create a USB device that immediate starts a display path. You may need to modify the USB host driver for your BSP, but you shouldn't need to reboot to get this to work.
kurtken_MSFT (Expert):
Q: Is there a way to generate a boot loader similar binary rom code which is less than 4K bytes by changing .bib file? I mean .exe file has 4 k head and seems it will cause trouble if I strip of them if I change the ROMSTART address only.
A: It is not easy. You could manually strip the 4k jump page at the start of the image, but you would have to adjust your BIB file and your oemaddresstable values to match the moved file. Is there some reason you need a binary that small?
davbo_MSFTMultimedia (Expert):
Q: 16> wince to servers best guide for connectivity over BT, WLAN and cellular internet connection application?
A: For device to Server communication look into WSD - Windows Web Services for Devices which using SOAP messages w/ XML for communication
WSD Info: https://msdn.microsoft.com/en-us/library/aa826001.aspx
PaulT (Expert):
Q: 8> suitable hardware platform for BT device and minimum memory it may take for a complete BT protocol stack, internet stack and all the supported BT profiles for evaluation of a internet data acqusition device
A: I'll give my opinion on this: "A hardware platform as close to whatever you actually would use in production as you can find". There's no use using a PC running a Pentium 4 at 2GHz, if you plan to build a device that runs a PXA255 at 200MHz for production. I would think that a device with, say, 128MB of RAM and suitable storage for the operating system image, nk.bin, either flash or a storage device like a hard disk or PCMCIA card, would be enough for experimentation.
Greg Scott [MS] (Expert):
Q: (BT uses mobile phone modem as gate way ) do i need phone modem's driver on this wince host eg nokia's?
A: No, you should be able to use the Dial-up Networking (DUN) profile with no additional drivers.
Greg Scott [MS] (Expert):
Q: (related to q 8>)will i need the nokia modem drivers on wince host for BT whenthe device is a UIless BT device for internet data acqusition using phone as data gateway to remote fixed ip PC?
A: No, you should not need additional drivers (see answer to question #8 for more details).
MikeCal [msft] (Expert):
Q: (related to q 8>)will i need the nokia modem drivers on wince host for BT whenthe device is a UIless BT device for internet data acqusition using phone as data gateway to remote fixed ip PC?
A: Hardware needs drivers. If you've got a BTh radio, then, yes, you'll need drivers for it. Drivers (almost) never have UI, so being UILess doesn't make you not need drivers.
Greg Scott [MS] (Expert):
Q: Was the level of support for bluetooth increased in WinCE 6.0 with respect of WinCE 5.0?
A: What do you mean by "supported"? There are no additional profiles added in CE6.
Greg Scott [MS] (Expert):
Q: The Bluetooth support in WinCE 6.0 was someway upgraded with respect to WinCE 5.0?
A: There were no major Bluetooth updates in CE6.0. We fixed some bugs and modified the stack to work with the new CE6 kernel.
kurtken_MSFT (Expert):
Q: 7>how to judge developer's cost? or what is ok for evaluation level development of wince features
17> how to engage wince mvps from diff topics for product feature development in stages product making guidelines?
A: i'm not sure of your two questions and their relation to each other. For (7) a suitable platform for BT development could be any number of mobile devices on the market, from things like Gumstix to other low-cost platforms. For (17) there are the newsgroups you can ask questions to the MVPs about.
MikeCal [msft] (Expert):
Q: 15> feasibility of wince device to server PC conectivity apps for speech based information retrival, location based service, sensor data acquisition from wince to server (sql ce or active synch), audio and camera visual
A: CE provides a pipe to the internet and the ability to write code that uses that pipe. From there you can do just about anything. I have seen apps that do most of the these things, yes.
Chienho [MS] (Expert):
Q: We are building a CE 6.0 embedded system that uses ActiveSync over USB to transfer files from a PC but it's important that Ac doesn't try to interact with the GUI under any circumstances. Is this possible using the standard CE ActiveSync catalog component?
A: CE ActiveSync module is not headless, so it will have some UI or error message box will need to be displayed or pop up to interactive with end user.
kurtken_MSFT (Expert):
Q: How can we support different types of ARMv6, v7 memory such as Strongly Ordered, {Shared | Non-shared} Normal, {Shared | Non-shared} Device in Windows CE/Windows Mobile.
A: You should be able to use the VirtualSetAttributes() function to control the memory access methods. https://blogs.msdn.com/ce_base/archive/2007/03/05/understanding-virtualsetattributes.aspx
kurtken_MSFT (Expert):
Q: Are you not planning to enhance the existing APIs such as MmMapIoSpace/VirtualAllocEx to include these attributes at least in Windows Mobile which targets only ARM based platforms
A: We can't comment on future products or APIs in this forum. I would not expect existing APIs to change, but I can see how it would be possible to extend them with future versions to indicate a memory 'affinity' for how the page tables are mapped.
davbo_MSFTMultimedia (Expert):
Q: ARM supports CPU Performance Monitoring Counters thorugh PMU from v6 onwards. Are you planning to integrate these counters into the existing tools such as Remote Kernel Tracker or Remote Performance Monitor etc.?
A: The CETK ships w/ CPUMonitor https://msdn.microsoft.com/en-us/library/aa934745.aspx and will look into where the PMU exposed counters are included in the CPU Monitor. The CPU Monitor tool shows you the CPU and memory usage of a Windows Embedded CE–based device in the CPU Monitor for Windows Embedded CE window. The target device sends data through a network connection to the development workstation. The development workstation logs and displays the data in a graph and a list in the CPU Monitor for Windows Embedded CE window.
Sue Loh [MS] (Moderator):
Q: ARM supports CPU Performance Monitoring Counters thorugh PMU from v6 onwards. Are you planning to integrate these counters into the existing tools such as Remote Kernel Tracker or Remote Performance Monitor etc.?
A: We can't make any promises about future products. The performance counters are definitely interesting for making additional measurements about what's going on in the device. We may experiment a bit but I'm not sure we'll ship anything in the near term. Be assured it's on our minds, though.
kurtken_MSFT (Expert):
Q: With advancement of ARM DSP capabilities and processing power, it is feasible to integrate a GSM/cellular signalling stack inside Application Processor OSes such as Windows Mobile. Have you guys evalutaed this option in Windows Mobile?
A: This has been done with at least one phone that is currently on the market. The chip set used was the TI GSample.
kurtken_MSFT (Expert):
Q: Is there a way to insert ARMv6, v7 low-instructions DSB, DMB, ISB, PLD, PLI in-line.
A: in-line assembly is not currently supported.
kurtken_MSFT (Expert):
Q: With ARMv6 and v7 memory models, as part of BSP I may need to use explicit memory ordering instructions such as DMB, DSB. If we do not have support in the form compiler intrinsics, then it would be too much overhead to make them as functions and incur over
A: we can take this as a feature request. Thanks for the pointer.
MikeCal [msft] (Expert):
Q: Dell inspiron e1505 system had issues dvd/cd not operable/reading...bios good all devices check good. sys diagnos good. ran xp disc to fix dvd/cd worked but now sys will not load either from disk or pxe reading is "error loading operating system_ "
A: Sorry, everyone here is a Windows CE developer. We're not the right people to answer desktop windows questions.
kurtken_MSFT (Expert):
Q: IS not pxe a mobile qualifier??
A: PXE means "Preboot Execution Environment". What do you mean by "a mobile qualifier"? PXE is not specific to a mobile technology.
Travis Hobrla [MS] (Expert):
Q: when does the cepc.bat file get run?
A: It is called by public\common\oak\misc\wince.bat. This runs before each build in Platform Builder, or whenever you open a build command window.
PaulT (Expert):
Q: some one asked me to justify usage of wince against other embedded OSs? whats other than free to evaluate and many components and supported hardware?
A: My shot at this: 1) it's well-known in the embedded market, 2) it's cheap, 3) it has most of the components that new devices need (networking, including cellular, Web-based applications, 802.11, etc.), 4) it's programmable with tools that users already have, generally, like Visual Studio, 5) there's a single place which is responsible for its maintenance (Microsoft), 6) some studies suggest that projects using it get done faster than those using competing OSes, 7) real-time.
Sue Loh [MS] (Moderator):
Q: On X86, on CE 6, it appears that configuring config.bib such that the OS runs in full kernel mode, that the OS runs all threads in ring level 1, otherwise it runs all non-kernel threads in ring level 3.Correct?
A: "full kernel mode" and rings are not the same thing... If it helps, this blog post explains what "kernel mode" means: https://blogs.msdn.com/ce_base/archive/2007/01/29/What-is-kernel-mode.aspx
Travis Hobrla [MS] (Expert):
Q: Is their a way to change the boot-up logo when launching wince v5?
A: What do you mean by "boot-up logo"? Generally speaking, as an OEM you can modify what is display on the screen in whatever way you like.
MikeCal [msft] (Expert):
Q: If I do not have the platform builder, can I modify the WinCE boot screen? (boot screen => the image displayed when powering up my WinCe device)
A: If you're the OEM, you can. If you're an ISV, you can not.
PaulT (Expert):
Q: If I do not have the platform builder, can I modify the WinCE boot screen? (boot screen => the image displayed when powering up my WinCe device)
A: Yet another expert opinion :D The answer is "maybe". It depends on where the boot picture comes from. This is OEM-specific. I've built devices where the boot image was stored somewhere accessible, like the boot sector on a hard disk. In that case, yes, you could change it, presumably with a utility provided by the device OEM. If not, which is probably more-common, no, you can't change it unless you can rebuild the bootloader, which will require Platform Builder.
kurtken_MSFT (Expert):
Q: If I do not have the platform builder, can I modify the WinCE boot screen? (boot screen => the image displayed when powering up my WinCe device)
A: By "Windows CE Device" do you mean a phone, or do you mean some other device. Are you using a PC or some arm based platform?
Travis Hobrla [MS] (Expert):
Q: It's an arm based platform.
A: You should definitely be able to change the boot-up logo to whatever you want. Take a look at the bootloader and OAL for any code that displays a splash screen, that's where you would likely make the modification.
Sue Loh [MS] (Moderator):
Q: It's an arm based platform.
A: Contrary to what Travis said, I am in full disagreement. (Sorry Travis!) If you are the OEM, you can change it. Since you are not the OEM, you cannot change it.
Travis Hobrla [MS] (Expert):
Q: It's an arm based platform.
A: Sorry for my mistake - I did not realize that you were not the OEM.
MikeCal [msft] (Expert):
Q: Do partners implementing WinMobile on their hardware use something like Platform Builder? Which are the main differences between implementing Windows CE 5.0 on an OEM device and Windows Mobile 6.0 on the same device?
A: Yes, Platform Builder is used by both Window Mobile OEMs and Windows CE (General Embedded) OEMs. In general, the differences between WM and GE are that Windows Mobile has more requirements. Where in General Embedded, you can make just about anything, from a robotic controller to a projector, Windows Mobile is geared more toward mobile phone devices. So you can't take a web enabled sewing machine and call it Windows Mobile, where you CAN use General Embedded for that same project. If you're making a Windows Mobile type device, though, the behavior of the tools and OS are very similar to what you're used to with General Embedded.
PaulT (Expert):
Q: Hi there I'm a student and I want to know what to study in university that links with the development of Windows Mobile as an OS
A: Software engineering. There are not, probably, going to be courses in Windows Mobile, since only *very* large OEMs of devices can actually build Windows Mobile devices. However, if you're a good software engineer, picking up how to program for Windows Mobile is no problem at all.
Sue Loh [MS] (Moderator):
Q: Hi there I'm a student and I want to know what to study in university that links with the development of Windows Mobile as an OS
A: Embedded classes might use Windows CE (not Mobile but it's close)
Travis Hobrla [MS] (Expert):
Q: Any plans to release an ARM emulator? I've tried the articles/samples/tricks on building one without success. Even if it's "stock" and may not match a real device - having plain Win CE w/ ARM would make *app* developers lifes much easier!
A: ARM emulators are already available from Microsoft for CE5 and CE6. In CE6, look at the DeviceEmulator platform - this is an ARM emulator for the Samsung SMDK2410 platform. For CE5, look here: https://www.microsoft.com/downloads/details.aspx?FamilyID=A120E012-CA31-4BE9-A3BF-B9BF4F64CE72&displaylang=en
PaulT (Expert):
Q: Any plans to release an ARM emulator? I've tried the articles/samples/tricks on building one without success. Even if it's "stock" and may not match a real device - having plain Win CE w/ ARM would make *app* developers lifes much easier!
A: The Pocket PC SDKs for Windows Mobile 5 and later already use an ARM-based emulator. There's no such thing as "regular" or "standard" Windows CE, so it doesn't make sense for MS to release some random ARM-based emulator for Windows CE. For example, I can build Windows CE for my device with no display support *at all*. That means that CreateWindow() doesn't exist in the SDK. Or, I can build my device with no keyboard and mouse support. You can't really emulate everything. A device OEM *can* give you an emulator for their device, to emulate the various APIs in *their device*, etc. However, this is never a good substitute for a real device and is completely misleading if it implies that your program would run on any Windows CE device just because it ran on a "standard" emulator.
Sue Loh [MS] (Moderator):
Q: Any plans to release an ARM emulator? I've tried the articles/samples/tricks on building one without success. Even if it's "stock" and may not match a real device - having plain Win CE w/ ARM would make *app* developers lifes much easier!
A: What are the problems you had building your own emulator images? That's really what we should be helping you with.
Microsoft did release a "standard SDK" a.k.a. "universal SDK" for CE 5.0. This may have included an ARM emulator image - we're trying to check now but almost out of time. For various reasons the USDK was also discontinued after CE 5.
Tell you what, since we are almost out of time I'll private-message you my email address and try to help you create your own SDK offline.
kurtken_MSFT (Expert):
Q: IOW, as a .NET app developer, I'm focused on my application and want to run it on an emulator in my desktop (speed/power) rather than remote debug on a CE device.
A: yes, the Device Emulator included in CE6 and available at the link that travis posted is what you are looking for.
PaulT (Expert):
Q: IOW, as a .NET app developer, I'm focused on my application and want to run it on an emulator in my desktop (speed/power) rather than remote debug on a CE device.
A: It would be interesting to poll the application developers in the newsgroup and see what percentage actually use emulators on a regular basis. Until hardware is *available*, it makes sense to get started with application development, but once you have real hardware, you *need* to test on that real hardware to make sure that you aren't seeing super-duper performance on the PC emulator that you don't really get on the real device, and to make sure that things like WiFi communications actually work when radios go out of range, etc.
PaulT (Expert):
Q: re: poll - application development really doesn't need a device per se except at key checkpoints and for QA testing, so emulators are the first choice
A: If you are doing qualification testing on an emulator, you *will* release lower-quality software than if you tested on real devices. I'm a device OEM and we have, let's see, five different device types. One of them doesn't have *any* display support, two have only a small text display, and the other two have full graphical displays. I provide an emulator for the ones with text displays, so that, until you get a real device, you can have some chance to make sure that your code to drive the display looks good. However, I would never assume that this emulation works identically, either performance-wise or actual functionality-wise as the real device. When a real display is involved, there's hardware handshaking when you control that display, something that you can't really emulate effectively. Emulation works fine for this sort of thing, making sure that the appearance, on various display types, works, but it's not a substitute for a real device.
kurtken_MSFT (Expert):
Q: does that answer to mean that wince is a platform for application development and not for the (new) device development, as the scope is there for real devices only and not for eval level coming to market type?
A: Many people develop applications for Windows CE using the device emulator, both for existing devices and for devices they are currently working on.
kurtken_MSFT (Expert):
Q: Feature request: How about getting support for Interlocked bitmask operations in CE like DWORD AND and DWORD OR. THis would really help minimize locking mechanisms for device drivers.
A: These functions can be implemented using InterlocedCompareExchange. We can add a request to have the functions defined in the header (InterlockedAnd) implemented.
Sue Loh [MS] (Moderator):
Hello everyone, we are just about out of time. Thank you for joining us for our Windows Embedded CE 6.0 and Windows Mobile chat today!
A special thank you to the product group members for coming out.
We’ll see you again for another chat next month. Please check https://msdn.microsoft.com/chats for the list of upcoming chats.
If you still have unanswered questions, let me suggest that you post them on one of our newsgroups, such as Microsoft.public.windowsce.platbuilder.