How we got here- Part 1

Posted on April 22, 2015

By Jamie Packer- VP of Customer Engineering

Following the recent article in The New Yorker about the 30th anniversary of the GNU Manifesto, I thought it would be interesting to review the history of the technologies behind the development of SOMNIUM's software development tools.

There are two strands of technology development that have got us to where we are today: the development of the embedded processor, and the supporting software tools. Both of these have a long history and, rather than go back to the very first computer and programming language, we can start with the first single-chip CPU and the first C compiler. But even this takes us back more than 40 years. In this first article I will look at the software. Another post will review the development of microprocessors, leading to those commonly used in embedded systems.

(Text continues below graphic.)
Industry timeline

About 80% of embedded systems are programmed in C and C++ (about 80% of the remainder use Java or assembler). The C language goes back to the development of Unix at Bell Labs between 1969 and 1973. C was developed as an extension of an earlier language called, not surprisingly, B by adding types and data structures. B itself was derived from another language called BCPL which came from Cambridge University. (In the next article, we will end up back in Cambridge.)

C was initially intended as a relatively low-level language to implement the Unix operating system for the PDP-11. It wasn't designed as a portable language, but soon after its initial release in 1972 the compiler was ported to a number of other architectures.

C was popular as system programming language because of its efficiency and the ease of accessing hardware features directly. The informal language standard was, for many years the book, "The C Programming Language" by Brian Kernighan and Dennis Ritchie. The language described in the original book and the coding style used are commonly referred to as K&R C. An updated language specification was published as an ANSI and ISO standard in 1990.

In 1983 Richard Stallman announced his plan to develop a complete Unix-compatible software system. Work started in 1984 and three years later the first GCC compiler was released. Since then it has been extended to support more languages and has been ported to more hosts and targets than any other compiler. In 1995 the compiler was ported to the ARM architecture. It has since become the most popular compiler for embedded systems. ARM is now maintaining a GCC toolchain targeting ARM processors, as part of its ongoing commitment to enhancing GCC compiler support for the ARM architecture.

There are several reasons for the popularity of GCC: it is very mature; it is supported as a compiler or cross-complier on a very large number of systems; it scales from massively-parallel high performance computers to embedded systems; there is a huge user base to identify any bugs and a very large number of developers; and, finally, it has good standards compliance and a clear roadmap for the future.

In the mid '90s, IBM decided to create a generic development platform based around an integrated development environment (IDE) written in Java. The idea was that this would be used by all of their customers using any of IBM's tools and third-party plugins. This became known as Eclipse and was released as open source in 2001. Since then, it has been adopted as the IDE for a wide range of software tools. It is now widely used for software development and debugging for languages including C, C++ and Java.

The availability of these high quality open-source tools has enabled companies such as Freescale to provide entry-level development tools free of charge.

SOMNIUM has built on and extended this infrastructure of industry-standard tools to develop DRT, a toolchain which can generate significantly smaller code with no loss of performance and with no changes to your source code. We released the first product in February 2015 and are committed to adding even more optimizations and extending the range of ARM devices supported in future releases. DRT users also get access to professional support from the SOMNIUM team.

Part 2 of this series will be released in the coming weeks. To get an update when it is posted follow us on social media. Links can be found at the end of this post. 

About the author

Jamie heads SOMNIUM's customer engineering organization, which provides documentation and customer support. He has over 30 years experience in the semiconductor industry working for major semiconductor companies, such as STMicroelectronics and Infineon, as well as several smaller companies and startups. He has worked in SoC design and verification, software development and customer support.

Download a free trial of SOMNIUM DRT

   Got a question?