Showing posts with label Embedded C. Show all posts
Showing posts with label Embedded C. Show all posts

Saturday, May 26, 2012

This weeks Dan Saks's Embedded C++ training

This week I spent three days with Dan Saks and twelve others in Cleveland taking in Dan's "Embedded Programming with C++" which presented techniques for developing robust and efficient embedded applications in C++. This was Dan's first ever public class on the subject.

A lot of time of the first day was spent going over the language of the C and C++ standards so that everyone in class was at the same level of understanding, with the end goal of being able to read the standards and be able to comprehend them. A lot of time was spent on the difference between declarations and definitions, scope, and linkage. Perhaps a bit to much time was spent in this area, as toward the end of the class on the last day things were starting to seem rushed.

On day two we covered how not to get the standard C++ library sucked into to our build, as this is usually the source of the perception of C++ code being bloated compared to plain C code. Also covered was the proper ways to use const and our friend and nemesis volatile; see "Nine ways to break your systems code using volatile". Spent the majority of the day building up an I/O class a step at a time. While Dan explained how and why each step was an improvement over the previous version. Some time was spent comparing the memory sizes of equivalent C and C++ programs. In the end the C++ program was only four bytes bigger than the C program. In some examples that where run on the ARM architecture the C++ versions were actually smaller than the C versions.

Day three Templates, and some discussion of Template Specialization, were covered. For example on the AVR XMega there is eight USARTs. Templates give a simple interface to cover the USARTS. Also covered was how to write read-only and write-only classes that would abort at compile time if they were used in the wrong direction, such as reading from a write-only register. One of the last thing covered was how to write a library that would cause the build to failed if anything used 'new' (perhaps it was hidden in a third party library), as MISRA frowns on dynamic memory usage.

Overall if you ever hear of Dan giving a class in your area, make the time to take it.


Sunday, March 13, 2011

James Grenning to present "Test is not for finding bugs", Cleveland March 23, 2011, 5:30PM

James_Grenning_March23_2011_Event_Flyer

It is with great pleasure that Firmware Engineers of Northeast Ohio, Cleveland Agile Group (CleAg), and the IEEE Cleveland Computer Society welcome James Grenning. He will be speaking to us at our upcoming event on March 23rd, 2011.

James Grenning trains, coaches, and consults worldwide. His considerable experience brings depth in both technical and business aspects of software development. James is leading the way in introducing Agile practices to the embedded world. He invented Planning Poker and is one of the original authors of the Manifesto for Agile Software Development (February 2001).

Mr. Grenning will present "Test is not for finding bugs".

Test is something that has to get done sometime before shipping the product. Test can wait while we do the important work of specifying, designing and coding the system. Test helps find bugs. Test happens at the end.

Wait! Don’t quote me on that!

Test is not that unpleasant activity at the end of the *development phase*, it is an integral and critical part of everyday work. It does not add drudgery, and overhead, it adds rewarding feedback and makes it possible to put more value into the software instead of wasting time chasing bugs. Test is not about finding bugs anymore. Test is specification; test is defect prevention, test drives good designs. Tests must be largely automated. You may think that you cannot afford to automate; when in reality, you cannot afford not to.

This will be the first time that Cleveland Agile Group (CleAg) and FENEO/IEEE have joined forces to bring such talent to Cleveland.


Donations are very welcome and appreciated. A donation box will be available at the sign in table. Please make all checks out to IEEE Cleveland. Also, FENEO is always looking for new sponsors.


Space is limited! To reserve your seat, please RSVP by March 21 at http://www.clevelandieee.org/jgrsvp.