The present invention generally relates to computer systems and more specifically to the design of payload applications for satellites.
Payload applications for satellites are usually developed from scratch. Each payload application requires the development and incorporation of new infrastructure software that coordinates a payload application with satellite hardware physical layers and operating systems. One problem that arises with this design process is that changes in the physical hardware layer often occur late in the development cycle, often requiring significant code modifications to each payload application. For example, the replacement of one vendor's communication board with another vendor's communication board, or a change from one system bus architecture to another, in the hardware layer can require a considerable rewriting of code for each payload application that utilizes the communication board. In order to avoid such extensive payload application code rewrites late in the development cycle, satellite development teams often commit themselves to lock-in to technologies very early in the design cycle, thus forgoing opportunities to use superior hardware technologies that might become available prior to deployment of the satellite.
For the reasons stated above and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the specification, there is a need in the art for improved systems and methods for satellite payload application development.
The Embodiments of the present invention provide methods and systems for the developing of payload applications for satellites and will be understood by reading and studying the following specification.
In one embodiment, an embedded computer processing system is provided. The system comprises a processor adapted to execute one or more payload software applications; at least one system bus coupled to the processor; and at least one hardware device coupled to the at least one system bus. The processor is further adapted to execute an interfacing software stack, wherein the one or more payload applications communicate data with the at least one hardware device by communicating with the software interface stack. The interfacing software stack includes a peripheral device driver layer responsive to the one or more payload software applications. The interfacing software stack further includes a device abstraction layer responsive to one or both of the one or more payload software applications and the peripheral device driver layer. The interfacing software stack further includes a bus abstraction layer responsive to one or more of the device abstraction layer, the one or more payload software applications and the peripheral device driver layer. The interfacing software stack further includes an infrastructure services layer responsive to one or more of the bus abstraction layer, the device abstraction layer, the one or more payload software applications and the peripheral device driver layer.
In another embodiment, a method for developing embedded processing systems is provided. The method comprises selecting a hardware layer configuration; and developing an interfacing software stack providing services from one or more of an infrastructure services layer, a bus abstraction layer, a device abstraction layer, and a peripheral device driver layer through one or more standard function calls.
In yet another embodiment, an interfacing software stack for embedded payload applications is provided. The software interface stack comprises a peripheral device driver layer responsive to one or more function calls from one or more payload software applications; a device abstraction layer responsive to one or more function calls from one or both of the one or more payload software applications and the peripheral device driver layer; a bus abstraction layer responsive to one or more function calls from one or more of the device abstraction layer, the one or more payload software applications and the peripheral device driver layer; and an infrastructure services layer responsive to one or more function calls from one or more of the bus abstraction layer, the device abstraction layer, the one or more payload software applications and the peripheral device driver layer.
Embodiments of the present invention can be more easily understood and further advantages and uses thereof more readily apparent, when considered in view of the description of the embodiments and the following figures in which:
In accordance with common practice, the various described features are not drawn to scale but are drawn to emphasize features relevant to the present invention. Reference characters denote like elements throughout figures and text.
In the following detailed description, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration specific illustrative embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that other embodiments may be utilized and that logical, mechanical and electrical changes may be made without departing from the scope of the present invention. The following detailed description is, therefore, not to be taken in a limiting sense.
Embodiments of the present invention provide a way to manage devices in a more portable way so that they are nearly independent of the bus, processor, and operating system to which they are attached. Embodiments of the present invention eliminate the need for payload applications 150 to include code customized to accommodate hardware layer 100 by providing a functionally modularized interfacing software stack 210, as illustrated in
In one embodiment, interfacing software stack 210 comprises an infrastructure services layer 211, a bus abstraction layer 212, a device abstraction layer 213, and a layer of one or more peripheral device drivers 214. Each layer of interfacing software stack 210 compartmentalizes key functions required for payload applications 150 to communicate with, and in some embodiments control, one of hardware devices 130-1 to 130-N. Each of the layers of interfacing software stack 210 is discussed in detail below.
In one embodiment, infrastructure services layer 211 provides low level functional support to payload applications 150, system bus abstraction layer 212, device abstraction layer 213, and peripheral device driver layer 214. The services provided by infrastructure services layer 211 are those infrastructure services that are typically necessary regardless of the hardware implementation (e.g. the processor 110 chipsets or system bus 120 architecture) used. The infrastructure services provided by infrastructure services layer 211 include, but are not limited to, error handling, exception mechanisms, diagnostics, event and error logging, threading, thread protection and mutual exclusion mechanisms. In one embodiment, infrastructure services layer 211 further includes typical O/S services extracted from O/S 115. When higher level layers require infrastructure services, they are accessed from the infrastructure services layer 211 through one or more standardized function calls.
A large variety of system bus 120 architectures are currently available for satellite developers to include in designing hardware layer 100. Current system bus technologies include, but are not limited to, peripheral component interconnect (PCI), modular bus, Rapid I/O and Space-Wire. Bus abstraction layer 212 provides payload applications 150, device abstraction layer 213, and device driver layer 214 with the necessary bus service functions to interface with, and communicate via a system bus 120. Through standardized function calls, bus abstraction layer 212 provides those bus services which are generic to the particular architecture of system bus 120. In one embodiment, the bus service functions provided by bus abstraction layer 212 include, but is not limited to, bus initialization, bus hardware query and bus discovery services. For example, in one embodiment, bus abstraction layer 212 supports a PCI system bus architecture. Bus abstraction layer 212 would then provide higher level layers those bus services which are generic to all PCI architectures.
Device abstraction layer 213 provides payload applications 150 and peripheral device driver layer 214 with necessary device management services to communicate with devices 130-1 to 130-N. In one embodiment, necessary device management services include standard functions such as managing device initializations, sessions, mutual exclusion of devices, and device discovery. Device abstraction layer 213 relieves payload applications 150 and peripheral device driver layer 214 from the need to know where in hardware layer 100 a particular hardware device is installed, what type of system bus architecture is being used, how to establish a session with the device, and how to maintain the session and session related states. Further, the dialog between device abstraction layer 213 and the higher level layers utilizes standardized function calls that are independent of the underlying specifications of hardware layer 100. The highest layer of interfacing software stack 210 is a peripheral device driver layer 214. In one embodiment, hardware devices 130-1 to 130-N include one or more of, but not limited to data input devices (e.g., environmental sensors, image capturing devices), output devices (e.g., monitors, printers), data storage devices (e.g., disk or tape drives, memory devices), communication devices (e.g. wireless communication devices, network adapters), mechanical device controller (e.g. controllers for motors, servos, solenoids, lighting, heaters), or any other device that provides services which expand the functional abilities of the system. As illustrated in
In one embodiment, when a payload application 150 requires the services of target device 130-1 (e.g., to capture an image), payload application 150 calls on standard function call provided by associated peripheral device driver 250-1 and located within peripheral device driver layer 214. The associated peripheral device driver in turn requests device abstraction layer 213 to establish a communication session between peripheral device driver layer 214 and target device 130-1.
In one embodiment, device abstraction layer 213 knows which system bus target device 130-1 is located on, and the bus architecture utilized by that system bus. For example, in one embodiment, device abstraction layer 213 knows that target device 130-1 is located on system bus 120 and that system bus 120 is a PCI bus. In one embodiment, device abstraction layer 213 is programmed to discover system bus 120's architecture and determine what devices are installed on system bus 120. In one embodiment, one or both of the architecture of system bus 120 and the installation of devices 130-1 to 130-N are coded into device abstraction layer 213. Once device abstraction layer 213 identifies the location of target device 130-1 on system bus 120, device abstraction layer 213 directs a request for initialization of system bus 120 to bus abstraction layer 212.
In one embodiment, upon request from a peripheral device driver 214, device abstraction layer 213 requests initialization of system bus 120 through bus services provided by bus abstraction layer 212, establishes a session between device 130-1 and the associated peripheral device driver 250-1 to 250-M in peripheral device driver layer 214, and maintains related session states for as long as payload application 150 requires access to device 130-1. In one embodiment, device abstraction layer 213 manages the exclusive use of device 130-1 for payload application 150, and prevents other applications from accessing device 130-1 while the session is open.
With embodiments of the present invention, it is no longer necessary for payload application developers to code their own software with functions for locating associated devices, identifying and initializing system buses, establishing sessions and managing session states, because these functions have been incorporated into bus abstraction layer 212 and device abstraction layer 213 as described above. In addition, basic services such as error handling, exception mechanisms, diagnostics, logging, threading, and thread protection are provided by infrastructure services layer 211. This allows the coding of a payload application to concentrate on the interface with the device drivers of peripheral device driver layer 214 to utilize the functions provided by an associated device 130-1 to 130-N. The interfacing software stack of the present invention relieves developers of payload applications 150 from the need to know where particular hardware devices are installed, what type of system bus architecture is used, how to establish a session with the devices, and how to maintain sessions and session related states.
As illustrated in
Embodiments of the present invention also enable both developers of payload applications and vendors of satellite systems to establish and utilize a library of standardized function code for developing their respective software. For example, the developer of a payload application utilizing the services of hardware device 130-1 may develop an internal subroutine containing the standardized function calls provided by associated peripheral device driver 250-1. In the future, the developer may simply reuse the code for that subroutine in other payload applications they develop for satellite systems using the same hardware device 130-1. In this fashion, payload application developers can build and maintain a library of subroutines for hardware devices they routinely utilize. Additionally, by relying on the standardized function calls provided by a peripheral device driver, payload application developers are insulated from the need to recode their application should a satellite system vendor alter hardware specifications, such as the system bus architecture.
In the same way, because of the modular design and standardized function calls of the abstractive infrastructure layer, embodiments of the present invention further allow satellite system vendors to reuse code developed and tested for layers 211-214 from previous projects when building an abstractive infrastructure layer for a specific project. For example a satellite system vendor may establish and utilize a library of infrastructure services layer codes for various combinations of O/S and processors. A library of previously used and tested code may be similarly established for peripheral device drivers, device abstraction layers, and bus abstraction layers. The use of standardized function calls enables the interoperability of layers selected from the library without the need for significant recoding of the layers for the specific project.
Embodiments of the present invention also allow satellite system vendor to create peripheral device drivers earlier in the development cycle (as soon the decision to use the device in the hardware layer is made) without the fear of having to necessarily create entirely new peripheral device drivers if changes in processor, operating system, or system bus architectures are later required. In fact, embodiments of the present invention allow development of peripheral device drivers without knowledge of the underlying processor core, operating system, or system bus architectures.
When a satellite system vendor decides to replace one or more of hardware devices 130-1 to 103-N manufactured by one vendor with devices providing the same primary function, but manufactured by different vendors, embodiments of the present invention allow developers to appropriately replace the associated peripheral device driver in peripheral device driver layer 214 without the need to recode the entirety of interfacing software stack 210. In the same way each layer of interfacing software stack localizes the software changes required due to changes in system hardware 100 specifications.
The method continues at 320 with developing an interfacing software stack that provides standardized functions to payload applications compartmentalized into software layers comprising one or more of infrastructure services, bus services, device management services and peripheral device drivers associated with the one or more hardware devices. In one embodiment, the one or more payload applications communicate with the interfacing software stack through one or more standard function calls associated with the standardized functions. In one embodiment the peripheral device drivers provide payload applications with standard function calls for accessing the one or more specialized functions of the at least one hardware device. In one embodiment, infrastructure services includes providing one or more of, error handling, exception handling, diagnostics, logging, threading, thread protection and mutual exclusion services. In one embodiment, providing bus services for the at least one system bus includes providing one or more of system bus initialization, system bus query services, and system bus discovery services. In one embodiment, providing device management services includes providing one or more of managing device initializations, managing communication sessions, mutual device exclusion services, and device discovery. The method continues at 330 with developing the payload application code. In one embodiment, the payload application code is designed to access functions and services provided by the layers of the interfacing software stack in order to communicate data with the underlying hardware layer. Accessing the hardware layer though interfacing software stack function calls significantly insulates payload applications from the need to be recoded when changes are made in hardware layer specifications. As illustrated by
Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that any arrangement, which is calculated to achieve the same purpose, may be substituted for the specific embodiment shown. This application is intended to cover any adaptations or variations of the present invention. Therefore, it is manifestly intended that this invention be limited only by the claims and the equivalents thereof.