Green Hills Software
Encyclopedia
Green Hills Software is a privately owned company that builds operating systems and development tools for embedded system
s. The company was founded in 1982 by Dan O'Dowd and Carl Rosenberg. They are headquartered in Santa Barbara, California
.
compiler
s for C
, C++
, Fortran
, and Ada
. The compilers target a variety of 32- and 64-bit platforms, including ARC, ARM
, Blackfin
, ColdFire, MIPS
, PowerPC
, SuperH
, StarCore, x86
, V850
, and XScale
.
The Green Hills C compilers support ANSI C
(ANSI X3.159-1989) and C99
, and provide several common extensions and dialects, including MISRA C
diagnostics, K&R C (advertised as compatible with Bell Labs
' original Portable C Compiler
), and many GNU C extensions.
Embedded system
An embedded system is a computer system designed for specific control functions within a larger system. often with real-time computing constraints. It is embedded as part of a complete device often including hardware and mechanical parts. By contrast, a general-purpose computer, such as a personal...
s. The company was founded in 1982 by Dan O'Dowd and Carl Rosenberg. They are headquartered in Santa Barbara, California
Santa Barbara, California
Santa Barbara is the county seat of Santa Barbara County, California, United States. Situated on an east-west trending section of coastline, the longest such section on the West Coast of the United States, the city lies between the steeply-rising Santa Ynez Mountains and the Pacific Ocean...
.
Real-time operating systems (RTOS)
- INTEGRITYIntegrity (operating system)INTEGRITY is a real-time operating system produced and marketed by Green Hills Software. It is royalty-free, POSIX-certified, and intended for use in embedded systems needing reliability, availability, and fault tolerance. It is built atop the velOSity microkernel and is intended mainly for modern...
is a highly secure POSIXPOSIXPOSIX , an acronym for "Portable Operating System Interface", is a family of standards specified by the IEEE for maintaining compatibility between operating systems...
-certified real-time operating systemReal-time operating systemA real-time operating system is an operating system intended to serve real-time application requests.A key characteristic of a RTOS is the level of its consistency concerning the amount of time it takes to accept and complete an application's task; the variability is jitter...
intended for use in embedded systems requiring reliability, security and fault tolerance. - INTEGRITY-178B is a multi-level secure, ARINC-653-1ARINC 653ARINC 653 is a software specification for space and time partitioning in Safety-critical avionics Real-time operating systems...
–compliant, partitioned real-time operating system (RTOS). It is an operating system that uniquely complies with the software assurance requirements of RTCA/DO-178B Level A for safety and reliability, and the information assurance requirements of the U.S. Government's Separation Kernel Protection Profile (SKPP) for security. INTEGRITY-178B has been certified by the National Information Assurance Partnership (NIAP), a U.S. government initiative operated by the National Security Agency (NSA), to Common Criteria Evaluation Assurance Level (EAL) 6+, High Robustness on two different occasions with the first certification occurring in November 2008. It is the only operating system to have completed this level of security certification with the US Government. - velOSity is a royalty-free real-time operating system for processors without a full memory management unitMemory management unitA memory management unit , sometimes called paged memory management unit , is a computer hardware component responsible for handling accesses to memory requested by the CPU...
. - µ-velOSity is a real-time microkernelMicrokernelIn computer science, a microkernel is the near-minimum amount of software that can provide the mechanisms needed to implement an operating system . These mechanisms include low-level address space management, thread management, and inter-process communication...
for resource-constrained devices.
Compilers
Green Hills produces optimizingCompiler optimization
Compiler optimization is the process of tuning the output of a compiler to minimize or maximize some attributes of an executable computer program. The most common requirement is to minimize the time taken to execute a program; a less common one is to minimize the amount of memory occupied...
compiler
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...
s for C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
, C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
, Fortran
Fortran
Fortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing...
, and Ada
Ada (programming language)
Ada is a structured, statically typed, imperative, wide-spectrum, and object-oriented high-level computer programming language, extended from Pascal and other languages...
. The compilers target a variety of 32- and 64-bit platforms, including ARC, ARM
ARM architecture
ARM is a 32-bit reduced instruction set computer instruction set architecture developed by ARM Holdings. It was named the Advanced RISC Machine, and before that, the Acorn RISC Machine. The ARM architecture is the most widely used 32-bit ISA in numbers produced...
, Blackfin
Blackfin
The Blackfin is a family of 16- or 32-bit microprocessors developed, manufactured and marketed by Analog Devices. The family is characterized by their built-in, fixed-point digital signal processor functionality supplied by 16-bit Multiply–accumulates , accompanied on-chip by a small and...
, ColdFire, MIPS
MIPS architecture
MIPS is a reduced instruction set computer instruction set architecture developed by MIPS Technologies . The early MIPS architectures were 32-bit, and later versions were 64-bit...
, PowerPC
PowerPC
PowerPC is a RISC architecture created by the 1991 Apple–IBM–Motorola alliance, known as AIM...
, SuperH
SuperH
SuperH is a 32-bit reduced instruction set computer instruction set architecture developed by Hitachi. It is implemented by microcontrollers and microprocessors for embedded systems....
, StarCore, x86
X86 architecture
The term x86 refers to a family of instruction set architectures based on the Intel 8086 CPU. The 8086 was launched in 1978 as a fully 16-bit extension of Intel's 8-bit based 8080 microprocessor and also introduced segmentation to overcome the 16-bit addressing barrier of such designs...
, V850
V850
The Renesas Electronics V850 is a 32-bit RISC CPU core architecture for embedded microcontrollers originally developed and manufactured by NEC, succeeded by V850 variants named V850ES, V850E, and V850E2 which run uClinux. Compilers available for it include the GNU Compiler Collection, IAR Systems...
, and XScale
XScale
The XScale, a microprocessor core, is Intel's and Marvell's implementation of the ARMv5 architecture, and consists of several distinct families: IXP, IXC, IOP, PXA and CE . Intel sold the PXA family to Marvell Technology Group in June 2006....
.
The Green Hills C compilers support ANSI C
ANSI C
ANSI C refers to the family of successive standards published by the American National Standards Institute for the C programming language. Software developers writing in C are encouraged to conform to the standards, as doing so aids portability between compilers.-History and outlook:The first...
(ANSI X3.159-1989) and C99
C99
C99 is a modern dialect of the C programming language. It extends the previous version with new linguistic and library features, and helps implementations make better use of available computer hardware and compiler technology.-History:...
, and provide several common extensions and dialects, including MISRA C
MISRA C
MISRA C is a software development standard for the C programming language developed by MISRA . Its aims are to facilitate code safety, portability and reliability in the context of embedded systems, specifically those systems programmed in ISO C...
diagnostics, K&R C (advertised as compatible with Bell Labs
Bell Labs
Bell Laboratories is the research and development subsidiary of the French-owned Alcatel-Lucent and previously of the American Telephone & Telegraph Company , half-owned through its Western Electric manufacturing subsidiary.Bell Laboratories operates its...
' original Portable C Compiler
Portable C Compiler
The Portable C Compiler is an early compiler for the C programming language written by Stephen C...
), and many GNU C extensions.
Integrated development environment (IDE)
- MULTI is an IDEIntegrated development environmentAn integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...
for CC (programming language)C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
, C++C++C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
, EC++Embedded C++Embedded C++ is a dialect of the C++ programming language for embedded systems. It was defined by an industry group led by major Japanese central processing unit manufacturers, including NEC, Hitachi, Fujitsu, and Toshiba, to address the shortcomings of C++ for embedded applications...
, and AdaAda (programming language)Ada is a structured, statically typed, imperative, wide-spectrum, and object-oriented high-level computer programming language, extended from Pascal and other languages...
. Aimed at embedded engineers, it is tightly coupled with Green Hills' compilers and hardware debug probes. It includes an integrated CVS browser, a diffDiffIn computing, diff is a file comparison utility that outputs the differences between two files. It is typically used to show the changes between one version of a file and a former version of the same file. Diff displays the changes made per line for text files. Modern implementations also...
viewer, code completion, graphical class hierarchy generators, run-time error checking, and scriptable breakpointBreakpointIn software development, a breakpoint is an intentional stopping or pausing place in a program, put in place for debugging purposes. It is also sometimes simply referred to as a pause....
s. - TimeMachine is a set of tools for optimizing and debugging C and C++ software. TimeMachine records every instruction executed on a CPU, archives the instructions, and allows the developer to review the executed instructions. The TimeMachine debuggerDebuggerA debugger or debugging tool is a computer program that is used to test and debug other programs . The code to be examined might alternatively be running on an instruction set simulator , a technique that allows great power in its ability to halt when specific conditions are encountered but which...
uses the recorded instructions to reconstruct the system's state backwards in time; hence the name of the product. On embedded processors, TimeMachine is implemented using a trace port on the CPU. Trace ports are built directly on the processor die and thus have virtually no performance penalties, allowing TimeMachine to collect debug information at full speed. TimeMachine can be used for analyzing race conditionRace conditionA race condition or race hazard is a flaw in an electronic system or process whereby the output or result of the process is unexpectedly and critically dependent on the sequence or timing of other events...
s and other Heisenbugs. The ability to replay instruction sequences at a later time may be used by embedded engineers who cannot use breakpoints because halting the program is impossible (for example, when debugging the flight controller on an aircraft).. GDB incorporated a similar "reverse debugging" capability in its 7.0 release. - TraceEdge is a trace collector that allows the programmer to use TimeMachine on microprocessors without a built-in trace port.
Processor probes and hardware debug devices
- The Green Hills Probe is a hardware debug probe for load, control, debug, and test on a target system without the need for prior board initialization. Through a JTAGJTAGJoint Test Action Group is the common name for what was later standardized as the IEEE 1149.1 Standard Test Access Port and Boundary-Scan Architecture. It was initially devised for testing printed circuit boards using boundary scan and is still widely used for this application.Today JTAG is also...
or BDM test port, the probe can debug and control the core state (such as CPU internal registers) as well as the system state (external RAM and flash memoryFlash memoryFlash memory is a non-volatile computer storage chip that can be electrically erased and reprogrammed. It was developed from EEPROM and must be erased in fairly large blocks before these can be rewritten with new data...
). - The SuperTrace Probe adds a trace collection system that non-intrusively captures up to one gigabyte of trace data in real time at processor speeds up to 1.2 GHz.
- The Slingshot debug probe has a USB interface.
External links
- Green Hills Software homepage
- Profile at biz.yahoo.com
- Article on SD Times award at earthtimes.org
- Article at EDN