Table of contents
Embedded software architecture
Hardware abstraction layer and interfaces
Simple Platform Abstraction: how to build a Hardware Abstraction Layer?
Simple Platform Abstraction: how to define a timer, thread, lock or queue interface?
MCU pin configuration, GPIOs and a word on software architecture: interfaces for microcontroller pin configuration and GPIO. Includes a paragraph of how your application code should look like.
Driving LEDs by GPIO: finally resolved!: how to design a LED interface and abstraction?
Debounced Buttons: how to debounce gpio switches?
ADC driver for the energy harvester: ADC software interface.
PWM: PWM description and software interface.
I2C and SPI: advantages and disadvantages of both buses.
Architectural views
Our at-first-sight trivial product: a hybrid solar/wind energy harvester (aka battery charger): context view of the charge controller.
Charge controller system architecture: context view and functional view of our charge controller (the energy harvester as a power management device).
All about mutexes and semaphores
Not all processors have atomic instructions!: do you want to know more about atomic instructions and their applications?
Mutexes and semaphores: two concepts for two different use cases (part1): the difference between resource protection and synchronization.
Mutexes and semaphores: the FreeRTOS implementation (part2): two concepts applied on FreeRTOS.
User level spin locks revisited: when to use spin locks?
Programs, processes and threads
Programs, processes and threads – Part 1: what are programs? What are processes? Several examples e.g. FreeRTOS, Linux and GHS Integrity.
Programs, processes and thread – Part 2: a thread in Linux, Integrity RTOS and FreeRTOS.
Guidelines
Guidelines to minimize ROM and RAM usage in low-end embedded systems: how to code for ‘const’? Various topics about toolchain configuration.
Memory management in embedded devices: Stack or heap?: 2 memory allocation schemes… or is there a third way?
Embedded device communication: use a standard or design a custom communication protocol?
Hardware-Software partitioning: how to define boundaries between tasks which can be implemented in hardware or software?
Storing settings and data on an embedded device: which strategy for which device?
Embedded software coding
Code quality
Adopting MISRA-C guidelines in your software development process – best practices: want to enforce coding rules?
3 ways to boost your performance as a developer: …and how to deliver quality?
Guidelines to minimize ROM and RAM usage in low-end embedded systems: includes a section about writing good code.
The embedded hierarchy: part1, part2.
Object-orientation
How procedural code evolves to object-oriented code
Object-orientation in C: part1, part2, part3, part4 and part5.
Real-time
You can follow our real-time systems track here.
Other
Embedded device boot: first-level, second-level bootloader.
Recent Comments