Introduction There has always been (and there still is) confusion on terminology and usage of mutexes and semaphores. The main reason is that the term ‘semaphore’ has a different meaning depending on the context. We need to distinguish two contexts or levels: the concept and usage level, and the implementation level. This article is about the […]
System safety: hazard analysis
Introduction The goal of each system is to perform its intended function. Easier said than done in an imperfect world, and that is what this article is about: how to design a system in such a way that the probability of hazard exposure is acceptably low. The presented techniques are well-known in the world of […]
Guidelines to minimize ROM and RAM usage in low-end embedded systems
Introduction Both ROM and RAM strongly determine the cost of an MCU. And therefor, for an embedded developer, it is important to regard it as valuable resources. Especially for high-volume products (e.g. MCU’s for cars) for which cheap hardware is important, it is crucial to optimize ROM and RAM usage. In this post we assume the […]
Debounced Buttons
A button-driven handbrake Buttons (or switches, or keys) are quite common in the world of the embedded systems. In most cases buttons trigger a software action and – in our context – we will use buttons for configuring the settings of the charge controller. We can also use the buttons as a debugging utility. The […]
Not all processors have atomic instructions!
Recently we were involved in improving boot-up times of a Linux based platform. We noticed that the boot-up time was much longer than expected based on the processor speed. The only way to figure out what was happening was to profile the start-up procedure. Something that is not always easy on limited embedded platforms like […]
Driving LEDs by GPIO: finally resolved!
MCU pin configuration, GPIOs and a word on software architecture
Basic peripheral setup: pin configuration All MCUs have pins. They might come in different package types such as QFP (Quad Flat Package – Figure left) or BGA (Ball Grid Array – Figure right). But for us, embedded software engineers, pins or balls, we don’t really mind: MCUs have pins and we need to configure them. […]
Simple Platform Abstraction
What When prototyping, it is uncertain and sometimes even unlikely that the experimentation platform will be the basis of the final industrialized product. Therefor, it is good software developer workmanship to protect the logic development from change with regard to board, processor and real-time operating system, if and whenever possible. A platform abstraction – in […]
Recent Comments