Last week, I attended the Embedded Conference Scandinavia – ECS – which takes place every year in Kista, the high-tech city near Stockholm. The event was celebrating its 10th anniversary and I have have been a contributor to the conference program for a good many of those 10 years. Like most technical conferences, ECS rides on the back of a small trade show. Unusually for a properly vetted conference, attendance is free of charge, which may explain why all four conference tracks seemed to be well subscribed …
I only attended the first day of the 2-day event and was impressed by the overall attendance and the good buzz on the trade show floor. As I mentioned, the conference was well attended too and I was pleased to have a very good sized audience at both my presentations:
In the world of smart phones and tablet PCs memory might be cheap, but in the more constrained universe of deeply embedded devices, it is still a precious resource. This is one of the many reasons why most 16- and 32-bit embedded designs rely on the services of a scalable real-time operating system (RTOS). An RTOS allows product designers to focus on the added value of their solution while delegating efficient resource (memory, peripheral, etc.) management. In addition to footprint advantages, an RTOS operates with a degree of determinism that is an essential requirement for a variety of embedded applications. This paper takes a look at “typical” reported performance metrics for an RTOS in the embedded industry.
Dynamic Memory Allocation & Fragmentation in C & C++
In C and C++, it can be very convenient to allocate and de-allocate blocks of memory as and when needed. This is certainly standard practice in both languages and almost unavoidable in C++. However, the handling of such dynamic memory can be problematic and inefficient. For desktop applications, where memory is freely available, these difficulties can be ignored. For embedded – generally real time – applications, ignoring the issues is not an option.
Dynamic memory allocation tends to be non-deterministic; the time taken to allocate memory may not be predictable and the memory pool may become fragmented, resulting in unexpected allocation failures. In this session the problems will be outlined in detail and an approach to deterministic dynamic memory allocation detailed.
If you would like copies of my slides, please email or contact me via social media.