Thursday 29 April 2010

Increase Platform Builder download speed

Hi all,

have you ever wondered what the "TFTP block size in bytes" edit field in the "Connectivity Options->Ethernet Download Settings" dialog is for?
With this option, introduced in the CE 6 eboot, you can configure the size of image data transferred in a single ethernet package. This lets you configure the ce image download speed.
You can set this value in the range of 512KB up to 1024 KB, the default value is 512 KB. If you set this value to 1024, your download speed could theoretically double. In real live the increase depends on your device.
We have made some tests with different devices and the speed increase varies between 100KB/s (slower device) and 300 KB/s (faster device).

If you have a CE6 based eboot on your device try it and see the result.


By the way, there is a new version of the CEDownlaoder tool availabe. A serial terminal has been included and the download view can be configured to close automatically if download succeeds. You can download it here .

bye

sascha
Read more! Post this to a friend!

Wednesday 28 April 2010

News from .NET MF

Hello guys,

there is a cool article at NETMF blog about contributing projects to .NET Micro Framework, very interesting!!!! Take a look at this!

Also check out the created forum about product change proposals, comment the existing or make a new one.

Have fun!


Read more! Post this to a friend!

NavReady updates available

Hello guys,

there are some Windows Embedded NavReady QFEs available.

Follow this link and download the latest QFEs (= February 2010).

Fixes made in this update:

Component:  Bluetooth

  • 100212_KB980181 - Phone and device may stop working when downloading the phonebook. Phonebook entries can be mis-parsed. For certain phones, phonebook and call history may not be downloaded.

Have fun!


Read more! Post this to a friend!

Microsoft released Windows Embedded Standard 7

Hi folks,

finally the next version of Windows Embedded Standard, the successor of Windows XP Embedded, has been released to manufacturing, yesterday April 27th 2010 at the ESC Silicon Valley in San Jose, CA.

Windows Embedded Standard 7 is the first embedded OS based on Microsoft’s successful desktop OS Windows 7. Thus Windows Embedded Standard 7 is a highly customizable embedded OS in a componentized form, empowering OEMs to build devices with the reliability, familiarity and power of Windows 7!

The Windows Embedded Standard 7 RTM press release can be found here.

A product overview as well as the Eval Version download of Windows Embedded Standard 7 can be found here.

You can pre-register here to receive your free Windows Embedded Standard 7 Evaluation Kit with FREE SHIPPING once it is available. This offer is valid while supply lasts or until June 30th 2010.

By the way, if you are at the ESC Silocon Valley, be sure to stop by at the Microsoft Booth #916 at the McEnery Convention Center where EB is is showcasing EB GUIDE Studio in combination with Microsoft Expression BlendTM as well as EB street director on Windows Embedded. Also, we will give a presentation on “modeling and deploying embedded UIs for automotive and industrial applications”.

Have fun!
Read more! Post this to a friend!

Windows CE Live Chat Transcript April 2010

Hi guys,

Just in case you missed the Live chat yesterday with very interesting questions (e.g. how to improve the performance of bitblt), you can find the transcript of yesterday's chat here.

Unfortunately not all questions were answered, maybe in the next chat.

davbo_msft (Moderator): Our chat today covers the topic of Windows Embedded CE!

davbo_msft (Moderator)[18:00]: We are pleased to welcome our Experts for today’s chat. I will have them introduce themselves now.

Sing Wee[MS] (Expert)[18:08]: Hi everyone, I'm Sing Wee, part of the CoreOS/BSP Test Team.

GLanger_MS (Expert)[18:09]: Hi, good morning. I'm Glen Langer, program manager for Core OS on the Windows Embedded team.

rajran[MS] (Expert)[18:10]: Hi , I am Rajeev Rangappa, PM in Core OS group.

Sing Wee[MS] (Expert)[18:10]:

Q: [1] Larger memory sizes are getting cheaper. Soon 1GB of RAM will be cheaper and more available than 512MB. CE 6 is limited to 512 MB. What are your plans to increase memory size usage?

A: Although we can't discuss future releases here, I can say that we're aware of our customer's desire to use larger memory sizes.

Travis Hobrla [MS] (Expert)[18:13]:

Q: [2] What could be the reason of a very bad perfomance performing a GDI bitblit operation of a bitmap with color conversion from 16bpp to 24bpp and viceversa?

A: How are you doing the color conversion? Is the 24bpp memory aligned by 24-bits or by 32-bits?

Travis Hobrla [MS] (Expert)[18:15]:

Q: [3] When running a huge application on our CE6 based board we notice that free program memmory will decrease all the time. We already have tried to use the application verifier to detect any heap leaks, but could not find any (at least in our application). Do you know another way to verify heap leaks?

A: It is possible you are not leaking memory but have a driver or application that is consistently requesting more memory and actually using it. If you are wary of your huge application I would track the amount of allocations it has made. Also, if you want to get really in-depth you can construct your own custom heap and use that to track allocations.

Travis Hobrla [MS] (Expert)[18:16]:

Q: [5] If I use XIP can I see some improvements from the memory consumption point of view?

A: Yes, because the code that is executed in place doesn't need to be copied to RAM.

Sing Wee[MS] (Expert)[18:16]:

Q: [3] When running a huge application on our CE6 based board we notice that free program memmory will decrease all the time. We already have tried to use the application verifier to detect any heap leaks, but could not find any (at least in our application). Do you know another way to verify heap leaks?

A: As a follow-up to Travis' answer, if you know you're using a particular driver, you can apply AppVerifier to that driver as well to see if it turns up any leaks.

Sing Wee[MS] (Expert)[18:19]:

Q: [6] There is a known issue with Windows CE 6 that the active sync remote tools do not always work. One workaround is to start the tools from the Start Menu rather than from VS Menu. Unfortunately not all Tools are availble from the start menu. Does anybody know if this has been addressed, yet? Will it work better with CE 7?

A: While we can't speak specifically about future releases, I can say that we've been actively triaging/fixing all bugs that we know about. clip_image001

Travis Hobrla [MS] (Expert)[18:20]:

Q: [7] sorry, I didn't flag the check box. it is a 24bpp packed. Performing the bitblit with the same color resolution (i.e. 16bpp to 16bpp) the performance are quite good whereas bitblitting from 16 to 24 and viceversa it seems a disaster (around 20 times slower)
I'm using native MS code. I don't have any HW accelerator.

A: I am thinking the alignment issues there are likely causing some of the issue. Also, having to do any kind of per-pixel conversion is going to be a lot more expensive than doing no conversion. Can you try bltting to 32bpp (24bpp unpacked) and see what the perf difference is like?

Travis Hobrla [MS] (Expert)[18:21]:

Q: [9] Yes. I have noticed that using the 24bpp unpacket (32 bit aligned) the performance are much better but still very low.

A: I think the conversion in general is going to be expensive, it is a lot of extra math compared to a simple memcpy.

Travis Hobrla [MS] (Expert)[18:22]:

Q: [11] Is there any feature on windows CE 6.0 like "image update" (for windows mobile)?

A: Sorry, we don't support any such feature. You would have to use XIP and implement your own update mechanism in the bootloader.

davbo_msft (Moderator)[18:27]:

Q: [4] The new IE6 in R3 seems to run out of memory a lot quicker than IE6 in R2. Are you guys aware of this and planning to fix or should we send in a bug report?

A: Hello Norm - a bug report would be helpful for us to narrow down the memory issue you are seeing. Some helpful information would be details on how to reproduce the issue and state of the memory before & after you perform the repro steps. If you have any info about memory related to browsing a specific site or actions you take within the browser would help us narrow down the issue in the lab.

Travis Hobrla [MS] (Expert)[18:30]:

Q: [12] how to avoid this error VMProcessPageFault Error: Page fault occurred while in power handler! Address = 0xd0636078? making some debug I have identified that is coming from the filesystem during the powerup phase..

A: This is not a fatal error, I believe you should be safe to ignore it. We're aware of the issue but don't have a fix for it right now.

Travis Hobrla [MS] (Expert)[18:31]:

Q: [16] Is there any way to replace the floating point library in MIPS like using SYSGEM_OEM_FPCRT in ARM ?

A: Unfortunately, no. Sorry.

davbo_msft (Moderator)[18:34]:

Q: [10] I´m facing also exceptions in COMMCTRL.DLL, caused by explorer.exe, at random times, mostly when I use the GUI. Is there any bug open on that? (I´m on MIPS/CE6R3, using the standard shell)

A: Hello Marcelovk - Can you provide some additional details about the issue you are seeing? Specifically if you have consistent repro steps we can use to see the issue in the lab. Any specific actions you are doing in explorer.exe to reproduce the issues would be helpful.

Travis Hobrla [MS] (Expert)[18:37]:

Q: [13] Do you have any suggestion to improve the performance of bitblit?

A: Here are a few approaches: 1. You can try using the optimized Blt routines in public\common\oak\drivers\display\emulrotate\fastb lt.cpp by setting g_fUseFastBlt = TRUE in your display driver; I don't see any there that handle 16to24 or 16to32 so this won't help in your current situation but it may help in others.2. You can try to manage the source/destination surfaces so that you don't end up needing to do this converstion. 3. In your driver's BltPrepare you can detect when this conversion needs to happen and implement your own optimized software blt function in the driver for this case.

Travis Hobrla [MS] (Expert)[18:40]:

Q: [18] Another question regarding memory consuption: Is it correct that caused by heap fragmentation the remaining space will decrease generally. On CE3.0 I have read that buffers with a size of 384Bytes where used for all allocations. Is this really the case on CE6.0. Or what about fragmentation effect during runntime when allocating and freeing a lot of memory?

A: When you get low on memory, a function called CompactAllHeaps will automatically be run; this will attempt to eliminate/reduce fragmentation. There will be a DEBUGMSG in debug builds that indicates heap compaction is occurring. You can also call out to CompactAllHeaps manually if you like.

Travis Hobrla [MS] (Expert)[18:42]:

Q: [22] Hi Travis, you mentioned a method to track allocations. Are there any white papers on how to write your own custom heap to track memory allocations? Could you replace the OS heap allocator so that you can track all applications?

A: I don't know of any whitepapers that explain this in detail, but the msdn documentation should be sufficient to get you started: http://msdn.microsoft.com/en-us/library/ee488377.aspx

davbo_msft (Moderator)[18:44]:

Q: [20] In outlook 2003 and 2007 can I set an email notice to autosend on a certain day of each month

A: Hello jojodbear - this is a chat on Windows CE Embedded. For Outlook questions please refer to the Outlook website. http://office.microsoft.com/en-us/outlook/default.aspx.

Sing Wee[MS] (Expert)[18:45]:

Q: [8] I´m facing some troubles in USB stack, sometimes when I boot and when I powerdown with an usb device attached (mouse, usb stick) the driver enters on an endless loop. It looks like that they are not notified correctly to stop processing. How can I do notify them that the system is resetting, powering down?

A: Have you looked tried looking at the Device Notifications function that you register during USBDeviceAttach? Looking at some of our public drivers, this is where the USB_CLOSE_DEVICE mesage is handled. You Another place to look might be USBUninstallDriver. Be sure you've set the right debug zones/add some additional debug messages to see where you're getting into a loop. A related link would be this: http://msdn.microsoft.com/en-us/library/ee485900.aspx

Travis Hobrla [MS] (Expert)[18:47]:

Q: [23] Does WindowsCE support BGR555 format completely? We are running this framebuffer format currently. So far we did not get any problems. The driver reports 16Bpp, but the unused bit is masked in the palette correctly. Unfortunatly we now have noticed that the function GradientFill() function does not respect this limitation which leads into display errors.

A: I don't think this is a known issue, we should support it entirely. We do test BGR555 although I am not sure we tested with GradientFill(). If this is an important bug for your product, you can raise a support request and we can get this fixed via a QFE.

Sing Wee[MS] (Expert)[18:49]:

Q: [6] There is a known issue with Windows CE 6 that the active sync remote tools do not always work. One workaround is to start the tools from the Start Menu rather than from VS Menu. Unfortunately not all Tools are availble from the start menu. Does anybody know if this has been addressed, yet? Will it work better with CE 7?

A: Just to be clear, this issue you're referring to is running Remote Tools over ActiveSync, correct? I want to be sure the product team is aware of what you're seeing.

Travis Hobrla [MS] (Expert)[18:51]:

Q: [21] Unfortunately, I don´t have much steps to reproduce, only vague pointings. It looks like that it occurs more when the SHIPBUILD is disabled, in retail, and when I run applications made in Compact Framework 2.0 (but not only). We started to have this after porting a MIPS based bsp (au1200) from CE5 to CE6. They don´t seem to cause any side effect besides dumping the exception in the output (in our case, the serial port)

A: The 512MB limitation is because the CE 6.0 kernel reserves 0x80000000-0x9FFFFFFF for cached memory and 0xA0000000-0xBFFFFFFF for uncached memory; each of those regions are hardcoded and can't grow beyond 512MB. For MIPS and SH4 architectures this is an architectural limitation, for ARM and x86 CE 6.0 has a software limit. You can write a custom driver to expose this memory but the kernel won't know about it, so you will have to do all of the memory management on your own.

Travis Hobrla [MS] (Expert)[18:51]: Sorry, answered the wrong question, reactive your question Marcelovk.

Travis Hobrla [MS] (Expert)[18:51]:

Q: [26] If I have a system with 1GB of RAM and am using R3, CE 6 won't use half the memory, 512 MB. Where is the 512MB limitation in CE? Could I write a custom driver to provide a RAM disk using the extra 512 MB?

A: Answering the right question this time: The 512MB limitation is because the CE 6.0 kernel reserves 0x80000000-0x9FFFFFFF for cached memory and 0xA0000000-0xBFFFFFFF for uncached memory; each of those regions are hardcoded and can't grow beyond 512MB. For MIPS and SH4 architectures this is an architectural limitation, for ARM and x86 CE 6.0 has a software limit. You can write a custom driver to expose this memory but the kernel won't know about it, so you will have to do all of the memory management on your own.

Travis Hobrla [MS] (Expert)[18:52]:

Q: [25] Are most graphic routines designed to work best with RGB565? If so, will using another mode (e.g BGR555) be much slower?

A: I believe we have done more testing and optimization of RGB565 because it is more common. I would not expect BGR555 to be much slower unless you are doing a lot of conversions or other special operations, though.

masatos_MSFT (Expert)[18:53]:

Q: [15] In the case of Activesync connection over USB, how does the RASDial get notified of a USB disconnection? Who does the USB driver notify? Is it through the registry? system event?

A: Hi, can you specify which version of CE you are using?

Travis Hobrla [MS] (Expert)[18:56]:

Q: [24] In MSDN, it states that "TFAT requires the underlying block structure to support atomic sector writes". How can I know that my device (NOR flash) fulfill that?

A: I would query the vendor through which you got the NOR flash controller if the controller supports atomic writes or not - it may also be in the documentation for that controller.

Travis Hobrla [MS] (Expert)[18:57]:

Q: [28] 1GB question: Cool. The extra 512MB in a 1BG system would have to be handled by a driver as a special device. Do you guys have any cool ideas what could be done with it?

A: What is the system going to be used for? That should be the driving factor for your entire embedded design, from included modules to thread priorities all the way up to and including memory usage.

masatos_MSFT (Expert)[18:57]:

Q: [19] I get the error message "Cannot connect to PC. Stop any programs that may be using a connection, and try again. If the problem persists, reset your device according to the owner's manual. - Port Not Available" when plugging in USB to connect to Activesync. How can I start to debug this problem? How can I tell which "component" was not shut down properly? (using CE6R2, on ARMV4I platform)

A: I will consult with some team members here and get back to you.

Have fun!


Read more! Post this to a friend!

Tuesday 27 April 2010

Windows Embedded CE QFEs for March 2010 have arrived!

Hi all,

The March updates for Windows Embedded CE are available for download:

Windows Embedded CE 6.0 Monthly Update March 2010:

Fixes made in this update:
Component:  Internet Explorer

Component:  MTP

  • 100315_KB980732 - This update installs a signed custom metadata package that provides a Device Stage experience resembling the baseline minus the ""Manage media on your device" task. OEMs are free to include this package with their device where the default ModelID is sufficient to trigger this experience for Other Portable Devices class devices.

  • Creates Notification to client driver when USB device suspends/resumes

  • Adds USB_SHORT_TRANSFER_OK to USB HID driver

  • Addresses failure paths in USB IssueTransfer and sets meaningful last error

  • Increases the number of bytes from 4 to 8 in scsi2.c to avoid the DATA_OVERRUN error for SCSI_MODE_SENSE10 command

  • Addresses USB Mass Storage Function driver race condition

  • Allows to disable the USB driver dialog using a new registry key:

       [HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients]
       "DoNotPromptUser"=dword:0

       The default value is 0. Set it to 1 to disable the dialogs.


Windows CE 5.0 Monthly Update March 2010:

Fixes made in this update:

Component:  Internet Explorer

  • 100331_KBKB981072 - This update addresses some Internet Explorer issues.


  • Remember: it’s important to keep your system up to date!

    Have fun!

Read more! Post this to a friend!

Wednesday 21 April 2010

MARK YOUR CALENDARS: Windows Embedded CE Live Chat!

Microsoft is hosting a live chat about Windows Embedded CE next week. Do you have tough technical questions regarding Windows Embedded CE for which you're seeking answers? Then join the upcomming live chat with the Microsoft guys!

Don't forget to put the date in your schedule and join it!!!

Title: Windows Embedded CE Live Chat!
Date: Tuesday, April 27, 2010 18:00 - 19:00 CET

To join this chat, please log on via the main MSDN chat page at:
http://www.microsoft.com/communities/chats/default.mspx

Have fun!


Read more! Post this to a friend!

Tuesday 20 April 2010

New MSDN technical article available

Hello guys,

a new MSDN article about Windows Mobile has arrived!!!       Take a short look into the intro of them and check it out!

xHopper Test Tool QuickStart Guide

xHopper is a software test tool that simulates input stress on Windows Mobile devices and triggers actions that execute applications at a random time or at fixed time cycles.

The xHopper tool, like Hopper, can help you identify application defects earlier in the development cycle, making them easier to fix and creating a more stable base on which to build the rest of your application. xHopper provides new functionality that is not available in Hopper and is intended to be used in conjunction with Hopper, not as a replacement for it.

Are you interested in? Just follow this link to get the entire article.

Have fun!


Read more! Post this to a friend!

Friday 16 April 2010

Get the right processor for successful NETMF development

Hello guys,

if you are asking yourself about selecting the right processor or development board for NETMF, then just check out this very interesting post at the .NET MF community site.

Have fun


Read more! Post this to a friend!

Wednesday 14 April 2010

Visual Studio 2010 and Windows Embedded CE development


UPDATE (May 2012):

Good news: Windows Embedded Compact v. Next will come with both native and managed application development support in Visual Studio 11! Furthermore there will be an updated version of the .NET Compact Framework.

It is likely (though not explicitly stated) that these new features will also be available in Visual Studio 2010.

You can find further information in my complete post here.

Have fun!



UPDATE (November 2011):
Windows Embedded Compact v. Next will come with Visual Studio 2010 and Visual Studio v. Next support for native Smart Device application development. Unfortunately the future of managed application development as well as the future of the .NET Compact Framework was not mentioned. Windows Embedded Compact v. Next will RTM in the second half of 2012. Find the complete Windows Embedded roadmap post here.


You are most propably aware that since the middle of April Microsoft has announced the general availability of Developer Studio 2010. The question for us Windows Embedded Developers is, however, whether or not we can use DevStudio 2010 to develop Windows CE code.

Well the answer is fairly simple - at least for the current version of Windows CE - as DevStudio 2010 does not contain "Smart Device" application development support - but you all knew that, didn't you?

But what about the upcoming version "Windows Embedded Compact 7"? As you can guess, it is quite hard to get any information around this version, planned to be released middle of 2010.

However, due to my experience with Windows Embedded Product releases and support of Windows CE development through DevStudio over the last ten years my guess ist that even with "Windows Embedded Compact 7", Windows CE code development will still be done with DevStudio 2008.

So long and thanks for all the fish!
Read more! Post this to a friend!

Wednesday 7 April 2010

Windows CE: Shared interrupt considerations

Hi all,

imagine the following scenario: you have one shared hardware interrupt for multiple devices (i.e. a PCI bus with multiple clients). Typically you would use the supplied giisr.dll as an installable interrupt service routine for your shared interrupt. But what exactly does the giisr do (or rather NOT do), and are there any problems as a result of the giisr behavior?

Upon initialization the giisr adds the interrupt source to a FIFO array, thus the first registered interrupt source has the highest priority.

The interrupt service routine (ISR) simply iterates through the FIFO array and returns the first SYSINTR within the FIFO array or SYSINR_CHAIN if none of the installed devices raised an interrupt. The SYSINTR then triggers the corresponding interrupt service thread (IST)(Given it wasn't SYSINTR_CHAIN).

So far so good, this seems like a regular interrupt handling. So is there any problem with the behavior of the giisr?

Well there is, as you might have noticed the giisr does not do any masking of any subinterrupt. Instead the main (shared) interrupt is masked in the calling ISR. The problem that arises here is that the interrupt latency increases significantly for any device using our shared interrupt. Since instead of unmasking the shared interrupt upon return of the correct SYSINTR, the shared interrupt will stay masked until the corresponding IST has finished and thus blocking any other interrupt raised from a device using the shared interrupt.

The good news is, that you can modify the giisr code in the following way to reduce the interrupt latency to a nearly “normal” level:
  1. 1. Mask the corresponding subinterrupt in the giisr

  2. 2. Unmask the shared interrupt

  3. 3. return the corresponding SYSINTR

  4. 4. in the corresponding IST make sure that InterruptDone does nothing as the shared interrupt is already unmasked, instead unmask the corresponding subinterrupt. NOTE: InterruptDone needs to be called nevertheless to ensure correct interrupt handling

This way other devices using our shared interrupt can be serviced during the processing of an interrupt raised by a different device using the same shared interrupt as it should be. The priority no longer depends on who registers first with the giisr but depends upon the threadpriority of the corresponding IST.

Have fun!
Read more! Post this to a friend!

Thursday 1 April 2010

0 Projects in PlatformBuilder?

Hi all,

today I experienced a strange PlatformBuilder behaviour: As usual I opened the solution I am currently working on but everything was blank, my solution was gone!


My first thought was to reimport my entire OSDesign from my version-control which would result in loosing all my recent changes and spending an hour or so rebuilding my entire solution. Luckily for me there was a much simpler and faster way to get my solution back:

Upon comparing my .sln file with the one from my version-control I noticed that two sections were missing in mine:
Project … EndProject and
GlobalSeleciton(ProjectConfigurationPlatfroms) … EndGlobalSelection.

I just copied over those two sections and voilá I had my solution working again!

Have fun and Happy Eastern!
Read more! Post this to a friend!