Tenderfoot: Embedded Software and Firmware Specialties

Matthew Eshleman August 20, 20177 comments

Once upon a time (seven years ago) I answered a question on Stack Overflow. Then Stephane suggested I turn that answer into a blog post. Great idea! This post dives deeper into the original question: “Is it possible to fragment this field (embedded software and firmware) into sub-fields?”

This post represents a detailed and updated response to my original Stack Overflow answer. I hope this post provides guidance and useful information to the “tenderfoots” in the...


Tenderfoot: Recommended Reading

Matthew Eshleman June 28, 20171 comment

Twenty years ago I read Code Complete by Steve McConnell. And then read it again. And again. And again. Of all the books I have read during my career, I believe this was the book that catapulted me from a young electrical engineer to a young and aspiring embedded software engineer. So to all the ‘tenderfoots’ embarking upon an embedded systems and especially embedded software and firmware career, this entry is for you.

First, I would certainly recommend that all engineers read and read...


Tenderfoot: Introduction to Magic (Numbers that is...)

Matthew Eshleman May 10, 20171 comment

Once upon a time, while participating in a source code review, I stumbled across the following C code in a header file:

struct Foo { //various structure fields char string_buffer[45+3]; //buffer requires about 45 bytes };

My right eyebrow raised, I took a note, and continued with the code review, only to later stumble into this line of code in the body of a C function:

char * temp_string_buffer = (char*) malloc(45+3);

Again, I took a note on this function, and continued...


Favorite Tools: C++11 User-defined literals

Matthew Eshleman November 14, 20161 comment

In many software domains units of measurement are frequently critical to the software's data processing requirements. Those same units, or rather the use of the wrong units, are often the source of bugs and disastrous mistakes. Although useful for other purposes, user-defined literals are an excellent addition to the C++11 standard and handy when working with units of measurement.

Suppose a device measures velocity. To help prevent errors, the software specification requires...


Levitating Globe Teardown, Part 2

Tim Wescott November 7, 20139 comments

Part 1 of this article was really more of an extended (and cynical) product review.  In this part of the article, I actually take things apart (sometimes a bit more suddenly than I meant to) and show you some innards.First the globe.  I knew there was a magnet in there someplace, because it's obviously plastic and it also attracts metal.  I had intended to gently part the globe at the glue bond along the equator.  I started by trying to gently flex the thing on my work...


Levitating Globe Teardown, Part 1

Tim Wescott November 4, 20133 comments

I've been kicking some ideas around for a long time for a simple and inexpensive platform I could use for control systems experimentation for the beginner.  I want something that can be controlled easily in a basic fashion, yet that provides some depth: I want to be able to present ever-more challenging goals to the student, that can be attained by fancier control algorithms all on the same device.

I'm currently looking at magnetic levitation.  It's fun, it has the potential to be...


Embedded Systems - free EdX course by UT-Austin!

Lonnie Honeycutt October 29, 20131 comment

I was very excited to see that there will be an Embedded Systems class available for free at https://www.edx.org/course/utaustin/ut-6-01x/embedded-systems-shape-world/1172

It's free to sign up and take the online class at the EdX website.

More exciting is that the class is based on a TI Launchpad Tiva microcontroller development board.  The Tiva Launchpad features an 80-MHz ARM Cortex M-4 MCU with 256 KB of flash storage, 32 KB of RAM and 43 general purpose I/O pins.  


Massive Open Online Courses ( Transforming education )

Jayaraman Kiruthi Vasan October 10, 20124 comments

Emerging trends in online education have opened up unforeseen learning opportunities for aspiring students. Eminent instructors from the best names in the industry such as Stanford, MIT and Harvard provide several courses with video lectures online.

Named MOOCs,  Massive Open Online courses are accelerating the learning process in a radical manner.  Online universities like Coursera, edX, Udacity, Khan Academy and Udemy offer courses which are professionally relevant.


C++ on microcontrollers 3 – a first shot at an hc595 class with 8 output pins

Wouter van Ooijen November 2, 2011

 previous parts: 1, 2

This blog series is about the use of C++ for modern microcontrollers. My plan is to show the gradual development of a basic I/O library. I will introduce the object-oriented C++ features that are used step by step, to provide a gentle yet practical introduction into C++ for C programmers.  Reader input is very much appreciated, you might even steer me in the direction you find most interesting.

In the first part of...


C++ on microcontrollers 2 - LPCXpresso, LPC-link, Code Sourcery, lpc21isp, linkerscript, LPC1114 startup

Wouter van Ooijen October 24, 20114 comments

 previous parts: 1

This blog series is about the use of C++ for modern microcontrollers. My plan is to show the gradual development of a basic I/O library. I will introduce the object-oriented C++ features that are used step by step, to provide a gentle yet practical introduction into C++ for C programmers.  Reader input is very much appreciated, you might even steer me in the direction you find most interesting.

I teach my students that...


C++ on microcontrollers 2 - LPCXpresso, LPC-link, Code Sourcery, lpc21isp, linkerscript, LPC1114 startup

Wouter van Ooijen October 24, 20114 comments

 previous parts: 1

This blog series is about the use of C++ for modern microcontrollers. My plan is to show the gradual development of a basic I/O library. I will introduce the object-oriented C++ features that are used step by step, to provide a gentle yet practical introduction into C++ for C programmers.  Reader input is very much appreciated, you might even steer me in the direction you find most interesting.

I teach my students that...


Levitating Globe Teardown, Part 2

Tim Wescott November 7, 20139 comments

Part 1 of this article was really more of an extended (and cynical) product review.  In this part of the article, I actually take things apart (sometimes a bit more suddenly than I meant to) and show you some innards.First the globe.  I knew there was a magnet in there someplace, because it's obviously plastic and it also attracts metal.  I had intended to gently part the globe at the glue bond along the equator.  I started by trying to gently flex the thing on my work...


Tenderfoot: Embedded Software and Firmware Specialties

Matthew Eshleman August 20, 20177 comments

Once upon a time (seven years ago) I answered a question on Stack Overflow. Then Stephane suggested I turn that answer into a blog post. Great idea! This post dives deeper into the original question: “Is it possible to fragment this field (embedded software and firmware) into sub-fields?”

This post represents a detailed and updated response to my original Stack Overflow answer. I hope this post provides guidance and useful information to the “tenderfoots” in the...


Levitating Globe Teardown, Part 1

Tim Wescott November 4, 20133 comments

I've been kicking some ideas around for a long time for a simple and inexpensive platform I could use for control systems experimentation for the beginner.  I want something that can be controlled easily in a basic fashion, yet that provides some depth: I want to be able to present ever-more challenging goals to the student, that can be attained by fancier control algorithms all on the same device.

I'm currently looking at magnetic levitation.  It's fun, it has the potential to be...


Embedded Systems - free EdX course by UT-Austin!

Lonnie Honeycutt October 29, 20131 comment

I was very excited to see that there will be an Embedded Systems class available for free at https://www.edx.org/course/utaustin/ut-6-01x/embedded-systems-shape-world/1172

It's free to sign up and take the online class at the EdX website.

More exciting is that the class is based on a TI Launchpad Tiva microcontroller development board.  The Tiva Launchpad features an 80-MHz ARM Cortex M-4 MCU with 256 KB of flash storage, 32 KB of RAM and 43 general purpose I/O pins.  


Massive Open Online Courses ( Transforming education )

Jayaraman Kiruthi Vasan October 10, 20124 comments

Emerging trends in online education have opened up unforeseen learning opportunities for aspiring students. Eminent instructors from the best names in the industry such as Stanford, MIT and Harvard provide several courses with video lectures online.

Named MOOCs,  Massive Open Online courses are accelerating the learning process in a radical manner.  Online universities like Coursera, edX, Udacity, Khan Academy and Udemy offer courses which are professionally relevant.


C++ on microcontrollers 3 – a first shot at an hc595 class with 8 output pins

Wouter van Ooijen November 2, 2011

 previous parts: 1, 2

This blog series is about the use of C++ for modern microcontrollers. My plan is to show the gradual development of a basic I/O library. I will introduce the object-oriented C++ features that are used step by step, to provide a gentle yet practical introduction into C++ for C programmers.  Reader input is very much appreciated, you might even steer me in the direction you find most interesting.

In the first part of...


Tenderfoot: Recommended Reading

Matthew Eshleman June 28, 20171 comment

Twenty years ago I read Code Complete by Steve McConnell. And then read it again. And again. And again. Of all the books I have read during my career, I believe this was the book that catapulted me from a young electrical engineer to a young and aspiring embedded software engineer. So to all the ‘tenderfoots’ embarking upon an embedded systems and especially embedded software and firmware career, this entry is for you.

First, I would certainly recommend that all engineers read and read...


Favorite Tools: C++11 User-defined literals

Matthew Eshleman November 14, 20161 comment

In many software domains units of measurement are frequently critical to the software's data processing requirements. Those same units, or rather the use of the wrong units, are often the source of bugs and disastrous mistakes. Although useful for other purposes, user-defined literals are an excellent addition to the C++11 standard and handy when working with units of measurement.

Suppose a device measures velocity. To help prevent errors, the software specification requires...


Tracing code and checking timings

Richard Dorfner May 25, 20115 comments

Debugging resource limited systemsApplications writers that write code on large systems have it easy. Well, perhaps not easy, but certainly easier. There are some things that they don't have to worry about and there is a huge array of tools available to them when it comes time to debug. The have choices in their toolsets, lots of choices. They also have a large selection of available methods for getting debugging information out to them such as log files, proc entries, pop up dialog boxes or...