Cross-platform development involves developing software, such as operating systems or application programs, such that the software operates with computers having different central processing units (CPUs) from one central processor unit type to another. Cross-platform development is typically accomplished by using a computer system to emulate different processors, or with a software development board connected to a computer system.
FIG. 1 illustrates a conventional cross-platform development system 100 that includes a computer system 102 having processor emulation components. Computer system 102 includes a central processing unit 104, an operating system 106, and a cross-platform development application 108 that includes a processor emulator 110. Processor emulator 110 emulates a virtual processor inside of central processing unit 104, where the virtual processor is of a different type than processor 104.
The cross-platform development application 108 includes components or application tools, such as processor emulator 110, that enable software developers to configure, build, and debug new software applications and operating systems. With components of the cross-platform development application 108, a developer can design a new operating system, such as for a personal digital assistant or hand-held computing device, and include various features and device drivers. An image 112 of the new operating system can then be downloaded to processor emulator 110 that appears as an independent processor, but is actually a virtual processor.
A developer can utilize processor emulation for cross-platform development to view and debug a new software application or operating system in a window displayed on a display device 114 connected to, or integrated with, computer system 102. Additionally, a developer can debug the new software application or operating system with a keyboard 116 and mouse 118 connected to computer system 102. Cross-platform development with processor emulation is simplified because external hardware to run and test a new software application or operating system does not need to be connected to computer system 102. Additionally, existing peripheral input/output devices, such as display 114, keyboard 116, and mouse 118, connected to computer system 102, can be utilized to interact with the software application or operating system being developed.
Although cross-platform development with processor emulation is simplified for a developer, a virtual processor only emulates one type of processor and runs up to ten-times slower than an actual central processing unit. Processor emulation does not provide a realistic representation of how a new software application or operating system will perform when executed with the actual central processing unit that the virtual processor is emulating. Consequently, processor emulation is not reliable as a software debug tool for a final version of a product.
Cross-platform development of a new software application or operating system with a software development board is an alternative to processor emulation. A software development board can be configured with different processors from different manufacturers, and can be configured with many different hardware options and configurations. When a developer is first creating a new software application or operating system, hardware and processor components are unknown design variables because features of the new software application or operating system can influence which hardware and processor components are ultimately selected by the developer.
FIG. 2 illustrates a conventional cross-platform development system 200 that includes a computer system 202 connected to a software development board 204. Computer system 202 includes a central processing unit 206, an operating system 208, and a debug transport layer 210. The debug transport layer 210 is a connection interface for a physical connection 212 to software development board 204. Typically, transport layer 210 is implemented as an Ethernet debug transport, and physical connection 212 is an Ethernet connection.
Software development board 204 includes a central processing unit 214, a read only memory (ROM) 216, and a random access memory (RAM) 218. Conventional software development board 204 also includes a system of connections 220 for peripheral input/output devices, such as a keyboard input/output 222 for an external keyboard 224, a mouse input/output 226 for an external mouse 228, and a display input/output 230 for an external display device 232. Software development boards also typically include additional debug connectors, debug indicators such as LEDs, and expansion slots for variable hardware configurations. These additional components also add to the expense a software development board.
Software development board 204 maintains a bootloader application 234 in ROM 216. A bootloader 234 is the only software code that is maintained on software development board 204 when the board is first set up for testing. The bootloader 234 communicates with computer system 202 via physical connection 212, or simply waits to receive an operating system image from computer system 202.
When a developer configures and builds a new operating system, an image 236 of the new operating system is downloaded to RAM 218 on software development board 204 via the debug transport layer 210 and physical connection 212. When the operating system image 236 is downloaded and stored in RAM 218, bootloader 234 transfers execution of the software development board 204 to the new operating system which executes on central processing unit 214. The developer can debug with the new operating system with the keyboard 224, mouse 228, and display device 232 connected to the software development board 204.
Software development boards that are configurable for different processors and the many different possible hardware components and configurations are expensive and require considerable user setup before any new software application or operating system can be tested. Initial setup can be tedious because software development boards are designed to be configurable. For example, some boards are sold new without a ROM component, and some boards require setup and configuration of a data input/output EPROM program, binary files, dip switch settings, and other similar configuration requirements.
Additionally, software development boards are designed to use peripheral input/output devices, such as a keyboard, a mouse, and/or a display, that are connected directly to the boards for user interaction. The additional requirement of direct-connect peripheral input/output devices adds to the already expensive initial cost of a software development board.