Assembly Language and Embedded Systems Development

On the Value of Assembly Language, and Resources to get you started in Digital Logic, Computer Architecture, and Assembly Language programming.

Despite advances in programming technologies since the 1970s, there are still reasons to understand and learn assembly language programming. Contrary to what one may imagine, Assembly Language is not a relic of the past, even though a typical applications programmer will almost never need to drop into assembly.

In this article, we’ll look at practical situations in embedded systems development in which assembly language programming is still used, pedagogical reasons to learn assembly language, and provide resources and projects for gaining a working knowledge of digital logic, computer architecture, and assembly language programming.

Continue reading this article…

Sensors and Systems


… Integrating Sensors into the Ubiquitous Computing Stack

“Smart dust”, tiny leaf sensors, wearable computing — these and a host of other sensors that make measurements and communicate without requiring human intervention can now be readily integrated into dispersed systems to provide ambient intelligence, situational awareness, and the capability for adaptive behaviors or intelligent process automation.

Whether the sensor’s output is used to control the opening and closing of relays or thermostats, or to automatically raise alerts — the integration of sensors into systems is at the heart of the promise of ubiquitous computing. And with the ability to place hundreds of embedded sensors within a given coverage area, each wirelessly streaming information, the possibility of self-organizing sensor networks is increasingly becoming a reality.

This article takes a look at the sensor layer of a basic ubiquitous computing stack.

Continue reading this article…

Bare Metal Programming: The C Language

…for Embedded and Low-Level Systems Development

C provides the convenience of learning one language while retaining the ability to target a variety of platforms including modern operating systems (Linux, Windows, Mac), real-time operating systems, systems-on-a-chip, and a host of microcontrollers for embedded development. And if you have to “mov” the bits around yourself (device drivers, DMA controllers), you can do that too. This is a significant efficiency over assembly languages which are essentially chip-specific control codes and therefore require understanding the architecture of the chip in each target platform.

Continue reading this article…

Dear Readers!

Our Google+ (Buzz) page is where we publish more regular (~monthly), shorter posts. Feel free to check it out! Full length articles will continue to be published here, with notifications through the Feed (you can join the list below).