1 / 52

Windows CE The next version Base on Presentations at Medc 2006 by Boar-Ming Hsieh and John Hatch

Mobile&Embedded Israeli User Society. Windows CE The next version Base on Presentations at Medc 2006 by Boar-Ming Hsieh and John Hatch. Avi Kcholi. first shared source competition. Nic Sagez, has asked me to invite you to participate in the first shared source competition

ayla
Download Presentation

Windows CE The next version Base on Presentations at Medc 2006 by Boar-Ming Hsieh and John Hatch

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Mobile&Embedded Israeli User Society Windows CE The next versionBase on Presentations at Medc 2006 by Boar-Ming Hsieh and John Hatch Avi Kcholi

  2. first shared source competition • Nic Sagez, has asked me to invite you to participate in the first shared source competition • The program manager in charge of the Windows CE source code • You can find a description of the competition at: http://www.windowsfordevices.com/articles/AT5277795134.html

  3. Agenda • Overview - Introduction • Windows CE 5.0 – Recollect • Windows CE 6.0 Beta – Overview • New Features • Compatibility • Drivers Overview • Real-time • Platform Builder

  4. Overview • Targeted to embedded devices • Pocket PC, Smartphones, STBs, Thin clients, AutoPC, PMC, control panels, robots, etc. • Benefits • Flexible, adaptable, configurable, small • Supports ARM, MIPS, SH, x86 • Real-time • Simple driver model • Power conscious • Shared source • Tiered licensing model

  5. Overview • However, Windows CE 5.0 has a memory model limitation • It only supports 32 processes and 32 MB per process • These limitations has now been removed with Windows CE 6.0 • New Virtual Memory Model

  6. Windows CE 5.0 – Recollect

  7. Windows CE 5.0 Memory Model • Virtual Memory Map • 2 GB for Kernel • Single 2 GB mapping for all processes • Divided up into 32 MB “slots” • 32 Process Limit • Each process has one 32 MB slot • 32 slots for processes • Shared memory • Upper half of user space is shared memory • Read / Write by all processes

  8. Kernel 2 GBKernelSpace Shared Memory Slot 32 Slot 31 Single2 GB VMfor allProcesses :: Slot 8 32 Slots for Processes Slot 7 – Services.exe Slot 5 – GWES.exe Slot 4 – Device.exe Slot 3 – Filesys.exe Slot 2 – NK.exe Execution Slot and Shared DLL Slot Slot 1 – ROM DLLs Slot 0 – Execution

  9. Windows CE 6.0 Beta Overview

  10. Introducing the New Kernel • 2 GB of Virtual Memory per process • 32,000 processes • Unified Kernel • Critical OS components moved into kernel space • Improved system performance • Increased security and robustness • High degree of backwards compatibility

  11. User VMMemory Mapped files User DLLs Process Code User VM New Win CE Memory Model KernelFilesystemGWESDrivers 2 GBKernelSpace . . . . . . 2 GBperProcess 32 KProcess

  12. User Space 0x80000000 Shared System Heap 255 MB R/W for OS componentsRead only for user process RAM Backed Mapfiles 256 MB RAM Backed Mapfiles Mapped at fixed location for better backwards compatibility Shared User DLLs512 MB All DLLs – code and data Same mapping across all processes Data pages are unique physical pages Code pages are shared User Space 2 Gigabytes Each process has its own mapping 0x40000000 Process space 1 GB per process Executable code and data VM Allocation File Back Mapfiles 0x00000000

  13. Kernel Space 0xFFFFFFFF CPU Specific VM System Trap Area Kernel VM(if supported by CPU) 256 MB Kernel Virtual Memory Shared by all kernel Servers and drivers Kernel VM256 MB Kernel Space 2 Gigabytes Fixed mapping independent of user space Ram file system & ram registry Object Store (128MB) Kernel XIP DLLs (128 MB) All XIP DLLs in kernel Static Mapped Uncached 512 MB Uncached access to physical memory Static Mapped Cached512 MB Cached access to physical memory 0x80000000

  14. OS New Layout • Moving critical drivers, file system, and graphical window manager into the kernel • Kernel version of Coredll.dll • Same APIs without the thunks • Benefit • Greatly reduces the overhead of system calls between these components • Reduces overhead of all calls from user space to kernel space • Increase code sharing between base OS services

  15. Performance & Size • Improvements expected in process switching • Same performance • Thread Switching • Memory Allocation • System Calls • Some slow down with interprocess calls • Now involves data marshalling • Size increase is less then 5%

  16. Application makes call PSL jump Kernel Validates parameters Maps Service into Slot 0 Possible Cache Flush Calls into to the service Service Runs Returns to Kernel Kernel Maps App into Slot 0 Possible cache flush Returns to App Win CE 5.0 System Calls App Service Kernel

  17. Application makes call Same PSL jump App stays mapped during the call Kernel Validates parameters Calls into to the service Service Runs Returns directly to the app Win CE 6.0 Beta System Calls App Kernel Service

  18. Kernel Security Enhancements

  19. Security • Early Threat Modeling of the kernel • Working with Microsoft Secure Windows Team and penetration testers • Double checked design to tighten up • System Calls • Handles • Exception Handling • Memory Allocation • Loader • And many other components

  20. Security and Robustness Features • Improved parameter validation for system calls • Per-Process Page and Handle tables • Greatly improves Process isolation • Improves code robustness • Secure Stack • System calls run on special kernel side stacks • Safe guards system calls from stack tampering • Robust Heaps • Heap control structures separated from heap data • Safe Remote Heaps for OS components • OS servers can open heaps in user process • R/W for servers, R/only for user • Performance optimization and safe from tampering

  21. New Features

  22. New Features • Per-Process Page Tables • Each process has its own page table • Pointers are unique to each process • Enables the new virtual memory model • Increases security • Per-Process Handle Tables • Each process has its own handle table • Handles have reference and usage counts • Increases security • Increased programming robustness • No more stale handles

  23. New Features Continued • Large Memory Mapped File Support • Support for mapping views into very large files • Up to 64-bit files • Big benefit for in car navigation and multimedia • Secure Loader • Enables of control of which executable and DLLs get loaded by the system • Uses encrypted signatures to identify the files • Foundation for a code based security model • Security is based on knowing what code is running instead of who the user is

  24. New Features Continued • User Mode UI service • Displays UI in user mode for kernel mode drivers • Keeps drivers from launching windows from inside the kernel • Virtual Alloc Ex functions • Memory management functions for drivers • Just like the Windows XP APIs • Enables drivers to allocate memory in user processes

  25. New Features Continued • Marshalling Helper Functions • Helper functions for interprocess data marshalling • Services that help drivers to handle user data • Monotonic clock • Always forward going clock independent of user clock • Enables services to calculate elapsed time

  26. New Features Continued • User Mode Services and Drivers • Run all services and some drivers in User Mode host • Saves kernel resources and increases robustness • Separate OAL • OAL has been split from the kernel • Allows independent updates • Kernel updates and OEM OAL updates can be done independently • Enables easier device updates

  27. Compatibility

  28. CPU Requirements • The same CPUs as Windows CE 5.0 • ARMV4I and above • MIPSII with sync instructions (ll, sc) • x86 • SH4 • Best performance is on CPUs with Physical tagged caches • Virtual-tag-cached CPUs have a small performance penalty and limitation on virtual mappings • Same hardware as Windows CE 5.0

  29. Compatibility • Binary compatibility for applications is the key goal • The general structure of the OS will be the same • Will maintain compatibility in CoreDLL • Minimize impact on Win32 APIs • Changes hidden in API libraries • Continue to shared DLL code • Well behaved SDK applications • Should work with little or no changes • Apps using undocumented techniques • Will likely have to be modified • Such as passing handles or pointers between processes • Main changes will be in how drivers access client memory • Some drivers will migrate with little work

  30. Porting Incompatible Apps • Some applications will need work • Improper use of handles • nonstandard memory usage • Use of some Windows CE specific APIs • Remove old tricks and workarounds • Such as handle sharing and pointer tricks • Our verification approach • Ported Windows Mobile 5.0 to Windows CE 6.0 Beta • Running Windows CE 5.0 commercial applications on Windows CE 6.0 Beta

  31. Other Porting • Drivers will require some work • System calls • Use of worker threads • Access to caller’s memory • BSP will need some work • New memory mappings • Changes to OAL to support image updates

  32. Compatibility Tester • Identifies removed, deprecated, and changed APIs • Supports both static and runtime analysis • Produces a detail report of any compatibility issues it finds • Includes documentation and suggestions • We will release it before Windows CE6.0 RTM • Will allow customers to prepare ahead of time

  33. Drivers Overview

  34. Kernel Mode Drivers • Drivers are loaded in the kernel space by device.dll • Have full access to the kernel’s data structures and memory • APIs used do not change • Link to a kernel version of coredll.dll called kcoredll.dll • Thin layer for API compatibility • Directly links the services together without thunk layer • Drivers needing the best performance should be kernel mode • Such as those with lots of quick calls

  35. User Mode Drivers • Loaded by udevices.exe • Mostly the same APIs as Kernel Mode • No access to kernel structures or memory • Kernel will marshal parameters duringsystem calls • Examples • Expansion buses like USB and SDIO • Keyboard and touch • Drivers where performance is not a factor should consider moving to user mode • Called less often and do more work

  36. Handling Calls • App memory already mapped correctly • Can access it without re-mapping pointers • Don’t need – These APIs are being removed • SetProcPermissions • MapPtrToProcess, UnMapPtr • Accessing callers memory • CopyIn / CopyOut • ReadProcessMemory / WriteProcessMemory • Virtual Alloc Ex APIs • Marshalling Helper Library • Provides APIs for handling user data

  37. OAL Changes • OAL split from kernel • Merged into NKLoader • Enables separate updates • Overall OAL structure remains the same • Same OEM functions • Access kernel through kernel interface • Changes to the OAL initialization • Memory mappings for new memory model

  38. Real Time

  39. Windows CE is a Real-Time OS • Real time is being able to respond to an interrupt in a bounded maximum time • Analysis by OMAC User Group shows that 95% of real-time applications require between 0.5ms to 10 ms respond time • And tolerate 10% variations, or 50µs to 1ms jitter Typical Real-Time Requirements 50µs to 1 ms Jitter Interrupt every .5 ms to 10 ms

  40. Real-Time Kernel • Windows CE achieves real-time by the design of the kernel and the drivers • The majority of the kernel and driver code can be interrupted • The uninterruptible parts are small discrete units so interrupts can be handled quickly • The length of the largest part is biggest latency • Windows CE 6.0 Beta kernel and drivers are designed with the same real-time constraints

  41. Windows CE Test Results • Respond time test using the following configuration • Samsung SMDK2410 development board • 200 MHz ARM with 16x16 cache • Windows CE 5.0 with full UI • Running a WMV video Windows CE Real-Time Test Results Time in microseconds (µs)

  42. Win CE 6.0 Beta Real-Time • The new kernel has the same response times as the current kernel • May even perform slightly better because of reduced system call overhead • Performance between app and kernel will be better • Drivers and services in services.exe will be slightly worse

  43. Platform Builder • No more multiple tools for development • Platform Builder now a plug in wizard in Visual Studio 2005 • OS designs are located now under %WINCEROOT%\OSDesigns • An OS design directory hierarchy is new too • %WINCEROOT%\OSDesigns\OSDesign1 • \OSDesign1 – directory for the OS design • OSDesign1.ncb – VC++ Intellisense data base • OSDesign1.sln - Visual Studio solution • OSDesign1.suo – Visual Studio solution user options

  44. OS Design directory structure • %WINCEROOT%\OSDesigns\OSDesign1\OSDesign1 • RelDir • Device_Emulator_ARMV4I_Debug • Device_Emulator_ARMV4I_Release • Subproject1 • WINCE600 • Name of BSP for OS design • cesysgen • OAK

  45. OS design templates

  46. The catalog • No more OSDesignView tree • Catalog view now shows selected components • Add components to design just by checking checkbox

  47. Adding an application • Adding a new project is very straight forward • In the Solution Explorer right click on the Subprojects node • Add a new project • Add an existing project

  48. New project wizard

  49. Added project • The newly added project is both a SOURCES project and has a PBXML file to describe the project to the IDE

More Related