Colin Walls
MISRA C: A Focus on Writing Clear, Maintainable Code
Status: Available NowMISRA C is a programming standard that is focussed on writing safe, secure code using the C language. This is achieved by the definition of a number of guidelines that lead the developer away from operations and constructs that may compromise the safety of the code. By taking a fresh look at the standard, this session concentrates on the benefits of MISRA C in an additional priority in embedded software development: the writing of clear and maintainable code.
Live Q&A - MISRA C: A Focus on Writing Clear, Maintainable Code
Status: Available NowLive Q&A with Colin Walls for the talk titled MISRA C: A Focus on Writing Clear, Maintainable Code
Dynamic Memory Allocation & Fragmentation in C/C++
Status: Available NowIn 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.
Power Management in Embedded Systems
Status: Available NowThe importance of power management in today’s embedded designs has been steadily growing as an increasing number of battery powered devices are developed. Often power optimizations are left to the very end of the project cycle, almost as an afterthought. In this session we will discuss design considerations that should be made when starting a new power sensitive embedded design, which include choosing the hardware with desired capabilities, defining a hardware architecture that will allow software to dynamically control power consumption, defining appropriate power usage profiles, making the appropriate choice of an operating system and drivers, choosing measurable power goals and providing these goals to the software development team to track throughout the development process.
Live Q&A - Dynamic Memory Allocation & Fragmentation in C/C++
Status: Available NowLive Q&A with Colin Walls for the talk titled Dynamic Memory Allocation & Fragmentation in C/C++
C - The Language of Embedded
Status: Available NowAlthough not designed for embedded software development, C is the most popular programming language for such application. We will consider why the language is so popular and conduct a brief "refresher" of C language functionality, with an emphasis on the benefits to the embedded developer.
Live Q&A - C - The Language of Embedded
Status: Available NowLive Q&A with Colin Walls for the talk titled C - The Language of Embedded
Self-testing in Embedded Systems
Status: Available NowAll electronic systems carry the possibility of failure. An embedded system has intrinsic intelligence that facilitates the possibility of predicting failure and mitigating its effects. This talk will review the options for self-testing that are open to the embedded software developer. Testing algorithms for memory will be outlined and some ideas for self-monitoring software in multi-tasking and multi-CPU systems will be discussed.
Live Q&A - Self-testing in Embedded Systems
Status: Available NowLive Q&A with Colin Walls for the talk titled Self-testing in Embedded Systems
How to Measure RTOS Performance
Status: Available NowIn the world of smart phones and tablet PCs memory might be cheap, but in the more constrained universe of deeply embedded devices, such as those that support the IoT, 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 session takes a look at “typical” reported performance metrics for an RTOS in the embedded industry.
Operating Systems for Embedded Applications (2020)
Status: Available NowMost modern embedded applications employ and operating system of some sort. We will look at how operating systems work - the scheduler and various services provided by an OS to the application code - and at the options open for OS selection. We will also compare the use of commercial, open source and in-house products.