EmbeddedRelated.com

Software Development for Parallel and Multi-Core Processing

Kenn R. Luecke

The embedded software industry wants microprocessors with increased computing functionality that maintains or reduces space, weight, and power (SWaP). Single core processors were the key embedded industry solution between 1980 and 2000 when large performance increases were being achieved on a yearly basis and were fulfilling the prophecy of Moore's Law. Moore's Law states that "the number of transistors that can be placed inexpensively on an integrated circuit doubles approximately every two years." With the increased transistors, came microprocessors with greater computing throughput while space, weight and power were decreasing. However, this 'free lunch' did not last forever. The additional power required for greater performance improvements became too great starting in 2000. Hence, single core microprocessors are no longer an optimal solution.


Improving performance for dynamic memory allocation

Marco Varlese (Intel)

Author provides a good overview of the problems associated with dynamic memory allocation in embedded systems. He then introduces a dynamic memory allocation algorithm and a hash table called "busyhash". The paper concludes with performance comparisons of the standard and the optimized dynamic memory allocation methods.


Memory allocation in C

Leslie Aldridge

This article is about dynamic memory allocation in C in the context of embedded programming. It describes the process of dynamically allocating memory with visual aids. The article concludes with a practical data communications switch example which includes a sample code in C.


A Guide to Approximations

Jack G. Ganssle

Most embedded processors don’t know how to compute trig and other complex functions. Programming in C we’re content to call a library routine that does all of the work for us. Unhappily this optimistic approach often fails in real time systems where size, speed and accuracy are all important issues. The compiler’s runtime package is a one-size-fits-all proposition. It gives a reasonable trade-off of speed and precision. But every embedded system is different, with different requirements. In some cases it makes sense to write our own approximation routines. Why?


Techniques for Programming Embedded Systems

Giuseppe Russo, Angelo Di Sena

Today, the term “embedded system” is widely used. But, not only is the term widely used, we continuously use embedded systems throughout our lives. Coffee makers, ATM machines, household appliances, and even automobiles are all either embedded systems or contain embedded systems. Generically, we can say that an embedded system is a combination of hardware equipment and software tools designed to perform a particular function. It differs from a common PC in that it is limited in functionality. A typical PC is more flexible and can perform a wide range of tasks, while an embedded system performs a limited number of tasks–often with strict constraints in terms of resource availability (small memory size, low processor clock speed, and so forth) and time constraints. Due to the limited number of tasks performed by embedded systems, design engineers must optimize these systems to reduce the size and cost of a product while increasing the reliability and performance. This article discusses embedded system components and provides some techniques and considerations for programming an embedded system.