`(12)
`(10) Patent No.:
`US 6,671,745 B1
`Mathuret al.
`(45) Date of Patent:
`Dec. 30, 2003
`
`
`US006671745B1
`
`(54) APPLICATION PROGRAM INTERFACES
`AND STRUCTURESIN A RESOURCE
`LIMITED OPERATING SYSTEM
`
`(75)
`
`Inventors: Sharad Mathur, Redmond, WA (US);
`:
`Gregory Hullender, Kirkland, WA
`(US); Mark Miller, Kirkland, WA
`(US); Bruce Johnson, Woodinville, WA
`C8);Michael Ginsberg, Redmond,
`(US)
`. on
`:
`(73) Assignee: (us)osoft Corporation, Redmond, WA
`(*) Notice:
`Subject to any disclaimer, the term of this
`:
`:
`patent is extended or adjusted under 35
`US.C. 154(b) by 0 days.
`(21) Appl. No.: 09/273,592
`(22)
`Filed:
`Mar.22, 1999
`
`(60)
`
`Related U.S. Application Data
`Provisional application No. 60/078,946, filed on Mar. 23,
`1998
`;
`Tint. Co eee creeeceneseneeecneeeeneeees GO06F 9/00
`(ST)
`(52) US. Che eseccsssccsssecee 709/328; 709/321; 709/223,
`:
`701/213; 342/357.06
`(58) Field of Search .....0..00 709/328, 321-327,
`709/310, 315, 223-226; 342/357.12, 357.06;
`701/213-216
`/
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`702/2
`5,600.44 A * 12/1907 Clark et al
`5.724.506 A
`3/1998 Cleronet al...395/200.01
`
`3/1999 LAW veesccscccsssssssveee 342/357...
`5,883,594 A *
`....... 342/357.12
`5,920,283 A *
`7/1999 Shaheen etal.
`
`5,999,125 A * 12/1999 Kurby 0.0.00...
`wes 342/357.1
`4/2000 Ashby et al. wee 707/2
`6,047,280 A *
`
`
`
`6/2000 Froeberg ..............- 342/357.12
`6,072,431 A *
`7/2000 Alexander, Jr.
`.
`.
`6,083,353 A *
`1/2001 Ashbyet al.
`....
`6,173,277 B1 *
`2/2001 Rhinehart
`....
`6,185,484 Bl *
`”
`5/2001 Itoetal. ......
`6,233,520 Bl *
`4/2002 Ashbyet al. oo... 707/102
`6,370,539 B1 *
`9/2002 Goldberg et al. ou... 701/36
`6,449,541 BL *
`—_
`OTHER PUBLICATIONS
`Edge Publishing.“Wireless Pen—based Computing: Penstuff
`& Trimble Navigation develop GPS standard for PenPoint.”.
`Jul 5, 1993.*
`Richter, Jeffrey. “Developing Applications for Microsoft
`Windows CE: An Overview of the Windows CE SDK and
`Visual C++ for Windows CE. Mar. 15, 1997."
`oo.
`MaaB, Henning. “Location—Aware Mobile Applications
`:
`og
`N
`based on Directory Services.” MOBICOM.1997.
`Bershad, B.N., et al., “Extensibility, Safety and Performance
`in
`the SPIN Operating
`system”, SIGOPS ’ 95,
`pp. 267-284
`(1995),
`peraning system
`? PP
`,
`Levy, M., “WindowsCE, At The Center of A Juggling Act”,
`Electrical Design News, 42(15), pp. 38-50, (Jul. 1997).
`Mendelsohn, N., “Operating systems for component soft-
`ware environments”, IEEE, 49-54, (1997).
`* cited by examiner
`.
`.
`Primary Examiner—St. John Courtenay, III
`Assistant Examiner—Lewis A. Bullock, Jr.
`(74) Attorney, Agent, or Firm—Workman, Nydegger
`(57)
`ABSTRACT
`for a
`A set of Application Program Interfaces (APIs)
`resource-limited environment are disclosed. The APIs pro-
`vide a mechanism for a computer application to interface
`with various componcnts and modulcs of an opcrating
`system for a resource-limited environment. The APIs further
`provide a mechanism to interface with input/output devices
`commonly found in embedded systems running in a
`resource-limited environment.
`
`21 Claims, 3 Drawing Sheets
`
`226~
`WINDOWS CE APPLICATIONS
`
`
`
`
` 208 202 206 204
`
`
`
`
`§
`OEM HARDWARE
`
`
`
`APPLE 1009
`
`
`
`200-1
`
`OEM
`
`
`
`224
`222
`ADD-ON TECHNOLOGIES
`WINDOWS CE SHELL
`220
`216
`
`CORE SYSTEM
`
`214
`
`KERNEL
`
`OAL
`
`[coreS|
`
`
`218
`
`FILE
`
`212
`
`GWES
`
`BUILT-IN
`DRIVERS
`
`
`
`comers
`
`S
`
`210
`
`
`
`DEVICE
`MANAGER
`
`iNSTALLABLE
`DRIVERS
`
`
`
`
`APPLE 1009
`
`1
`
`
`
`U.S. Patent
`
`Dec. 30, 2003
`
`Sheet 1 of 3
`
`US 6,671,745 BI
`
`|
`
`ozSNW3ISAS
`
`ae]O3O0IA
`
`Sy
`
`SNISSIOOUd
`
`A
`
`cS
`
`JANGING3NuG
`
`
`
`
`
`JOVINGINIJOVAUGINIJOVINAUINI
`
`2
`
`
`
`
`
`U.S. Patent
`
`Dec. 30, 2003
`
`Sheet 2 of 3
`
`US 6,671,745 BI
`
`912
`
`JOIAIO
`
`OLS
`
`
`
`STaVTIVLSNINI-LING
`
`
`
`SYSAINdSYIAING
`
`SNOLLVONdd¥JOSMOCNIM
`SNOLLVOINNINNODWALSAS3x09
`
`
`TISHS30SMOCNIMSSISOIONHOSLNO-ddV
`
`
`
`JOVIYSLNI
`
`92¢e
`
`00¢
`
`3
`
`
`
`
`U.S. Patent
`
`Dec.30, 2003
`
`Sheet 3 of 3
`
`US 6,671,745 B1
`
`502
`
`304
`
`E z©5a 3
`
`COMPONENT
`
`MODULEAPI
`
`06
`
`FIG. 3
`
`3508
`
`4
`
`
`
`US 6,671,745 Bl
`
`1
`APPLICATION PROGRAM INTERFACES
`AND STRUCTURES IN A RESOURCE
`LIMITED OPERATING SYSTEM
`
`RELATED FILES
`
`This application claims the benefit of U.S. Provisional
`Application No. 60/078,946, filed Mar. 23, 1998, which is
`hereby incorporated herein byreference.
`FIELD OF THE INVENTION
`
`This invention relates generally to computer operating
`systems, and morc particularly to application program intcr-
`faces for resource limited operating systems.
`
`COPYRIGHT NOTICE/PERMISSION
`
`A portion of the disclosure of this patent document
`contains material which is subject to copyright protection.
`The copyright owner has no objection to the facsimile
`reproduction by anyone of the patent documentorthe patent
`disclosure as it appears in the Patent and Trademark Office
`patent file or records, but othcrwisc reserves all copyright
`rights whatsoever. The following notice applies to the soft-
`ware and data as described belowandin the drawing hereto:
`Copyright© 1998, 1999, Microsoft Corporation, All Rights
`Reserved.
`
`BACKGROUND OF THE INVENTION
`
`The rapid evolution of personal computer technology
`continues to produce personal computers (PCs) that are
`smaller, cheaper and faster than their predecessors. Where
`computers once occupied entire rooms, they are now small
`enoughto fit in the palm of a user’s hand, hence the name
`“Palm-size PCs”. In addition, PCs are now small enough to
`be placed in environments outside of the home oroffice,
`such as an automobile. Further more, the new PCs may be
`embeddedin a variety of consumer devices and specialized
`industrial controllers. For the purposes of this application,
`all of the above-referenced PCs will be referred to collec-
`tively as “embedded systems.”
`The reduced size of embedded systems meansthat certain
`sacrifices need to be made. For example, a typical embedded
`system does not have fixed or removable disk drives such as
`hard disk, floppy disk, CD-ROM or DVD-ROMdrives, with
`the persistent storage of a typical embedded system com-
`prising flash memory or volatile memory with a battery
`refresh. In addition,
`the amount of RAM in the typical
`embedded system is also limited.
`In addition, output resources typical to a desktop PC may
`be missing or severely limited in an embedded system. For
`example, the display for a typical embedded system may
`comprise a small LCD screen with limited resolution and
`capable of displaying only grayscale or a limited number of
`colors. In certain environments, such as the automobile, the
`display may be an LCD sercen with a limited number of
`fixed icons and text areas. The display may be augmented
`with a computerized speech facility.
`Similarly, input resources may be limited or adapted for
`use in embedded systems. Kor example, many embedded
`systems do not have a mouse or other pointing device. In
`addition, some hand-held devices do not have a physical
`keyboard. Such embedded devices mayuse a touch sensitive
`display in conjunction with a virtual keyboard placed on the
`display. In addition, embedded devices may employ speech
`recognition for input.
`As a result of the above, specialized operating systems
`capable of running in the resource-limited environment of
`
`10
`
`15
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`the embedded system have been developed. An example of
`such an operating system is the Windows CE™ operating
`system from Microsoft Corporation.
`Applications running on the embedded system must also
`be capable of running in the resource limited environment
`described above. In embedded systems comprising Palm-
`size PCs, these applications are typically specialized ver-
`sions of applications available on the bigger siblings of the
`Palm-size PC, such as calendar programs, personal infor-
`mation managers, calculators, dictionaries and the like.
`In other environments, the applications running on the
`embedded system may be more specialized. For example, in
`an AutoPC,the applications may comprise applications that
`interface with an audio system, applications that report and
`use position and navigation information, and applications
`that monitor the condition and state of various other systems
`present in the automobile.
`In order to accommodate a large number of different
`application needs, operating systems typically provide APIs
`(Application Programming Interfaces) to a wide variety of
`functionality that is common to many differing applications.
`Anyone application generally uses only a small subsetof the
`available APIs. Providing a wide variety of APIs frees
`application developers from having to write code that would
`have to be potentially duplicated in each application.
`However,in the resource limited environment of the embed-
`ded system, there is typically a much more limited set of
`APIs available. This is because there is generally insufficient
`persistent and non-persistent memory available to support a
`large numberofdifferent APIs. Thus, a developer writing an
`application for an embedded system mayfind that he or she
`must develop code that would ordinarily be provided bythe
`operating system in a desktop’s or other larger computer’s
`operating system.
`As a result of the above, there is a need in the art for an
`operating system capable of running in the resource limited
`environment of an embedded system. Such an operating
`system should be customizable and adaptable to the wide
`variety environments that system designers may choose to
`place embedded systems, allowing developers to include
`only those components and modulesthat are necessary for a
`particular environment. In addition,
`the operating system
`should include APIs to operating system provided compo-
`nents in order prevent applications designers from having to
`duplicate commonly needed code. Finally,
`the operating
`system should provide APIs for components and modules
`that meet the unique input and output needs of an embedded
`system.
`
`SUMMARYOF THE INVENTION
`
`The above-mentioned shortcomings, disadvantages and
`problemsare addressed by the present invention, which will
`be understood by reading and studying the following speci-
`fication.
`
`A system is presented that includes a set of Application
`Program Interfaces (APIs) for a numberof software modules
`and components for resource limited environments. One
`example of a resource limited environmentis the embedded
`system, which comprises a variety of consumer devices and
`specialized industrial controllers, along with hand-held, or
`palm-size personal computers.
`the combination of
`One aspect of the system is that
`components and modules included in an operating system
`for resource limited environments is customizable and flex-
`ible. This allows an embedded system designer to include
`only those components and modules that are necessary for a
`
`5
`
`
`
`US 6,671,745 Bl
`
`3
`particular environment. As a result, scarce memory is not
`consumed by unneeded components, allowing more
`memory to be devoted to applications and other modules and
`components that are needed in the embedded system.
`Anotheraspectof the system is that APIs are provided that
`meet
`the unique input and output needs of the typical
`embedded system. For example, many embedded systems
`do not provided a keyboard or mousefor input. The system
`provides APIs to components and modules that provide
`alternative mechanismsof providing input. Thesealternative
`mechanisms include APIs to handwriting recognition
`engines that “read” strokes on a touch sensitive screen, and
`APIs to voice input components that allow a user to issue
`spoken commands to the system. Further, the system pro-
`vides APIs to components that output audible speech for
`those environments where a display monitor is impractical.
`Another aspect of the system is that the handling of “out
`of memory” conditions is customizable by an embedded
`system designer. This is important to systems with limited
`resources, because out of memory conditions are more likely
`to occur.
`
`A further aspect of the system is that an API to a position
`and navigation component is provided. This is useful for
`embedded system environments that are mobile, such as
`automobiles, trucks, and boats.
`The APIs summarized above, and various other APIs, will
`be described in detail in the next section and in the attached
`
`appendices.
`The present invention describes systems, clients, servers,
`methods, and computer-readable media of varying scope. In
`addition to the aspects and advantages of the present inven-
`tion described in this summary, further aspects and advan-
`tages of the invention will become apparent by reference to
`the drawings and by reading the detailed description that
`follows.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 shows a diagram of the hardware and operating
`environment in conjunction with which embodimentsof the
`invention may be practiced;
`FIG. 2 is a diagram illustrating a system-level overview of
`exemplary embodiments of an operating system for a
`resource limited environment; and
`FIG. 3 is a diagram further illustrating the relationship of
`modules, components and APIs according to an embodiment
`of the invention.
`
`“BRIEF DESCRIPTION OF THE APPENDICES
`
`Appendices A-L are stored on CD-ROMasthefile named
`13768.200.4.1.1 containing 6,477 KB and created on Jun.
`19, 2003.”
`
`DETAILED DESCRIPTION OF THE
`INVENTION
`
`In the following detailed description of exemplary
`embodiments of the invention, reference is made to the
`accompanying drawings and the appendices on CD-ROM
`that form a part hereof, and in which is shown by way of
`illustration specific exemplary embodiments in which the
`invention may be practiced. These embodiments are
`described in sufficient detail to enable those skilled in theart
`
`to practice the invention, and it is to be understood that other
`embodiments maybe utilized and that logical, mechanical,
`electrical and other changes maybe made without departing
`from the spirit or scope of the present
`invention. The
`
`10
`
`15
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`4
`following detailed descriptionis, therefore, not to be taken
`in a limiting sense, and the scope of the present invention is
`defined only by the appended claims.
`The detailed description is divided into four sections. In
`the first section, the hardware and the operating environment
`in conjunction with which embodiments of the invention
`may be practiced are described. In the second section, a
`system level overview of the invention is presented. In the
`third section, various APIs are presented allowing applica-
`tions to interface with various modules and components of
`an operating system. Finally, in the fourth section, a con-
`clusion of the detailed description is provided.
`
`Hardware and Operating Environment
`
`FIG. 1 is a diagram of the hardware and operating
`environment in conjunction with which embodimentsof the
`invention may be practiced. The description of FIG. 1 is
`intended to provide a brief, general description of suitable
`computer hardware and a suitable computing environmentin
`conjunction with which the invention may be implemented.
`Although not required, the invention is described in the
`general context of computer-executable instructions, such as
`program modules, being executed by a computer, such as a
`personal computer, a hand-held or palm-size computer, or an
`embedded system such as a computer in a consumer device
`or specialized industrial controller. Generally, program mod-
`ules include routines, programs, objects, components, data
`structures, etc., that perform particular tasks or implement
`particular abstract data types.
`Moreover, those skilled in the art will appreciate that the
`invention may be practiced with other computer system
`configurations, including hand-held devices, multiprocessor
`systems, microprocessor-based or programmable consumer
`electronics, network PCS, minicomputers, mainframe
`computers, and the like. The invention mayalso be practiced
`in distributed computing environments where tasks are
`performed by remote processing devices that are linked
`through a communications network. In a distributed com-
`puting environment, program modules may be located in
`both local and remote memorystorage devices.
`The exemplary hardware and operating environment of
`FIG. 1 for implementing the invention includes a general
`purpose computing device in the form of a computer 20,
`including a processing unit 21, a system memory22, anda
`system bus 23 that operatively couples various system
`components including the system memoryto the processing
`unit 21. There may be only one or there may be more than
`one processing unit 21, such that the processor of computer
`20 comprises a single central-processing unit (CPU), or a
`plurality of processing units, commonly referred to as a
`parallel] processing environment. The computer 20 may be a
`conventional computer, a distributed computer, or any other
`type of computer; the invention is not so limited.
`The system bus 23 may be any of several types of bus
`structures including a memorybus or memory controller, a
`peripheral bus, and a local bus using anyof a variety of bus
`architectures. The system memory mayalso be referred to as
`simply the memory, and includes read only memory (ROM)
`24 and random access memory (RAM) 25. A basic input/
`output system (BIOS) 26, containing the basic routines that
`help to transfer information between elements within the
`computer 20, such as during start-up, is stored in ROM 24.
`In one embodimentof the invention, the computer 20 further
`includes a hard disk drive 27 for reading from and writing
`to a hard disk, not shown, a magnetic disk drive 28 for
`reading from or writing to a removable magnetic disk 29,
`
`6
`
`
`
`US 6,671,745 Bl
`
`5
`and an optical disk drive 30 for reading from or writing, to
`a removable optical disk 31 such as a CD ROM orother
`optical media. In alternative embodiments of the invention,
`the functionality provided by the hard disk drive 27, mag-
`netic disk 29 and optical disk drive 30 is emulated using
`volatile or non-volatile RAM in order to conserve powerand
`reduce the size of the system.
`In these alternative
`embodiments,
`the RAM may be fixed in the computer
`system, or it may be a removable RAM device, such as a
`Compact Flash memory card.
`In an embodimentof the invention, the hard disk drive 27,
`magnetic disk drive 28, and optical disk drive 30 are
`connected to the system bus 23 by a hard disk drive interface
`32, a magnetic disk drive interface 33, and an optical disk
`drive interface 34, respectively. The drives and their asso-
`ciated computer-readable media provide nonvolatile storage
`ot computer-readable instructions, data structures, program
`modules and other data for the computer 20. It should be
`appreciated by those skilled in the art
`that any type of
`computer-readable media which can store data that is acces-
`sible by a computer, such as magnetic cassettes,
`flash
`memory cards, digital video disks, Bernoulli cartridges,
`random access memories (RAMs),
`read only memories
`(ROMs), and the like, may be used in the exemplary
`operating environment.
`A numberof program modules may be stored on the hard
`disk, magnetic disk 29, optical disk 31, ROM 24, or RAM
`25, including an operating system 35, one or more applica-
`tion programs 36, other program modules 37, and program
`data 38. A user may enter commandsand information into
`the personal computer 20 through input devices such as a
`keyboard 40 and pointing device 42. Other input devices
`(not shown) mayinclude a microphone, joystick, game pad,
`satellite dish, scanner, touch sensitive pad,or the like. These
`and other input devices are often connected to the processing
`unit 21 through a serial port interface 46 that is coupled to
`the system bus, but may be connected by other interfaces,
`such as a parallel port, game port, or a universal serial bus
`(USB). In addition, input to the system may be provided by
`a microphoneto receive audio input.
`A monitor 47 or other type of display device is also
`connected to the system bus 23 via an interface, such as a
`video adapter 48. In one embodimentof the invention, the
`monitor comprises a Liquid Crystal Display (LCD). In
`addition to the monitor, computers typically include other
`peripheral output devices (not shown), such as speakers and
`printers.
`The computer 20 may operate in a networked environ-
`ment using logical connections to one or more remote
`computers, such as a remote computer 49. These logical
`connections are achieved by a communication device
`coupled to or a part of the computer 20; the invention is not
`limited to a particular type of communications device. The
`remote computcr 49 may be anothcr computer, a scrver, a
`router, a network PC, a client, a peer device or other
`commonnetwork node, and typically includes many orall of
`the elements described above relative to the computer 20,
`although only a memory storage device 50 has been illus-
`trated in FIG. 1. The logical connections depicted in FIG. 1
`include a local-area network (LAN) 51 and a wide-area
`network (WAN) 52. Such networking environments are
`commonplace in offices, enterprise-wide computer
`networks, intranets and the Internet.
`Whenused in a LAN-networking environment, the com-
`puter 20 is connected to the local network 51 through a
`network interface or adapter 53, which is one type of
`
`10
`
`15
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`communications device. When used in a WAN-networking
`environment, the computer 20 typically includes a modem
`54, a type of communications device, or any other type of
`communications device for establishing communications
`over the wide area network 52, such as the Internet. The
`modem 54, which maybe internal or external, is connected
`to the system bus 23 via the serial port interface 46. In a
`networked environment, program modules depicted relative
`to the personal computer 20, or portions thereof, may be
`stored in the remote memorystorage device. It is appreciated
`that the network connections shown are exemplary and other
`means of and communications devices for establishing a
`communications link between the computers may be used.
`The hardware and operating environment in conjunction
`with which embodiments of the invention may be practiced
`has been described. The computer in conjunction with which
`embodiments of the invention may be practiced may be a
`conventional computer an hand-held or palm-size computer,
`a computer in an embedded system,a distributed computer,
`or any other type of computer;
`the invention is not so
`limited. Such a computer typically includes one or more
`processing units as its processor, and a computer-readable
`medium such as a memory. The computer mayalso include
`a communications device such as a network adapter or a
`modem, so that il is able to communicatively couple other
`computers.
`
`System Level Overview
`Asystemlevel overview of the operation of an exemplary
`embodiment of the invention is described by reference to
`FIGS. 2 and 3. The concepts of the invention are described
`as operating in a multiprocessing, multithreaded operating
`environment on a computer, such as computer 20 in FIG. 1.
`The exemplary operating environment comprises what is
`knowninthe art as an operating system. In this environment
`one or more applications, such application 226, interface
`with various modules and components of the operating
`system. In addition, the various modules and components of
`the operating system interface with each other. Finally, the
`modules, components and applications interface with hard-
`ware 202 present on the computer through what is known in
`the art as a device driver module, and through an Original
`Equipment Manufacturer (OEM)adaptation layer 208. In
`one embodiment of the invention, there are two types of
`device drivers, built-in drivers 206 and installable drivers
`204. The various modules will now be described in further
`detail.
`
`The core system interface 220 is the module through
`which applications can access the operating system. The
`core system interface 220 includes functions to transfer API
`calls to the appropriate operating system server process.
`In addition to including or exporting the APIs selected,the
`core system interface 220 includes components to support
`the following:
`Localization
`
`Local heap and memoryallocation
`Serial port device driver thunks
`Telephony API (TAPI)
`‘The shell module 222 manages the user interface and
`handles such tasks as launching software applications. In
`one embodiment of the invention,
`the operating system
`provides shell components that enable an embedded system
`designer to develop a customized shell 222 thatsatisfies the
`requirements of the target platform. Included in these com-
`ponents are:
`A Control Panel with applets familiar to desktop Windows
`users. The following applets are included: Communi-
`
`7
`
`
`
`US 6,671,745 Bl
`
`7
`cations; Display; Keyboard; Network; Owner; Pass-
`word; Power; Regional Settings, Remove Programs;
`Pointing Device Settings (Stylus); Sounds and Volume.
`A Notification API that lets an application register its
`name and an event with the system. When the event
`oceurs, the kernel will automatically start the named
`application. The API also allows an application to
`register a specific date and time at which the applica-
`tion shouldstart.
`
`Common controls and common dialogs, which are
`designed to provide to the user clear, simple, and
`meaniogful information and a means to furnish input to
`the system and applications as needed.
`Acommandline processor(that is, a console application)
`that supports a set of standard input and output API
`calls.
`
`10
`
`15
`
`Connectivity components (for example, to support remote
`application programming calls) between the develop-
`ment workstation and the embedded system target
`platform.
`In conjunction with a desktop, the shell module 222 also
`includes a desktop and task manager componentthat can be
`oplionally included or replaced. The task manager compo-
`nent includes the following basic functionality:
`An Active Tasks list of all the currently running, top-level
`applications;
`A Run button that allows a user to launch a software
`
`application;
`A Switch To button that allows a user to switch to an
`
`30
`
`application selected in the Active Taskslistbox.
`An End Task button that allows a user to terminate an
`
`application sclected in the Active Tasks listbox.
`A Cancel button that allows a user to close the Task-
`Manager window.
`Monitors the level of main battery and backup battery
`power(for battery-operated target platforms) and dis-
`plays an appropriate warning dialog box.
`Monitors system memory usage in the system and sends
`a messageto all top-level windows when the available
`system memory drops below a specific threshold. This
`allows applications to respond to the message by reduc-
`ing their memory usage as muchaspossible.
`The Add-on Technologies module 224 allows an embed-
`ded system developerto optionally include components such
`as OLE/COM automation that supports development of
`ActiveX-based applications, an active desktop shell and an
`Internet browser. Other componentsthat can be includedare
`Visual Basic run-time and Java script, and a subset of the
`Microsoft Foundation Classes (MFC). A further optional
`componentthat can be providedis a handwriting recognition
`engine with associated APIs. In one embodiment of the
`invention, handwriting applications interface with a touch
`sensitive input device through a component providing a
`software interface to the touch sensitive device.
`The kernel module 214 represents the base operating
`system functionality that must be present on all platforms.
`The kernel module includes memory management, process
`management, exception handling, and support for multitask-
`ing and multithreading.
`In one embodiment of the invention, the kernel 214 is
`designed specifically for small, fast, embedded devices. In
`this embodiment, the kernel supports a single 4 GB address
`space (a 2 GB virtual address and a 2 GB physical address
`range). In an embodimentof the invention, this 4 GB address
`space is divided into 33 “slots”, each of which has a size of
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`8
`32MB. The kernel protects each process by assigning each
`process to a unique, open slot in memory. The invention,
`however, is not limited to any particular physical or virtual
`address space orslot size, and other sizes may be chosen as
`those of skill in the art will recognize.
`The kernel 214 protects applications from accessing
`memory outside of their allocated slot by generating an
`exception. Applications can check for and handle such
`exceptions by using the try and except Windows CE func-
`tions. In one embodiment of the invention, the system is
`limited to 32 processes, but the number of threads running
`in a process is limited only by the amount of available
`memory. Those of skill in the art will appreciate that other
`values for the maximum number of processes could be
`chosen.
`The file system module 218 contains the functions that
`support persistent storage on the embedded system target
`platform. This storage is referred to as the “object store” and
`includes three different ways to store user data:
`The file system. The file system typically supports com-
`mon file manipulation functions, such as functions to
`create files and directories, read and write to files, and
`retrieve file and directory information.
`The registry. The system registry is similar to the regis-
`tries of the Windows 95 and Windows N'loperating
`systems. The registry for all applications, including the
`applications bundled in ROM,is stored in the object
`store.
`
`The Database API. The operating system, in one embodi-
`ment of the invention, has its own structured storage to
`offer an alternative to exposing user and application
`data in files or the registry. For example, a database is
`useful for storing raw data that an application will
`process before displaying to the end-user. Hand-held
`PC applications typically store schedule and contact
`information in databases.
`
`the file system
`In one embodiment of the invention,
`managed by file system module 218 is a transactioned
`system to reduce the possibility that data will be lost due to
`a critical failure, such as loss of power. Additionally, in one
`embodiment of the invention, the file system module 218
`implements a scheme (transactioned) of “mirroring” to
`mirror or track file system operations (not transactioned).
`The purpose for this implementation is to be able to restore
`a file system volume in the case that poweris lost during a
`critical sequence of operations being performed on the
`volume.
`In one embodimentof the invention, the operating envi-
`ronment combines the Win32 User and GDI (Graphics
`Device Interface)
`libraries into a GWES (Graphics,
`Windowing, and Events Subsystem) module 212. The event
`manager and window managerare analogous to Win32 Uscr,
`and the Win32 GDI is replaced with a smaller GDI more
`suitable to embedded systems. The GWES module 212
`includes multiplatform GDI components (supporting an
`associated display driver) that support color and grayscale
`display, palette management, TrueType fonts, Raster fonts,
`cursors, and printer device contexts (DCs).
`The GWES module 212 also supports a window manage-
`ment componentthat provides API functionstailored for the
`smaller display sizes typical of embedded operating sys-
`lems.
`
`The operating environmentof various embodimentsof the
`invention is event-driven. GWES module includes compo-
`neots to handle events, which in one embodiment of the
`invention are implemented as messages.
`Communications module 216 includes a variety of com-
`munications component options to support communications
`
`8
`
`
`
`9
`hardware. This includesserial, parallel, and network (wired
`and wireless) communications. Communications module
`216 includes the following selectable communications fea-
`tures:
`
`Serial I/O support
`Networking support including:
`NDIS 4.0 for local area networking
`PPP and SLIPfor serial link and modem networking
`Client-side Remote Access Server (RAS)
`Internet protocols
`Telephony API (TAPD
`PC Card support
`Infrared transceiver support
`In one embodiment of the invention, an embedded sys-
`tems designer must develop the OEM adaptation layer 208
`to create the platform specific kernel module 214. The OEM
`Adaptation Layer (OAL) module 208 allows an embedded
`system developer to adapt the operating system for a specific
`target platform by creating a thin layer of code that resides
`between the kernel module 214 and the target platform
`hardware 202. The OAL module 208 is specific for a
`particular CPU and target platform.
`The OAL module 208 includes interfaces such as the
`following:
`Interrupt service routine (ISR) handlers to support device
`drivers
`
`Real-time clock (RTC)
`Interval timer (used for the scheduler operation)
`In one embodimentof the invention, the RTC andinterval
`timer does not need to be adapted becauseit is provided on
`the CPU. In this case, these interfaces are implemented in
`the kernel module 214 rather than in the OAL 208.
`
`In addition to managing such functions as timing and
`power, the primary purpose of the OAL is to expose the
`target platform’s har