none
Running code generated by STANDARDSDK_500 (ARMV4I) on Windows Embedded 7 or Windows Embedded 5.1 RRS feed

  • Question

  • Hi,

    I have a project generated by STANDARDSDK_500 (ARMV4I) compiler.

    Could the generated binary be executed on Windows Embedded 7 or Windows Embedded 5.1 machines.

    Regards,

    Tuesday, June 16, 2015 3:50 PM

All replies

  • Hi MRAB,

    I believe the answer is no as the ARMv4I is compiled for Windows CE based devices and Windows Embedded 7 (http://www.microsoft.com/windowsembedded/en-us/windows-embedded-7.aspx) is not based on CE or ARM chipsets.

    You will need to convert the project from CE and recompile the application to target x86. 

    Sincerely,

    IoTGirl

    Tuesday, June 16, 2015 10:34 PM
    Moderator
  • Windows Embedded <what> 7?  Standard, no.  Compact, yes.


    Bruce Eitman (eMVP) Senior Engineer Bruce.Eitman AT Eurotech DOT com My BLOG http://geekswithblogs.net/bruceeitman Eurotech Inc. www.Eurotech.com

    • Proposed as answer by Bernd Koesters Thursday, June 18, 2015 1:02 PM
    Thursday, June 18, 2015 12:05 PM
    Moderator
  • Hi MRAB,

    I have to disagree slightly with Bruce here. Standard SDK 5 had a different memory and driver model under the hood as it is based on CE 5. While you may try to run a CE 5 executable on a CE 6 or Compact 7 ARM based device it may fail in strange ways if it does any file, system or memory access. For example, most CE 5 drivers do not work on later devices for just this reason.

    A Standard_500 ARMv4i exe definitely will not run on a Compact 2013 image as the compiler and ABI changed for ARM when Compact switched from the CE compilers to the new VS compilers.

    In all cases, you are better to take the source and compile it for the specific target OS & device.

    Sincerely,

    IoTGirl


    Thursday, June 18, 2015 10:52 PM
    Moderator
  • Building a app against the Standard SDK should be perfectly fine - as long as it runs.  Of course it might not run if the specific OS is missing one or more components that the app depends on, but in the case of a great many general purpose applications that isn't a real problem.  One other exception would be if the application directly manipulates hardware, something that was possible but not recommended in CE 5.0 and prior.   Applications won't fail in strange ways, but in very specific ways most if not all will occur as soon as the application starts.

    As far as drivers go, in the ideal world yes best to build targeted for the specific OS and device, but in the real world the ecosystem doesn't have the time/resources to support all devices specifically.  But I do agree that for drivers, porting to at least CE 6.0 will be necessary.

    While the memory model is different starting with CE 6.0, most applications built for CE 5.0 and before will certainly run, and run well.


    Bruce Eitman (eMVP) Senior Engineer Bruce.Eitman AT Eurotech DOT com My BLOG http://geekswithblogs.net/bruceeitman Eurotech Inc. www.Eurotech.com

    Friday, June 19, 2015 1:02 PM
    Moderator
  • I like and agree with the "As long as it runs" provision.  I think Bruce and I are saying the same thing but my experience from the support side is many of our customer calls are due to strange behavior of an application that was compiled for a different device than it is now executing on. The support call starts with my app on my CE 6 device is doing strange things and digging into the repro steps does not expose the cause. After some time it is discovered that the code was compiled to CE 5 and a particular code path hits a change between OS versions.
    Sunday, June 21, 2015 12:27 AM
    Moderator