Posts Tagged 'Software'

Frustrating Development Tools

I have a complaint (well, to be honest, I have a lot, but I don’t trot them out all at the same time): Why do hardware and development tools vendors insist on using things like Windows .net? It annoys me to no end to have to resort to reading through KB articles from Microsoft just to get something as straightforward as a compiler up and running. It annoys me even more when I can’t get the software running even after jumping through hoops and hopping up and down on one foot while patting the top of my head. Does it really have to be this way?

Continue reading ‘Frustrating Development Tools’

Creating Time-Consistent Loops for Embedded Systems

In an embedded system there are typically four main ways to architect the code: Simple loop, foreground-background, cyclic executive, and RTOS. In this article I will look at how to create a simple main loop with a time-consistent execution period, similar to what a cyclic executive does.

Continue reading ‘Creating Time-Consistent Loops for Embedded Systems’

Ardunio Programming: C++ and Embedded Systems

Ideally we would use assembly language to wring the last drop of performance from small microcontrollers, and at one time that really was the only way to do it. But assembly language programming is tedious and error-prone, and if I never have to wrestle with another assembly language program that would be fine with me.

With the advent of C, things got a lot easier in the embedded systems world. As its creators stated, C is essentially a close relative of an assembler, rather like a macro assembler (there’s a good Google/Wikipedia topic, if you don’t know what a macro assembler is). A C program can be compiled into very tight and efficient code, with an almost one-to-one correspondence to the underlying assembly language that the compiler generates.

But times change, and things are extended, improved, and expanded, and thus C++ arose from C. Over time C++ has become one of the dominant languages in programming, but there are challenges when attempting to use it with a microcontroller. Continue reading ‘Ardunio Programming: C++ and Embedded Systems’

Why Software Matters

Software matters because without it a computer-controlled instrument, device, or system is just a collection of plastic, metal, and silicon. It does nothing.

Without software an interferometer is just a bunch of mirrors and lenses. Without software a CCD or CMOS image sensor is just a slab of inert silicon. Without software a deep space probe is a piece of very expensive metal sculpture. Without software data collection and analysis becomes an exercise in jotting numbers in a notebook, pushing a slide rule to get approximate numerical results, and dealing with errors. Lots of errors.

Good software is not trivial, nor is it easy. It is not the simple exercises encountered in undergraduate courses, nor is it the hacked logic and unreadable gibberish generated by overcaffeinated graduate students late at night. Good software is the result of applied discipline, resulting in the creation of an abstract logical construct that is coherent, readable, elegant, and reusable. Good software is beautiful.

Continue reading ‘Why Software Matters’

Free Stuff

Everyone likes free stuff. Here are some links to some freely downloadable books and papers:

Object Orientated Programming in ANSI-C, by Axel Schreiner (direct link to PDF file)

Computational Modeling and Complexity Science, by Allen B. Downey

C Elements of Style, by Steve Oualline

Object-Oriented Techniques for C Programmers, an HP Labs Technical Report

INI Files

So-called “INI” files are ubiquitous. You can find them on Unix systems, Windows platforms, and even in the flash memory of embedded systems. I even once wrote my own INI parser for some software on a embedded diskless VME control system running WindRiver’s VxWorks. It allowed us to upload new configuration and control parameters on-the-fly in a human-readable format. Very handy.

Continue reading ‘INI Files’

Free PNG Book Available On-Line

I recently stumbled across this whilst sifting through the Weird Wild Web:

PNG
The Definitive Guide
Greg Roelofs
O’Reilly 1999

pngbook-cover-1.jpg

Released under the GNU Free Documentation License, V1.1.
http://www.libpng.org/pub/png/book/

If you deal with image processing software then you really need to know about PNG. Superior to JPEG for images containing sharp edges and step gradients (i.e. line art and such), PNG uses a non-patented lossless data compression method. While it won’t compress down as much as JEPG, it also doesn’t suffer from high-frequency signal loss, generation loss and compression artifacts (checkerboarding and such). Also see the Wikipedia article on PNG:
http://en.wikipedia.org/wiki/Portable_Network_Graphics