For novel ideas about building embedded systems (both hardware and firmware), join the 40,000+ engineers who subscribe to The Embedded Muse, a free biweekly newsletter. The Muse has no hype and no vendor PR. Click here to subscribe.

Tools for Embedded Systems

We're tool makers and tool users. Embedded developers - both those doing hardware work and those crafting firmware - use a wide range of tools, but it can be awfully hard to distinguish the good from the ugly. Here's thoughts from a number of engineers. Feel free to submit your own reviews to jack@ganssle.com.

Suggestion: Subscribe to my free newsletter which has tool reviews in almost every issue.

Test Equipment

Jack has written some extensive reviews of test equipment:

  • Scopes, logic analyzers, spectrum analyzers and signal generators:
    • Siglent's SDS5000X series of scopes, 2 to 4 channels, 350 MHz to 1 GHz.
    • Keysight's DSOX1204G 200 MHz, 4-channel scope.
    • Siglent's SDS1204X-E four channel, 200 MHz scope. Here's a video review.
    • Agilent's MSO-X 3054A mixed signal scope.
    • Tektronix's MSO2024 mixed signal scope.
    • Tektronix's MDO4104 mixed domain scope (i.e., it has a spectrum analyzer as well).
    • Siglent's SDS2000X series oscilloscopes.
    • Gabotronics Xprotolab tiny little $49 mixed signal scope.
    • Philco's 7019 65-year-old scope is pretty awful but a ton of fun.
    • Siglent's SDS1102CML oscilloscope. And here's a video about it I made, plus another.
    • GW Instek's GDS-1052-U is a $300 bench scope. Here's a video review, and here's a written review.
    • Rigol's DSA 815-TG spectrum analyzer is a great deal for $1500. Here's a video review.
    • There are a number of cheap DDS signal generators on eBay. Here's a video review of a $50 unit. And here's a written review.
    • The DS213 mini-oscilloscope. It's the size of a cell phone but includes a screen!
    • Siglent's SDG 2042X arbitrary waveform generator video review. And a written review.
    • Review of a 129€ scope probe that has an amazing 5100 ohm impedance and a bandwidth of 1.9 GHz.
  • USB-hosted scopes and logic analyzers:
    • Intronix LogicPort USB logic analyzer.
    • Digilent's Analog Discovery USB scope.
    • Saleae's low cost Logic 16 USB logic analyzer.
    • Saleae's higher-cost, higher performance Logic Pro logic analyzer.
    • Embedded Artist's LabTool USB scope and logic analyzer. And here's a video review of it.
    • Oscium's iMSO-104 mixed signal scope for the iPhone and iPad.
    • Zeroplus LAP-F1 logic analyzer. Video review here.
    • Zeroplus LAP-C logic analyzer.
    • Zeroplus Logic Cube Pro logic analyzer.
  • Tools that monitor power and/or current:
  • VoltageStandard's DMMCheck calibration standard for DMMs. And here's a video review of it.
  • Extech's EX330 DMM.
  • ee-quipment's interesting ee701 differential scope probe. Video review here.
  • Digilent's Analog Parts Kit, an analog prototyping resource.
  • mBed's unusual and interesting IDE, a web-hosted development tool.
  • Here's a neat trick to measure a system's idle time.

Brian Cuthie likes the Saleae logic analyzer:

I did end up buying one of the Saleae USB logic analyzer probes. With it I was able to capture some signaling of something I'm trying to reverse engineer for a customer. It easily captured a minute of serial data at 38Mbps. Something naturally impossible with a scope. And it exported the data in a format I could easily work with. Great hardware, and the V2 software (available as an "alpha" release) is built on Electron, too. Saleae are working to release an SDK that allows developers to add features through plugins, much like Visual Studio Code. I think that is going to make their product wildly successful. 

Philip Freidin sent a very comprehensive chart of USB instruments, which is here .

Clyde Shappee wrote: I have used the Instek PST-3201 triple supply in the past.

As with many of their supplies (I think) it has a power-on button and a button which effects the connection to the loads--a very nice feature. If any of the supplies should trip, they are all instantly disconnected.

I did get a surprise one day when the supply tripped for apparently no reason. Turned out an unused supply was current limited to 0.000 A. A little noise got in there!

Chris Svec also has a GW Instek power supply: I have a GW Instek dual output power supply which is just okay - it's got a loud fan that runs all the time, and the voltage output seems to drift a bit, but that could be because I nudge the sloppy control dials unknowingly. The power supply is a GW GPS-2303. It puts out 30V @ 3A, which I need.

Michael J. Linden wrote:

I've been using a CleverScope CS328A USB MSO for a few years now and my decision to purchase it over some less expensive units has been validated time and time again. This is a 100 MHz USB MSO with two analog channels, eight digital channels (nine if you include the external trigger which can be displayed along with the other digital channels), and 4 mega-points of memory. The sampling rate is 100 MSa/sec (one-shot = 10 MHz) which is more than enough for the embedded work I do. In my case I opted for the 14-bit samplers and 10 MHz signal generator options.

This USB MSO just seems to be better thought-out than others on the market. It also has a beautiful and intuitive user interface that seems leaps beyond the others I've looked at. In particular, I find the time and voltage scales that are displayed on the edges of the graph to be very useful. The CleverScope folks are also very good at updating the firmware and software. When I bought this unit it had no serial decoding capabilities. However, thanks to updates, I can now decode UART, SPI, and I2C communications (this has come in handy more than once) with this scope. I can also stream captures (trigger-by-trigger) to disk files for later evaluation. All in all, a very nice and capable unit that I use on a daily basis. Also, it looks like PicoScope just came out with this one (their first MSO). Nice feature set, but not much sample memory. Fair price, though.

Jerry Isdale wrote: I recommend taking a look at the offerings from Seeed Studios. In particular the DSO Nano and DSO Quad, but their other (board only, no enclosure) products are quite cool and inexpensive. I have one of the original DSO Nano scopes and find it quite useful. The V2 is a wholly reworked version and includes a signal generator. The whole thing easily fits in a pocket, which is hard to beat for on-the-go or cluttered bench jobs.

From Tom LeMense: Here are my comments regarding the Saleae Logic USB logic analyzer. I think I may have seen this analyzer mentioned by another of your readers in an earlier Embedded Muse issue, but I just cannot help but take the opportunity relate my positive experience with this tool. I simply cannot say enough good things about the Saleae "Logic". The unit itself is small and travel-friendly, packaged in a rugged aluminum housing, uses a standard 0.1" header for probe interconnects, and has wonderful support software (Windows, Mac, and Linux OS are all supported). At 24 MHZ acquisition rate, it's certainly not fast enough to handle external address/data busses on a high-speed modern uP or uC - for that, you need to shell out big bucks for a "real" logic analyzer. Logic is more than adequate, however, for snooping CAN, SPI and I2C busses; examining multi-phase bridge driver inputs; or observing Manchester baseband signals from RF remote control units, as examples. (I've used Logic for all of these purposes). For $150, I'm completely satisfied with my purchase, and have recommended Logic to numerous other engineers as well. There's also a 16-channel version, Logic16, but I haven't had a good reason to buy one...yet! Disclosure: I have no relationship with Seleae other than being a very satisfied owner of one of their products.

Bill Knight wrote: One tool that I have found extremely useful in my work is the LOGIC logic analyzer made by Saleae.  It is a small, inexpensive, 8-channel device that can capture and continuously stream data with sample rates up to 24MHz to your Windows/Mac/Linux machine for display and analysis.

Martin Thompson also likes LOGIC, and said: And when you consider that the software decodes UART, SPI, I2C straight onto the waveform display (as overlays), it's a must have for low-speed serial bus debugging.  It's hard to put a "time-saved" number on it as things suddenly jump out at you instantly when you can see the decoded bus in real time!

Steve deRosier is yet another one who likes the LOGIC: I too love the Logic.  It's simple and the price is right.  But perhaps the best thing about it is the software is cross-platform.  I purchased it shortly after it was released, on the _promise_ that they'd soon have a Mac and Linux client.  It took longer than I liked, since I had to run it in a VMWare virtual machine on my Mac, but eventually they released a cross-platform software package.  Thank you! Finally an embedded tools vendor that understands there's other operating systems out there than Windows.

Graham Whaley writes: On a similar vein to the LOGIC little logic analyser, I surveyed the market for small cheap units a few years back, and we decided on the LOGICPORT from Intronix It is a 34 channel logic analyser that uses time compression to store samples in its rather small buffer, so if you have a slow moving signal you can get quite long traces. It will also go up to 200MHz external clocked, or 500MHz internally clocked. We find it invaluable for I2S and SPI issues, and it also has CAN, I2C, SPI and RS232 decoders built into the software. I can recommend this unit.

Scott Whitney also likes the LogicPort:

The info about the Saleae logic analyzer was a good tip. I also wanted to point out another option, slightly more expensive but with more channels. It's called the LA10343 LogicPort, and is a 34 channel analyzer via USB connection, with 500MHz timing mode or 200MHz state mode.

The cool thing about it is that it provides complex triggering, and directly decodes CAN, I2C, SPI, and RS232 data streams. It uses clever data compression, essentially recording just changes on each pin, rather than the state of each pin at every clock. You can order it with a trigger output - highly recommended if you work with mixed signals and want to see an analog waveform in relation to some digital pattern. Of course, as parts shrink, it's getting harder and harder to clip onto the signals you need, but the grabbers that you can get with this product are very high quality.

Bill Knight wrote: The project on which I've been working required the design of a dual band, printed circuit board antenna operating at 315MHz & 434MHz.  The tuning of antenna matching circuits is made much easier with the use of a Vector Network Analyzer but even the low cost ones can start at $10,000.  After a lot of web searching I came across the 'VNWA' offered by SDR-Kits in the UK.  This little jewel is an outstanding piece of equipment with an avid following and incredible support.  It has features even the big boys would envy and the cost is less than $600 USD at the current exchange rate.

Dwayne Reid  likes Open-Bench Logic Sniffer:

I don't know if you have come across something called the Open-bench Logic Sniffer (OLS) but its an open-source logic analyzer based on a PIC and a FPGA.  It’s good for up to 32 channels but the board itself contains only enough 5V-tolerant buffer inputs for 16 channels.  The other 16 channels are brought out to headers. Here's the kicker: it costs $50 including shipping to anywhere in North America (and most of the rest of the world).  Probe sets cost an extra $6 per input cable of 8 clips + ground.  The daughter-board adding 16 more buffered input channels is an extra $15.

Although the firmware is currently evolving, the current stable firmware is eminently usable.  There are two distinct software platforms available for it: SUMP and something expressly designed for the OLS by a forum member with username of jawi. The first shipping version has FPGA code written by somebody who is not particularly experienced.  It works but the performance is less than what is actually possible.

The current beta firmware was written by somebody who actually designs large FPGA systems for a living.  He has apparently gotten almost all of the features of an Agilent HP 16550a analyzer into the unit.

Short-list of specs: single-data-rate (max) 100 MHz, double-data-rate sample rate (max)  200 MHz.

Overview here. In-depth description here. Even more hardware detail here.

Charles Manning likes the Rigol scope: "I started looking for a low cost scope. I first looked at USB scopes but then ended up just buying a Rigol DS1102E. Cheaper than many of the USB scopes and doesn't take up PC screen real-estate.

Michael S. Wilk also weighed in: In response to Charles' comment about a scope: I did almost the exact same thing investigating USB Scopes. Since I do almost entirely software/firmware, I had a hard time justifying an expensive scope (especially since most of what I do is not high speed). I just needed to be able to see/debug a variety of slower signals, mostly serial communications and/or GPIO's. I ended up with the Rigol DS1052E (which Davy Jones demonstrated a special modification to bring it to 100MHz like the DS1102E). It has more than met my needs and more than paid for itself. A good friend recommended this scope after I was looking for the end-all, be-all device that could do as much as possible in a single package. He gave me the (good) advice of buying decent tools that did single things well rather than a single device that did multiple things "just OK". I could always sell these entry level instruments and upgrade. Or, better yet, keep them as "spares" should the day come when I need something more sophisticated. Following that scope, I have purchased (and gotten every dollars' worth from) a Rigol DM3058 Multimeter and a Protek 3003L Power Supply. My GW Instek function generator hasn't justified itself yet but I expect it will someday (I got it at the tail-end of a debugging session and solved the problems before I needed it). Another couple of very handy devices I've purchased are the Microchip Serial Analyzer (about $50) and the WAV, Inc. USBee SX (~$170). These devices do similar things and are also assets in my debugging toolbox.

Gonzalo Sanchez likes Pico Technology's products: "

Years ago, I had the chance to purchase (for a project that later went awry) a PC-based scope from Pico Technology. It was a very nice gadget, and the software was really user friendly and feature-rich. Pico has now a very wide range of products, notably scopes (up to 100MHz BW, 8, 12 and 16 bit resolutions, and buffer depths from kS to MS); some of these are quite affordable. Some of the models seem to include Arbitrary Waveform Generators, which avoid the purchase of a separate signal generator.

I guess TEM readers would probably like to give a look to the 2205 Mixed-Signal Oscilloscope; the description states it is a USB-powered, 2 analogue channels scope (up to 25MHz) having 16 digital channels (up to 100MHz) and capable of 200 MS/s mixed-signal sampling; it also includes a built-in function generator and arbitrary waveform generator. Price tag is around US$580 (which is not very cheap, though does not seem to me too expensive given the specifications). The accompanying PicoScope software lets you have an oscilloscope, spectrum analyzer and signal/waveform generator all in one; it has ability to continuously stream data so the scope can be used for data acquisition, too. Very appealing feature: free updates. Seems to have an SDK that facilitates to connect the scope software to other software tools such as LabView, Matlab and even Excel (for those who like it). Another nice feature is that you can download a demo version with 'built-in data' for trying it. Just for Windows users, though drivers for Linux are available in case anyone wants to develop his or her own software.

Please note I have not used them in years, but at the time their scopes were among the best price-performance compromises we could find, and the software at the time was really, really very good. We did give the Linux drivers a try at the time, and they worked for us, but we did not develop anything useful.

Good Web Sites

Miro Samek has a free set of videos on YouTube which explain the basics (and more) of writing in C for the ARM Cortex-M series of parts. This is one of the more important microprocessor families around today. If you buy the suggested $12.95 board, you can use IAR's free IDE (Miro shows exactly how to obtain and configure it) and work in parallel with the lessons. Unlike other C classes, in this series you'll get exposed to both the C code and what the processor is really doing behind the scenes. That's critical info for any embedded developer. Highly recommended.

Richard Tomkins likes DevDocs: DevDocs works standalone (within a browser) and integrates with Brackets. Although both DevDocs and Brackets are oriented towards the Internet, DevDocs contains C, C++ and JavaScript references and Brackets is turning out to be a really strong text editor with a huge plugin community.

C/C++ coding standards.

Another decent coding standard.

Tim Peterson wrote: I wanted to pass along information about a potentially useful podcast. Though it's not embedded or even engineering specific, I felt that the information would be valuable to many. The podcasts Manager Tools and Career Tools can be found here .

EEWeb has a number of interesting places for electronics people. I find the toolbox (on the upper right part of the screen) especially useful.

Chuck Petras sent some sites that are pretty interesting for those wanting to know more about electronics: Here's a site on basic car audio electronics which is very engaging.  Another is geared towards the car audio enthusiast who wants to learn about and repair his equipment.

Diff/Merge Tools

Fred Hugand sent this link to a better diff tool, this one named Beyond Compare. I've only played with it a bit so far, but it looks like a great product and is only $30. (Jack agrees - I use Beyond Compare 3 all of the time).

Vlad Pambucol wrote: We use Beyond Compare here in our development and we absolutely love it! It has great diff capabilities (for instance I like that they show you where your diff is on the line not just the line that is different), you can re-sync manually your compare (we had to do this for #ifdef branches of the code that we compared with original no ifdef-ed code), you can compare folders and many, many more useful features.

Michael Bulgrien likes Beyond Compare. Beyond Compare 3 Professional will be released later this year. Although BC2 has always been a favorite of mine, BC3 will add great new features including a full-screen edit mode, syntax coloring, 3-way merges, dynamic recompare, superb source control integration, and much more. (Update: Version 3 is now available and I'm hearing from readers that they like the 3-way merge).

Johann Kok likes Beyond Compare: I can just add my voice to the chorus for Beyond Compare. It boosts any programmers productivity and is simply the best. The latest version can even compare excel, word and pdf files great for comparing 2 versions of a datasheet.

Ray Keefe agrees: We use Beyond Compare and it is a fabulous tool.  It also does file syncing and I use it for moving code and other documents between networked and non-networked computers.  It can even be used for backups in 'Mirror files' mode and you can set up rules too so it only handles the files and subdirectories you want it to.

Andrew Lin said: I like Araxis Merge (website here). Admittedly, it costs a lot more, but it can do a three-way merge, which is very useful in a multi-developer environment when the VCS diff tool can't figure things out.

Don Peterson wrote:

My favorite file diff tool is vimdiff, which is an invocation of the vim editor using the -d option. I'm a command line weenie, so I still use GNU diff a lot too. For comparing directories and files, doing merges, and editing, the free WinMerge program is nice; its only disadvantage is that it only runs on Windows. I haven't looked at their source, but I believe it's in C++. Perhaps we could encourage some volunteers to help them rewrite the thing using wxWidgets, which means it would be portable to platforms besides Windows.

I wrote a binary file comparison tool bd.c years ago because I frequently had to compare firmware builds and figure out if they differed, in spite of embedded date/time stamps and CRCs. It's not a GUI tool, but it gets the job done. You can get it here.

Rodrigo Flores wrote: KDiff3 is a 3-way diff tool. Originally for KDE, but there's a port for Windows. See Homepage and Project page .

Rod Bartlett likes WinMerge: a great little tool for doing diffs and/or code merges. Handles folders as well as individual files and has a very intuitive interface. It's somewhat similar to Microsoft's WinDiff tool though WinMerge appears to be more feature rich.

David J. Scott likes WinMerge: WinMerge is simply awesome. It lets you compare two files side-by-side and do simple editing. I don't know what I'd do without it. It's free here.

Sambandam Senapathy likes: WINCMP. This is one of the tools that I'm using for c-source file comparison. Though most of my problems are solved using WINMERGE tool, there are some occasions where other diff tools may not help. During those situations, I could see this WINCMP to be of most useful. Especially if the files to be compared are changed a lot, I found this to be more useful.

Text Editor Tools

John Johnson contributed: One tool I have been using of late is a text editor developed under the GPL (hence free and user supported with one champion, a chap named Bram Moolenaar). vim (or gvim) has color coded code sense for C, C++, HTML, etc. and a difference utility. vim (gvim) is said to support regular expressions, through a user supplied plug-in though I have not yet enabled this capability. vim (gim) users have developed a host of other plug-ins for other purposes.

Mark Swayne wrote: I'm an enthusiastic Vim user, and I find this quick reference card very handy.

Jan Pleskac says: Our team uses JEDIT, a Java based open-source editor which is very extendable and very supportive for development. We used it for C, VHDL, latex....

Rocco Iacchetti contributed: We would like to indicate a tool for C development that we have found very helpful. It is Ristancase Development Assistant for C and eventually for VHDL. The tool contains an intelligent editor, with the possibility to jump to function definitions and implementations, to find every use of a variable or function and so on. It gives you a lot of syntax checks (similar to lint), also with the integration of MISRA checks. Finally it gives you the ability to generate the code documentation; in particular, it is able to write flow diagrams of every routine. It integrates a lot of compilers for different CPUs: we have used the integration to Texas DSP Code Composer Studio and to IAR Systems Compiler for Atmel ATmega family. The tool is very cheap, even if it is not free. You could have more information here.

Rodrigo Flores suggests ConText (http://www.context.cx/ ) and (for X Windows) NEdit (http://www.nedit.org ).

Scott Winder wrote: UltraEdit and UEStudio ($39.95 & $99.95; info here. I have been using them (first UE, then UES when it came out) for several years and have found them to be comprehensive, powerful tools for local and remote file editing and software development. They include a basic hex editor and a limited version of IDM's UltraCompare diff tool. They are quite customizable and handle incredibly large files with ease. Things like regular expression search and replace, edit over FTP/SFTP, multi-platform line ending and character encoding support, a built-in macro language, completely configurable menus and keystrokes, and many other perks set them apart from the vast majority of the competition. I've also found their tech support very responsive and eager to please, and they'll entertain any reasonable request for new features in upcoming versions. (Jack concurs; it's my go-to editor).

Justin Phillips seconds many who have lauded Ultraedit. A fully featured editor with built diff tool and loads of other neat features. And crisp - a sophisticated editor for both Linux and Win32. Too complex for my taste but take a look.

Ray Keefe likes it too:

Ultraedit and Ultrastudio - We use both.  A very complete editor with a wide range of features and at an extremely good price point.  The flexible formatting features as well as the clipboard history system, functions tracking, macro editing, searching including use of regular expressions and the general editing behaviour that supports the way programmers want to edit make this a real productivity booster.

For project level behaviour, Ultrastudio is great.  Many embedded toolsets are getting better IDE's these days but most of them are not up to the level you need them to be.  So this is the answer.  All the editing capabilities of Ultraedit with the ability to manage project level builds and including autocomplete and structure element completion.  A real time saver.

Kalpak wrote: To make the code portable, we use uint8_t instead of unsigned char. Now with most IDEs, we lose out on syntax highlighting and unfortunately, uint8_t looks like conventional text: uint8_t. But with UltraStudio, you can put uint8_t etc in the "syntax highlighting" file and make it look just like unsigned char. That is one of the reasons I switched over to UltraStudio.

Stephen Pelc sent these comments:

I have to second the comments about UltraEdit and Beyond Compare. They do what they say they do. But the kicker is in the technical support - both companies provide good and fast support. Now that BC3 is available on Linux and UEX is in beta for Linux, I can actually use Linux for development these days. The comments about the Foxit PDF reader are also right. What they should also say is that it's really small and really fast - so much so that we use it for on-line help systems using our DocGen literate programming tool and LaTeX to generate the PDF and an easily parsed index file.

However, the tool that saves me most time is paper and pencil. The good old double-ended word processor is still king! It's truly multi-user.

Doug Stevens wrote:

My single most useful tool: an edit called (variously) slick-edit or vslick. I started using this back in about 1997-8 at Tektronix, and now use it at Omneon. It has all the hallmarks of a tool engineered by a group that was required to use the editor in order to develop the editor. There's a huge list of features, but my personal favorites ...

  • Typing completion (the anti-carpal-tunnel feature, my absolute favorite)
  • Very fast file browser. Put the cursor on a variable, typedef, etc, hit the appropriate hot-key, and you're taken immediately to the file and line that defines it.
  • Macro language (and a significant collection of useful macros)
  • Integrates with revision-control systems. I use it with cvs, and the interface it provides is a significant improvement on the cvs command-line interface.
  • Fully-assignable hot keys. I have to also occasionally use msdev, and vs allows me to set hot keys so they match msdev's.
  • Built-in hex viewer and hex editor. This allows me to make hex replacements or insertions in mpeg video streams.
  • Advanced 2- and 3-way diff/merge tools.
  • Reformatter. I occasionally have to deal with code formatted in an utterly foreign style. It's funny how much this interferes with my ability to grasp what's going on. The reformatter changes the style to match the style I'm used to, so I can grok it quickly.

Roland Bennett likes PSPad (available here). I really appreciate the feedback from users regarding their favorite editors. Having used Visual SlickEdit for many years, I was looking for a free editor when I left the company where I had used it.

Vlad Zeylikman is using Epsilon from Lugaru, Inc. It's not free but whenever someone names a new cool feature, Epsilon had it for years. I find that it's well worth the price: loaded with features, Windows/Linux/DOS in one package.

Jon 'Far' McKamey writes: Another good choice is MadEdit. (link ). I'm a bit of a nut about finding the right editor, and I'm toggling between this and Notepad++ at the moment.

Bryan Murdock wrote:

I am shocked and dismayed that your tools page doesn't mention Emacs. Normally I'd think that it goes without saying, but since vim is called out on there (one of the Two Great Editors, but don't tell either side that I have praise for them both), maybe Emacs should be mentioned too. It's trivial to get on a Linux workstation.

Like is pointed out on your tools page about Vim, Emacs has color coding and indentation support for a multitude of languages, it can do code browsing with ctags and cscope, it has a nice side-by-side diff/merge tool called ediff, powerful search and replace, macros, and it doesn't beep at you when you open a new text document and simply start typing (OK, I get some vim digs in occasionally).

Tim McDonough likes Geany: I recently learned about an open source programmer's editor called "Geany" that I like very much so far. It has pre-compiled versions for both Windows and Linux environments and has a lot of nice features for managing software projects, build tools, etc.

Erik Christiansen responded to a comment that a lot of IDEs won't do syntax highlighting when using a typedef like uint8_t:

One editor which highlights uint8_t, as well as the other stuff, right out of the box, is vim. Just type this in vim:

:so $VIMRUNTIME/syntax/c.vim
"(Or put it into your ~/.vimrc) to switch on 'C' highlighting.
:help syntax

shows the help info, referring to C, perl, etc. If the highlighting needs to be customised, just hack the syntax file ... with vim.

Since I habitually flick from code to makefile to linker script, I'd need to enable vim's automatic syntax selection, though. Mind you, I find that I can't read a thing once there's four or five colours scattered all about. My eyes will only read one colour at the time. Perhaps that's because we didn't have colour for the first half of my three decades at this game.

Renan Greinert also had some thoughts on this:

It is also possible to highlight those types in Visual Studio (even Express editions). I've tested it on 2005, 2008 and 2010 versions.

You just have to create a file called "usertype.dat" and save it in the "Commom7/IDE" folder of the Visual Studio installation. The content of this file are the types you want to highlight, each one in each line.

For example, here I use:

//content of usertype.dat
       int8_t
       int16_t
       int32_t
       int64_t
       uint8_t
       uint16_t
       uint32_t
       uint64_t
       float_t
       float32_t
       float64_t
       char_t
     
 

IDEs, Debugging and Related Tools

One of the more unusual IDEs is that from mbed - it's entirely web hosted. Jack wrote a comprehensive review here.

Brian Cuthie wrote:

I settled on Visual Studio Code from Microsoft. If you're not already aware, it's the bomb these days. It's truly powerful text editor built on something called Electron, which is a cross platform app framework that is based, believe it or not, on an embedded browser window, HTML, CSS, and JavaScript. But before you puke, you have to try it. It's just remarkably good, and it runs everywhere — Windows, Mac, Linux.

But what makes VSC really appealing is that, besides being free, it is easily customizable with plugins. And people have written plugins for literally everything. Thousands of them. Whatever you're editing, there's a plugin that adds features to the editor that are appropriate for the file type you are editing. It's difficult to find a file type — whether it's a software language, HDL, configuration file, etc., for which there isn't a plugin that at the very least adds syntax coloring. And the editor is smart enough to notice what you're doing and recommend suitable plugins. 

There are, of course, plugins that add project management, build, and debugging; basically making it an IDE. But unlike a purpose built IDE, you get the advantages of using the same editor for all of your needs, rather than a bespoke set of editors for each task. It's become wildly successful, and is also a really good example of how community involvement can produce a better product that is more suited to the market's needs, than a top-down, market research, product management driven approach.

Tomasz Kos wrote:

In last Embedded Muse (TEM391) you described Ozone. It is good tool, but the microcontroller which I'm using doesn't provide trace functionality, so some of the features are unavailable.

I would like to recommend another tool from Segger: J-Scope.

It has only one function: trace and graph variables, but without overhead (with J-Link). For me it was changing point when I started to using it. Verifying algorithms and fixing bugs now is much faster than before.

Previously I have to set a lot of breakpoints, single steeping through code to verify that software works as expected. Now I add few variables to J-Scope, start recording them, and short analysis shows if everything is as expected.   

I can't understand why this tool is almost unknown, and even why SEGGER have it as something lower value and not develop it a lot.

Once again for me now J-Scope is main tool in my current development process, and I  encourage anyone to try it.

Segger's SystemView is a free tool that graphically displays multitasking - you can see transitions between tasks and other events. It's available for Windows, Linux and OS X. Jack's review is here.

Jack Ganssle reviewed SEGGER's J-Trace and Ozone here.

Philippe Auphelle wrote: Cppcheck is a very good open source static analysis tool. Cppcheck does C and CPP, and it's multiplatform (Win64 / Mac / various linuxes). For those using Eclipse (like I do), there is a free Eclipse plugin (in Eclipse marketplace) that fully integrates it (and its configuration) into any Eclipse / CDT build. I understand there is also a free Visual C integration plugin in VS marketplace. Bottom line: cppcheck works great, and it even comes with a pdf manual.

It can be found there:http://cppcheck.sourceforge.net/

Leland Hamilton wrote:

I have used Dev-C++, an IDE for C and C++ on Windows. It allows one to build a project with associated files, automates the compile & link functions along with program execution with parameters, and profile analysis. Apparently uses the Mingw compiler suite. Has a search function that can work on the current module, all open files, or all files associated with the project. Includes interactive debugger that uses gdb under the hood. The editor does syntax highlighting (bold keywords, italic blue comments, green preprocessor # statements, purple numbers, and red quoted text. Parses the project file and provides a class view on the side that allows one to jump to the code associated with a function or structure. (Have not used it for C++). Includes CVS integration (but it does not work for :local:, so I use WinCVS instead). Project setup tool includes Windows application, Console application, Static library, DLL, and empty project that select the build and libraries required for the project. I have only used the console application mode as I generally use Dev-C++ to develop embedded applications and frequently do unit and multi-unit testing on the PC platform before moving to the embedded platform, and for quick homebrew utilities.

Dev-C++ allows other tools to be added to a tool dropdown. I use the following:

  • a pretty print (code highlighting, etc) n-up utility (prfile http://www.lerup.com/printfile) configured to print a source listing of the current file,
  • a homebrew utility that prints lines over 80 characters in length with line numbers (One customer does not want any more that 80 characters per line. Even though Dev-C++ displays a right margin line at column 80, it is possible to continue typing beyond that.),
  • a cygwin bash script that to run the program, use less to scroll through the output and diff to see changes in the output, and - gcov for code coverage analysis using a cygwin bash script to capture the log output that summarizes coverage by function

The bloodshed homepage includes links to other resources including listings of free compilers, learning information, a list of downloadable C/C++ source file and useful links.

My two gripes with Dev-C++ are:

  • only one file is visible at a time, although it is easy to switch between multiple open files
  • this and several other editors use a separate search dropdown menu instead of including the find and replace commands under the edit dropdown menu like MSWord and another tool that I was using. I frequently used the wrong keyboard sequence one or more times after switching between MSWord, Dev-C++ and another tool.

Mark Bereit says: I use Microsoft Visual Studio 6 as my all-purpose IDE, for both desktop and embedded development. The abilities of this tool are greatly enhanced using Visual Assist (link) from Whole Tomato Software. This does better source code coloring, great autocompletion and suggestion, and great source code browsing (that doesn't depend upon Microsoft's browse database, so it works just fine on your cross-platform C/C++). Works for both Visual Studio 6 and Visual Studio .Net. I've used several versions over the years and find it to be a great help.

Kevin Light wrote: There is a relatively new open source, cross platform, IDE tool which is moving forward really fast. http://www.codeblocks.org. While the RC2 release shows off some of the features, the Subversion HEAD really is unbelievable and is usually pretty stable. The wxSmith plug-in for developing wxWidgets applications is very good for being bleeding-edge.

Marc Verwerft sent this link to ctrace: (link).

From their website: CTrace is a fast, lightweight trace/debug C library. It was specifically written for use in a multi-threaded application, though it will work just fine in a single threaded C application. A trace/debug library has an interface of macros or functions which outputs the contents of program variables as the application is running. The trace calls may be made at user-defined levels. It may also be required to have trace functions only called on a particular thread or logical unit of the application.

Isn't that what debuggers are for? Well, yes, though debuggers can be kind of tricky to use when an application is running across multiple threads. Also, once an application is deployed, for example on an embedded system, using debuggers becomes impractical. In this case, a remote protocol could turn tracing on for parts of the application, and the results may be returned either as a stream, or output to a file on the remote system, and collected via ftp.

Cristina Ionescu likes Eclipse:

The Eclipse IDE for C/C++ developers, currently at Galileo version, has been quite useful for the team I am part of. It offers a huge amount of plugins for various uses. Just with the CDT (C/C++ Development Tools) environment you have a great tool. In parallel, installing Cygwin on the computer allows setting the Eclipse C project toolchain to Cygwin (others may be used as well). One other part of our own made tools and scripting is in Python, and the PyDev plug-in is perfect for having both editor and interpreter through the IDE. SVN subclipse plug-in allows direct SVN connection for the projects. Workspaces can be created where several project contents can be compiled for different targets. Make targets are associated to projects. Etc. etc... a simple download and look at the IDE will show a lot of what it can do. Using this and Doxygen has taken a huge strain off developers in my team because before they used to have several tools. The Eclipse IDE has several versions for Java, PHP, C and other types of projects (being written in JAVA itself). .

That's about all I can say without getting into details for everything. I have used Dev C++ and Microsoft Visual C++ in the past, but I really like Eclipse. It is indeed more complex and for simple projects it's obviously to complex, but for a large development team, it relieves the number of actions to take to create a target once the whole environment has been installed as desired.

Mohan Paklapati also likes the Eclipse: It’s awesome to work and gives you very cool UI & UX with a single short cut you can see declarations/reference of a variables, functions calls, What not it’s having all the feature old post people are describing in you tools page most people look for syntax highlighting for user defined data types or typedef(C) Eclipse will give very pleasing syntax highlighting you need not to push them into any configs files for syntax highlighting top of all its freewarecomes with Eclipse Public License (EPL) and you can use on any OS platform. And supports many languages and lot many plugins are there to support more programming languages and testing while coding feature, if its JAVA programming its having unit testing feature to test while code.

Source Navigator Tools

Don Peterson wrote: If you use vi and its clones (especially vim), you should be aware of exuberant ctags (link), as it makes navigation in source files much easier. Use it e.g. to tag all the symbols in all the include files in /usr/include (when I'm on Linux, I have a cron job recreate this file every night).

Then there's this from Christopher Svec: For your list of tools, I suggest checking out cscope: it's like ctags on steroids. You can find where any C symbol is defined, called, used, called-by, etc. It works *pretty well* with C++, and passingly well with other C-like languages. It has its own curses based interface, plus it interfaces very well with vim and emacs. It's open source, and can be found here..

Rod Bartlett likes SourceNavigator (link):

A good tool for familiarizing yourself with large coding projects when documentation is outdated or non-existent. Allows easy searching within the entire source tree. Has built-in support for tags and cross reference database. Sadly the database engine used throws errors when building the project files for very large code projects but this is a handy tool for small to medium projects.

My current quest is to find a good search tool to look for strings within one or more file types in a source tree. I currently alternate between GlobalFind and the XP Search function. Neither is quite fast enough on very large ClearCase views and both lack features I'd really like to see. Sadly none of the indexing tools like Google Desktop or Copernic seem to work well with network drives such as those presented by ClearCase. I'd be very interested to hear about tools other engineers are using to search for strings within files in large source trees.

John Paul wrote: "Understand" by SciTools. I've been using this tool for just over two years and it is excellent. Especially useful when making modifications to a code base that you have little knowledge of, it helps you get a bigger picture of the code set. 

Calculator Tools

Guy Griffin: SpeedCrunch https://speedcrunch.org/, a calculator for Windows/MacOS/Linux. It uses a terminal interface enhanced with optional panes for functions, variables, bit-fields, etc. I find it has a rare combination of features that make it invaluable for both electronic design and embedded programming work. Best of all: natual-language, not RPN!

Jon Titus suggested: During the last few weeks I looked at several high-end graphing calculators from TI, HP, and Casio but decided against buying a device I'd use for a while and then forget how to use. While looking around I discovered a science/engineering graphing calculator app for $5 that runs on Android devices. I put it on my Kindle Fire and have started to learn how to use it.  No calculator could beat the price, so I thought you and your readers might like to know about it.  Here's the link: http://www.mathlab.us/calc/index.html.

Chris Deckard wrote: I just read Jon Titus' recommendation for an Android graphing app. Completely agree with his statement, "I'd use for a while and then forget how to use" regarding hardware calculators.  I'd like to recommend www.desmos.com.  It's an online graphing calculator loosely based on OS X's Grapher.  It's quite intuitive, and allows for saving graphs if  you are logged in.  Being able to copy+paste data from Excel is great since I use it quite a bit for designing transfer functions before I implement them in code.  Also supports sliders so you can interactively explore how a parameter affects a system

Cliff Brake has a hex calculator (link) written in Ruby.

Rodrigo Flores suggests Calculator.Net, (link) a nice .NET RPN calculator.

Scott D. Whitney likes RPN: Being an older electrical engineer/embedded developer, I was raised on HP calculators.  No matter how hard I try, I simply cannot get used to a non-RPN calculator.  So, one tool I simply cannot do without is a Windows-based RPN calculator called Excalibur, written by Dave Bernazanni.  All kinds of modes and functions, including scientific, statistics, business, computer science, conversions, and much more, including custom.  Very highly recommended.  I have another friend who actually showed me Excalibur in the first place, and he says that its the second tool he puts on every new PC!

Terje Frostad also has some RPN information:

There's an alternative to the free42 RPN calculator mentioned in your last Embedded Muse (197). Its called Excalibur (link), with current version 2.00 and it is quite remarkable I think. I use it every day. Even though it looks similar to my good old trusted HP 15C, it can do a lot more than that. It is like a combination of all the classic HP RPN calculators like HP11C, HP12C, HP15C, and HP16C, and it can still do more, and its all for free. It can be found by googling excalibur + rpn.
 
A related funny but true story:  I had been using this gem of a tool at work, recently was working with a bright guy from another company.  We had to do a conversion, and I said, Wait, Ive got this great tool on my PC.  This guy looks it over, tells me to look at Help/About, and there in black and white it says Copyright 1994-2010 David Bernazanni.  I almost fell off my chair the guy that I had been working with was the author of this tool that I use every single day!  Its freeware, although you can make a simple $5 donation via PayPal if you want. 

RPN sure is popular in the engineering community! Luca Matteini (August 2010) is a fan: I read on EM196 an advice for an RPN calculator, and well, I'm RPN-addicted too. I "discovered" RPN, quite late, or I better have to admit I underestimated it for years, until I bought an HP-42S in the early 90s. That calculator stayed by my side all the time, but I always wanted to find something similar to pop on my virtual desk too, instead of the ugly/clumsy applications dubbed on any OS as "calculator". I found the answer in the gorgeous clone of my fav calc: Free42 (link). Put on it one of the smart skins (I use the "Michaels HP" one, compact and close to the real one) and you're done, with a real, full featured, RPN calculator: assign the application launch to some shortcut key, and you can run it in a snap. Now the HP-42S (the original one) sits resting most of the time, to be used only when the PC is off, saving batteries as well.

John votes for RPN on the Mac: MacOS comes with a very nice calculator that has RPN mode (including binary, octal, and hex). Ahh, good old HP calculators! Emphasis here on old -- the newer models were not designed for engineers. What engineer would have a "hex mode" forcing you to type three keystrokes to enter "A" to "F"? (My wife, not an engineer, still uses her 25-year-old HP LED-based RPN HP.)

From Larry Rachman: RPN calculators, eh? The discussion really can't be considered complete without a mention of xcalc (link) a freeware implementation done by a very nice fellow in Scandinavia. His licensing policy: 'try it, share it, if you like it, send me some spices'. Once I installed it on all my machines I pretty much lost interest in handheld devices - being small and light they sometimes get lost, but my computer is big and heavy and hardly ever get lost.

Don Peterson is into RPN, too: I'm also a big fan of HP calculators and loved the early LED ones. However, my favorite HP calculator was the HP-42s, which was an HP-41 replacement. I wrote an RPN calculator program that contains many of the elementary HP-42s functions and runs in a console. It's intended to look pretty simple, but it has features like arbitrary precision, interval arithmetic, and pretty tight control over the output formats. It's called hc.py on google code.

Andrew Dyer is an RPN fan: When I am working at the computer, I use the excellent emacs 'calc.el' package.  If you are an emacs fan, I can't recommend this highly enough.  I mostly use simple stuff, but there is a fairly capable set of math functions in there, and it's just a few keystrokes away. For other times I have an app for my Android phone called droid48 which is an HP48 replica.

Vlad Z isn't so keen on it:

I have to say that I never really fell in love with RPN. I used the HP calculators in the past, when there was nothing else. back in the USSR, in the 70s, I borrowed one now and then from a lucky owner who could afford it. I held it in my hands with the feeling of awe, like having attained a nirvana-like state. still, i avoid RPN when I can. these days, when I am mostly in Linux or on Windows, with Perl installed on both, I use the following script and let Perl do the work:

$ cat `which calc`
       #!/usr/bin/perl -w
       # normal expression based calculator: let perl do the work
(@ARGV < 1) && print("USAGE: $0 quoted_expression \n") && exit 0;
my $z = eval $ARGV[0];
       if ( $ARGV[0] =~ /\./ ) {
       printf "%f \n", $z;
       }
       else {
       printf "0x%x (%d)\n", $z, $z;
       }
       exit 0;

The invocation has to be quoted and looks like this:

$ calc '(0xfafa * 5.2) / 10'
       33410.000000 

"I find it much easier on the old brain than RPN... ;)

 

Hex Viewer/Dump Tools

Vlad Pambucol wrote: And speaking of tools (since I like this one a lot too for playing with hex or mot files) there is a software tool called Hexplorer (link) that can open all sort of bin/hex formats and you can look in your files, you can do CRCs and checksums on blocks of bytes, you have ASCII and hex view a of the file ... very useful tool.

Don Peterson wrote: A good hex dump tool is xxd; you can download it as part of the vim distribution (link).

Wil Blake contributed: Embedded Systems Programming used to have link to a hex editor. This one works well.

Henk Dijkstra contributed: My tip would be srecord (link) by Peter Miller, to manipulate target files for embedded systems. It has default support for numerous file formats, and you can easily add new formats to it. By applying filters to the input files, you can also manipulate it if needed (like adding CRC/Checksum or crop/fill/exclude parts and much more).

Scott Finneran suggested Peter Miller's srecord tool (link).

This isn't just a file format conversion tool and it certainly works with more file types than just Motorola S-Records. It is and incredibly powerful tool for manipulating binary files (ie firmware images). Just a few of the things it can do:

  • Splice/Merge/Split binary files
  • Convert file formats (with 32 formats currently supported)
  • Calculate and insert CRCs/Checksums
  • Chop/Crop/Filter/Move sections of files
  • Correct malformed files generated by buggy toolchains
  • And many many more.

Because it is driven from the command-line, it can be included in Makefiles (or IDE batch/script files) to automate the building of target images. It's used by Motorola and Intel for manipulating Motorola S-Record and Intel Hex format files. It runs under Linux/Unix/OSX/Windows. Best of all, it's Free/Open Source Software.

Tim Dahlin likes xvi32 --> Free Hex Editor for Windows, (link), and Tiny Hexer --> Free Hex Editor for Windows, (link). Also PCalc --> Programmer's Calculator (link).

Scott Winder wrote: 010 Editor ($49.95; link). This is a very good hex editor. Its most important feature to me (i.e. the one that caused me to shell out the registration fee) is its template-based binary file parsing--you can program templates that let you read and write from and to complex file formats, even when the format is somewhat dynamic (optional or variable-sized headers, etc.). It deals elegantly with mixed endianness (even in the same file), and its scripting language is close enough to C that it is very easy to pick up. Add in other goodies such as process memory and disk editing, and you've got a very under-priced product. That's a good thing.

Journaling/Documenting Tools

Gergely Budai wrote:

There is yet another tool that needs to be mentioned in my opinion. In our company we need to maintain pretty much Assembler sources, so we started to look for something that fits for our needs. I stumbled over the tool called ROBODoc (link) which we started to use and to extend.

Since it does not know anything about the language it is documenting, it's pretty useful for less structured ones (like assembler) or to document whole projects (various languages and makefiles, etc).

Some Pros:

  • Can be used with any language that supports remarks
  • Can be used to document whole projects
  • Since one header can have multiple names it is great to document assembler code (subroutines with multiple jump-in points)
  • Absolutely free
  • Source highlighting
  • Multiple outputs (html/xml/latex/rtf/ASCII)
  • User defined objects (like functions, variables, etc)

Some Cons:

  • No call graphs or anything like that (since it does not know anything about the language)
  • False links if someone uses bad names like "use", "do", "copy"

Mark Swayne wrote: Doxygen (link) is a great to for automatically extracting comments from your code and creating consistent documentation.

Ray Keefe agrees: Doxygen (link):

We are huge fans of this product.  It is a great way to document code and also to examine code you are unfamiliar with.  It will document code without the included documentation specific comments however it really comes into its own when you do included them.  You can also add graphical call graphs and caller graphs and it shows the structure of the include files graphically as well.  You can also select whether to inline the code with the documentation or keep them separate.  And it creates references for every define, macro, variable and function in the entire project.

For the graphics make sure you also install the Graphviz tool (ink).  Free and very comprehensive.  With this, you can embed state machine, flow charts and execution or data flow diagrams directly into the Doxygen documentation and you need it to get the best results from the other graphics Doxygen produces.

John Johnson sent: I think this tip - very, very simple tip - is useful in tracking development and debugging efforts. In the MPLAB IDE one can add a text file to the project file list under Other files. The file is a mouse click away and can be used to collect or capture notes, ideas, and in tracking development and debugging efforts which is a tedious activity that often falls in the cracks. I would like to see this feature in all IDEs.

Mark Swayne wrote: I'd like to mention Tiddlywiki (link). Tiddlywiki is a complete wiki-web in one HTML file. It works with most browsers, including Firefox and IE. I find it to be a very useful journaling tool. I keep my development diaries in a Tiddlywiki, the search, tagging and linking functions are very useful.

Olav Haugan likes it, too: Regarding tool for easily searchable personal knowledge-base I think that TiddlyWiki is a very useful tool in this regard. It is a single self-contained HTML file that acts as your own personal wiki. It is portable since it's a single file and can easily be stored in the "cloud" to synchronize access between computers. It is highly customizable with plugin support and customizable style sheets

David Bley wrote: I have a piece of software that I would like to recommend. It is not free, but I use it everyday. It is a free-form database (records are note cards and you can define fields or not) and its most powerful feature is the neural search. It will return every card that contains the list of words that you type in the search field. I put everything in it that I have trouble remembering and can always quickly access it. The program is called Info-Select (link) and I have been using it for many years.

John Kaasgaard likes Wikis: The hottest word now a days . If you need a wiki and don't know exactly 'what' you need . Well start looking here (link). I think there are about 50-60 various wikis, with a very very nice comparison between them. A better way of organizing our ideas or the projects you work on - or just 'giving away information' ... is hard to find.

Kalpak wrote:

Just tried out the demo/ trial version of  Crystal revs (link) a tool for generating flowchart from C/ C++ code. It a great tool, as they advertise, for understanding legacy code. And some versions also have a MISRA checker. It is also great for review or QC, to see if the design has been followed in coding. So I was hoping that it would also allow forward flowcharting, that is, I can use the same for creating flowcharts instead of a regular flowcharting only tool . But it cannot be used like that.
 
Another interesting aspect; now this tool can be "rented", that is any version can be bought for a limited period of time (in multiples of 1 month). This will be handy for team leads who are unable to convince the management of the value of the product.

Bruno Muswieck has an alternative to Crystal Revs: I found a free tool to convert the code to flowchart and the structure of the program on tree view style. Using a print to pdf tool you have a good tool for documentation and to help you to understand code. It's a nice tool not so powerful like Crystal, but it's for free, nice!EasyStructure (link).

John Johnson wrote:

I would recommend Qfsm as a tool that helps create finite state machine diagrams and does this task much better than does Visio. For a while I have been reviewing FPGA development and have used Qfsm in this work. From the Qfsm About window the tool is described as "A graphical tool for designing and simulating finite state machines". From the Qfsm page on Sourceforge: We are very happy to announce that Qfsm won an "Editors pick" award by Brothersoft, one of the leading software download sites.

I might say that because Qfsm could be seen as a "documentation" tool it might not gain acceptance from communities that typically disdain documentation, e.g. software/firmware programmers, developers, hardware designers, etc. <smile>.

Jeff Barth likes Evernote (link): It's easy to store web links, or entire web pages, or selections. Plus make text notes, audio notes, drag pictures into notes, add tables, etc. And it syncs across all major OS's and smart phones.

Jeanne Petrangelo agrees:

I use a paid-for PIM called RightNote. It's normally here but the website is under maintenance as I type this. In 2010 I paid $35.40. RightNote stores the information on my PC. It has all the features Dave mentioned (tabs, tree hierarchy, spreadsheets, rich formatting, links, images etc). I keep links, meeting notes, to-do lists, "maybe someday" ideas, and more in RightNote. I even have a password protected tab where I keep access details for the various password protected things at work, so I only have to remember one password. Content can be exported to various formats. It has built-in search capability.

Another popular PIM is Evernote (link), which also has apps for mobile devices; data is stored in the cloud so you can access the same data from different platforms. Evernote has a free version and a subscription version with more features. I'm unable to access Evernote from work due to company network security restrictions, but I use it on my smart phone for non-work information. I assume the PC version of Evernote can do what RightNote can do, with some differences. For example, while RightNote has its own spreadsheet functionality, I've read that Evernote lets you attach an Excel spreadsheet so it's stored in the cloud but it uses your locally installed Excel to open it.

Mike Skrtic wrote:

I use a little program called axxCardfile (link) which I have found extremely useful. It is a reinterpretation of the Win 3.11 cardfile.com program - on steroids! Basically I have a deck for each general topic , and then I can paste virtually any sort if info in almost any format into a card. Since every "card" is blank, and there are no pre-defined fields, virtually anyone can use azzCardfile as a sort of database. With azzCardfile, everything is wide open. Sure, it's not a database in the true sense of the word, but it's close enough.

  • Format text as you would in any normal word processor, including bold, italics, changing text and background color, text size, etc.
  • All pages are searchable. Search within a card, or search all cards for a specific word or phrase.
  • All cards are printable. You can even Ctrl+click multiple cards to print them out into a single document (this is how I create my road trip lists).
  • Export cards (or multiple cards) to RTF, HTML, or a few other formats.

Tony Garland has a couple of favorites: Another set of tools that I use to keep track of various tidbits of information: trunknotes for iPad/iPod/iPhone (link) together with vimwiki (link). Trunknotes is a wiki-like note taking and organizing application which brings the power of wiki to the iPad/iPod/iPhone in a stand alone way. This means that you can easily refer to, enter and edit your notes in an easy-to-use reliable wiki running on the device you almost always have with you. What's especially great about trunknotes in the day-to-day engineering battle is it has a "Wi-Fi Sharing" feature which, when enabled, allows you to access trunknotes from within any browser on another machine on the local wireless network. What this means is that you can keep a browser window open on your main development machine (using a URL which trunknotes provides) which gives you full access to trunknotes as if it were running on your local machine-although it is still on your portable device. The web interface is fully capable of creating, deleting, editing, and searching-just like on the actual device. Except you have the efficiency of your large PC display and full keyboard. Then, whenever you run off somewhere, you grab your portable device and it has everything on it. Another nice feature is Dropbox synchronization. I use this to make sure my notes are backed up on the PC (locally) and as an interface with the other half of my equation: vimwiki. Vimwiki can be configured to work pretty well with trunknotes files (including the file extension and most of the wiki markup syntax). This gives me the best of both worlds: I can use trunknotes stand-alone (even from my PC) or I can use vim (or gvim) with vimwiki. This means I can do all my trunknotes editing using powerful vim features and vimwiki allows global wiki page renames and other great features including super flexible and powerful search (although trunknotes does well in that department).

 

Pretty Printers

Jack Ganssle likes uncrustify to clean up the source.

This is one of the most powerful and configurable pretty printers around. There are about 450 configuration options and almost, unfortunately, no documentation. Several configuration files are included; defaults.cfg lists all of the options, and that file seems to be about all there is for a user's manual.

Uncrustify will adjust spacing, tabs, brace placement, spaces around operators and much more. It can change a multi-line function declaration so the parameters are all vertically aligned. One of the included configuration files will change source to resemble K&R style.

It runs in a Windows/Linux command shell and is breathtakingly fast. I ran it against an 8000 line C source file and the execution time was perhaps a quarter second on a Windows 8.1 six-core machine.

Uncrustify is free and available here. There's a GUI front end for Macs available here which makes setting the configuration options a lot easier. William Leara has an excellent write-up about a GUI for the Uncrustify code beautifier here.

Leland Hamilton contributed: Pretty print (code highlighting) n-up file printing utility (link) very useful for printing 1 and 2 up source listings with line numbers, code highlighting (bold keywords, italic comments), and long line wrapping. Can select various output formats, such as 131 columns wide landscape text printing, and save the setups with names for recall. You can chose either column width or lines per page, optional pretty printing code highlighting, optional line numbering, specify tab width, heading and footer formats, number of pages per sheet (n-up) horizontal and/or vertical with either landscape or portrait orientation. Also there is support for Postscript file printing using the ghostscript and gsview programs, and a print spooler capability. Also offers a command line mode. I set up prfile as a Windows Explorer right click SendTo with the default to do 2 up line numbered source listings, and a tool in my IDE, Dev-C++, to print the current file.

Scott Winder wrote: While not really a pretty printer per se, I've used FinePrint ($49.95; link) for several years now and have saved (literally) thousands of sheets of paper in the process. It allows you to print multiple sheets on one page, and makes double-sided printing on manual duplex printers fairly painless. I'm especially fond of its booklet feature, but I'd say that its biggest benefit lies in its ability to show you the print job before it goes off to the printer. I use this all the time to combine multiple print jobs (of web pages, for instance), re-order them, and delete unnecessary pages (e.g. the ubiquitous Page 2 of 2 with nothing but a header and footer on it).

John Kaasgaard wrote: Another important tool is Indent (link). Formatting the source code makes the bugs easier to find, it also pleases your mind, since what you see is exact formatted the way you like it. The days where you discuss with your colleges, ..should the parenthesis be on the same line, or on the next line.. ... well its over now. Pre-process your source file with Indent, and you got it exactly as you want it to. It also improves code-walkthrough, and bug-tracking others code ... And the smartest thing is, if your using CVS you can pre/post run it too automatically!

David Strip suggests: Highlight Code Converter (link). Syntax and keyword color highlighting, indenting, etc. Supports 140 languages, 40 pre-defined color schemes. Supports user defined color schemes and language definition files. Output in TeX/LaTeX, RTF, HTML, XML, SVG, XHTML.  Windows and Linux versions. The price? FREE.

Don Peterson wrote: I used to use the GNU indent tool constantly on C code, but it didn't work well on C++. Then I found artistic style (link) which works on C/C++/C# and Java.

Project Management Tools

Allen Paul sent this link to PlanBee (link).

Mark Swayne wrote: For PERT and Gantt charting, the open-source Gantt-Project is worth checking out. It does both Gantt and PERT charts and uses an XML file format, so you can easily parse your data files and integrate it with other tools. See here .

Scott Winder likes this tool for software design: Sparx Systems Enterprise Architect ($135-335; link). I've just recently started using this one, but it competes favorably with several $1000+ UML design tools. The floating license system is easy to use, it will integrate with most common version control systems, and for very large projects, the Corporate Edition can be used against a client-server database back-end (Oracle, MySQL, etc.). There *is* a learning curve associated with this package, but anyone with a solid UML background should find it pretty easy to pick up, and those without a UML background can purchase the $49.95 Zicom Mentor add-on that provides copious amounts of context-sensitive help (among other things). EA is updated quite frequently, and a free 30-day trial is available. Their customer and sales support staff are also quite helpful.

 

Communications Tools

Do check out Ed Sutter's free HyperTerminal replacement called uCon. Found here, it provides powerful scripting capabilities, plenty of function keys, as well as most of the network facilities typically used in embedded systems (TFTP client/server, FTP, DHCP & Syslog servers) and even a terminal server mode that allows you to access the PC's serial port remotely via telnet. Also see the FAQ.

Several people suggested Wireshark (link) as a packet sniffer, which can inspect hundreds of protocols.

Alejandro Weinstein suggests Bray's Terminal (link). From the web-page: Terminal is a simple serial port (COM) terminal emulation program. It can be used for communication with different devices such as modems, routers, embedded uC systems, GSM phones. It is very useful debugging tool for serial communication applications. It is not an Hyperterminal kind of terminal. It is really oriented toward embedded developing. And it is free.

Tim Dahlin wrote: Tera Term Pro --> Terminal Program Old Version => here . New Version => here .

John Kaasgaard wrote: I'm using Docklight (http://www.docklight.de/) for most of my serial communication. It's great, and holds several nice features, if you're doing embedded work, tracing between to subjects, or just mangling with the products' Service interface.

Royce Muchmore weighed in with this on Docklight:

I see that Docklight is listed as a useful communication tool in your 'Tools for Embedded Developers' page. However, I don't think the description gives the tool nearly enough credit. Docklight does provide the standard terminal interface with the ability to transmit and receive characters and log serial communication to a file. In addition, there are several key features that Docklight provides:

  • The ability to passively monitor serial communication between 2 devices with syntax coloring to differentiate between the devices.
  • Serial port selection. In order to select the serial port, the serial port number is typed in so you are not limited to a pre-defined list of port numbers.
  • Tabbed display to quickly switch between Hex/ASCII/Decimal/Binary representations.
  • Serial protocol debugging. The capability to create user-defined sequences of characters that can be transmitted by pushing a button. The ability to react to a user-defined received sequence of characters. Once constructed, all user-defined sequences can be saved.

I have not found a better program for serial protocol debugging.

Ken Smith recommends two tools:

My favorite productivity tool of all time is GNU screen. At a minimum, it gives you tabs in your xterm or other terminal emulator so you can have multiple virtual xterms in a single window. You can detach a screen and the processes that are running in it will remain running. For example, you can detach your screen at the end of the day, drive home, and reattach and you'll see the exact same window that you were looking at before. This is great for checking on long running processes. It can also connect to serial ports. Eg `screen /dev/ttyUSB0 115200` will open a screen window on your serial port USB0.

The second tool I can't live without is tcpdump for debugging network issues. It's like wireshark but it is strictly a command line tool. It links with libpcap and can exchange files with other tools that support that format.

Adrian Alexandrov like Termite link. There's one terminal I've been using for year or so. And it seems to be very handy. It is a simple rs-232 terminal for windows (works with windows 7, too). Features worth mentioning are:

  • different colouring of input and output data.
  • logging
  • autocompletion of previously-entered commands
  • ability to forward data from one port to another so you can use it as a sniffer between 2 devices
  • hex mode
  • timestamps (which is especially useful for analysing logged data)
  • supports non-standard baud rates like 31250 bps and 250,000 bps (never used it, but may be essential for some applications)
  • it supports writing your own filters.

Version Control Systems

There's a good summary of the differences between decentralized and centralized version control systems in Queue magazine here .

Thomas Linder wrote: TortoiseGIT should be mentioned. Except from the basic difference between a centralized VCS (SVN) and a distributed VCS (GIT) those two are equally powerful and quite similar. GIT especially has strengths for e.g. when you're on a plane without Internet connection since you are able to make commits to your local repository. Back on the ground, you are then able to synchronize your local repository with the "origin" which may be a central server or another computer of a co-worker. TortoiseGIT, just like TortoiseSVN, gives you icon overlays for modified or new files and allows for easy operation from within Windows Explorer. Also, Microsoft's TFS Server offers GIT integration in some minor degree. Yet, GIT comes with more options, thus being a bit harder to grasp in the beginning. Also nice: you can switch between branches while not being dependent on a trunk/branch structure. Switch to another branch and GIT will simply replace the files like they were. Switch back to your master branch and you are where you initially started.

Leland Hamilton contributed:

I prefer to place software in some sort of VCS system as it is being developed, mostly to keep a backup in case I clobber a file, but it also helps to see the development progression. I once consulted for a small company for a few days to solve a problem they were having with some embedded firmware. Once we got the software working I suggested they update their VCS repository before making any more changes so we could recover the working copy if necessary, but they insisted on making a few small changes first. They ended up with a non-working version and could not reconstruct the working version. To start off, I suggest CVS with WinCVS GUI front end. WinCVS provides a graphical tree structure on the left similar to Windows Explorer, and a display on the right of files that are and are not in CVS, whether the CVS tracked files are modified Includes capability for almost every CVS command you can think of, along with the ability to type any command in a command line window.

CVS files are stored in a central repository that can be on your computer or another computer running a CVS server. Also uses a local subdirectory file structure that identifies the repository and current workspace file information. Tagging specific revision of files, comments for each update, branching (for those cases where you need to continue new product development and perform maintenance updates on a prior release. Commands include creating a repository, importing and exporting a directory tree, tagging and branching, checkout, update working file with repository changes, committing a file to the repository, adding text, binary and Unicode files, difference of working file versus repository and other combinations, annotated listing showing the version number associated with each line, module status listing, graphical branch structure diagram with ability to select specific tree locations, option for file locking editing, watch notification.

Subversion and TortoiseSVN (link): a modern day VCS system that includes integration in Windows Explorer. Prefers to work with directory trees, but using its repo[sitory]-browser, it is possible to create a subfolder and put a single file into Subversion. I found it a little difficult to get right the first time, but once set up it is easy to work with.

TortoiseSVN is a free open-source client for the Subversion version control system. That is, TortoiseSVN manages files and directories over time. Files are stored in a central repository. The repository is much like an ordinary file server, except that it remembers every change ever made to your files and directories. This allows you to recover older versions of your files and examine the history of how and when your data changed.

TortoiseSVN adds Shell integration, Icon overlays for file status, explorer context submenu. Some of the many Subversion features that may be of particular interest:

  • Atomic commits: A commit either goes into the repository completely, or not at all. This allows developers to construct and commit changes as logical chunks.
  • Directory versioning: CVS only tracks the history of individual files, but Subversion implements a virtual versioned file system that tracks changes to whole directory trees over time. Files and directories are versioned. As a result, there are real client-side move and copy commands that operate on files and directories.
  • Usable locally and over networks, versioned metadata (properties associated with a file), binary differencing algorithm for both text and binary files.

Also RCS probably deserves mention, although I think CVS and Subversion trump RCS.

Rodrigo Flores adds that there's a version for CVS: TortoiseCVS. Find it here and here .

Dave Kellogg like TrackBack:

A fairly new tool that I find very useful is TrackBack, from Scientific Toolworks (here). TrackBack runs in the background and saves a copy of a file every time it is written to disk. Thus it provides a sort of poor mans VCS by keeping every version of each file Im working on, prior to committing it to the official Version Control. TrackBack is very configurable regarding which directories and files to back up, and works with any type of file.

I find TrackBack to be an extremely powerful enabler, because I am more confident in moving forward rapidly because I know that I can back-track if needed.

A free eval is available, and installation is painless. Recommended as very worthwhile insurance.

Thor Johnson wrote: You mentioned SciTools TrackBack in the last Embedded Muse; I found one that is free-as-in-beer that seems to do the same thing: FileHamster (ink). It seems simple enough; Not as robust as Subversion or a real version control software (no tags/branches/etc), but easy to use to make sure you don't obliterate the wrong file at the wrong time. Works OK on WinXP Pro.

Louis Russ wrote: I was reading Jack's tools page which looks like a very useful page and was surprised to not find Perforce in the list of version control tools. So I thought I'd offer it for submission to the list. I've used this on a couple of projects and like it. I particularly like their support which IME has been outstanding. I wish other vendors were so easy to deal with and so helpful. For small projects they have a free non-expiring two user license. Lots of integration with other tools.

Philippe Cau likes darcs: I'm using darcs (here, it exists on many OS). My company is working with something close to CVS, but on my workstation I'm versioning all my work many times a day with darcs. It is very easy to install, and it really helps me to follow all my  code updates. It saves me many hours a week. Instead of wondering what I have broken during an update, I can follow many records I have done. Plus, I discovered an other point of view of versioning, a global point of view instead of a file point of view.

Ray Keefe likes Team Coherence.

We selected it for 2 features we particularly liked:
- You can set up projects with objects that are mirrors from a central location.  So we can have generic code we use for all our clients and mirror that to each client without them having to know anything about the other clients or our internal project structure.  It seems each client has a different theory on file and directory structures so this gives us tremendous flexibility while keeping to the 'write it once' maxim (closely followed by the 'so you only have to test it once' maxim).  And of course, updates to any version are automatically reflected back to all versions.  So you have to be careful as this can spread defects just as effectively as features.
- the repository can be backed up even when in use.  No need to manage that or have any down time.

They now offer a free license for single/freelance developers (find it here) which is a great way for these programmers to have good access to tools like this.  Revision control pays for itself every week in my experience

)nternet Tools

Phil Schmidt wrote: As we all know, web research constitutes a significant part of any development. And information capturing and gathering is a big part of this process. I don't remember how many bookmark managers I tried - with no big success - until I've found the ContentSaver (link). It saves complete web pages or clippings on a fly, edits and annotates, organizes and categorizes, has great search options and many, many more. After I've tried it, I will never go to any bookmark managers. Not free, but it saves so much time that it easily pays for itself. Highly recommend it to anyone who spends any significant time for Internet research (and I am not affiliated in any way with Macropool !). It does have a free trial (I used it for one day and decided to buy).

Don Peterson said: Here's an open source web authoring tool that's simple to set up and use - NVU: link. The people at Adobe have forgotten the simple roots that their Acrobat reader used to have. Now if you want to read PDF files, you have to download 17 MB of junk. Forget that -- get Foxit reader, a fast PDF viewer. They didn't screw up the scroll wheel support like Adobe did. Get it here.

Fred Roeber wrote: The tool Foxit is mentioned for viewing PDF files. Something I really wanted to be able to do was add notes to PDF files without having to buy the Adobe version that supports that feature. I had trouble with Foxit crashing on Windows platforms when I tried to use its "notes" feature. However, I've had no trouble using the free PDF-XChange viewer from this site to put notes in PDF files. It's really powerful and, like Foxit, allows you to use the scroll wheel for smoothly scrolling through documents.

Here's some free PDF conversion software. It can convert PDFs to editable formats like Excel, Word and PowerPoint and also create PDFs from many different Windows documents. It requires no software installation, only an email address where links to converted documents are sent.

Scott Winder's thoughts: Someone already mentioned Copernic Desktop Search (which I use for my files as well as my email--it's incredibly potent and somewhat addictive. But I'd like to add that Copernic has had other search-related products on the market for quite some time. I own the professional version of Copernic Agent (get it here) and have used its predecessors as well over the years, and I can only describe it as the search tool to use when Google just doesn't cut it. They have a multitude of search categories and features galore--there are even Programming searches (which have expanded to cover several different languages since they first added a programming search at my request several years ago). Oh, and the last time I used their customer support (said request), they were quite responsive.

Charlie Wallace likes Putty: Putty is also good for lightweight serial/ssh/telnet /scp/ftp etc. (link). Jack is a fan of Putty, too.

Various Desktop Tools

From Jack Ganssle: I switched to a Mac laptop a few months ago.

Finder, the Mac’s equivalent of Windows Explorer, stinks. But PathFinder from this site fixes all of Finder’s flaws. At $40 it’s highly recommended.

Lately (August 2017) I've tried Commander One. The free version is a dual-pane file manager, which is quite handy. It includes .zip compression/extraction, regex searches, and a host of other features. The Pro version ($30) adds an FTP client, access to cloud services like Amazon S3 and Dropbox, the ability to mount iOS devices, and more. Recommended.

Also from Jack: Here's a plug for the free FileZilla FTP tool. It's small and fast. It does continually nag for updates. Linux and Mac versions are available, though I have not used those. It will queue multiple file transfer and can even be configured to limit bandwidth usage. I find FileZilla so useful it's pinned to my task bar. There is a server version available as well, also for free.

From Don Peterson:

If you need a database, the open source MySQL (available here) could be a good choice for you. On Windows, it hooks up easily with an ODBC driver and lets you connect to its databases with the Open Office programs.

We all have to keep track of lots of logins and passwords these days. I like to use KeePass (link) for this. Another good tool is Password Safe (link), but I like KeePass just a little better. If you're interested in getting off the Microsoft upgrade-every-few-years treadmill, take a look at Open Office (it's here ). I used MS Word for 20 years, so it took a bit of effort on my part to switch over, since I had numerous macros that helped me in my work. However, I've become _very_ attached to Open Office and how it works -- so much so that I rarely use MS Office anymore. The main program I use is Writer, which looks a bit like MS Word. To be objective, be warned that OO Writer crashes more frequently than Word does. However, to its credit, there was only one time where I lost any work (its recovery process works very well). On the other hand, I've had MS Word absolutely trash some documents to where they were unrecoverable -- and this resulted in a lot of lost work. Even with the crashes, OO is (in my opinion) a better tool than Word.

Tim Dahlin likes VolumeID --> from this site . Let's you modify your hard drive id.

Rod Bartlett likes ack! - a Perl script which functions like a project aware recursive grep for programmers. It can be configured to search in only file types and/or directories of your choosing. This capability allows me to pinpoint search results of interest without having to wade through pages of matches which aren't really interesting. It is aware of typical file extensions for many programming languages but can be customized to support new ones as well. I use its support of parameters within environment variables to be able to limit searches to platform specific portions of our code base.

Rod Bartlett also recommends Hex to ASCII text converter - Like most programmers, I have an unreasonable hatred of repetitive and tedious tasks like converting hexadecimal byte values in memory dumps to their ASCII equivalents. This web based tool allows me to paste a group of hex bytes, words, or longwords and see their ASCII equivalents immediately.

Jack Ganssle has a serious addiction to the Unix command shell and use it for all sorts of scripting needs. Cygwin is one option to move those capabilities to Windows, but the UnxUtils are free. There are about 120 tools (like grep, awk, sed, tr) all zipped together.

Ben prefers GnuWin32 Tools: Instead of UnxTools try using GnuWin32 Tools - http://gnuwin32.sourceforge.net/. They have a lot more ported over to Windows as native tools and there is even a nice "installer" (http://getgnuwin32.sourceforge.net) you can use.

Jack Ganssle says another option for creating complex scripts under Windows is the free AutoHotKey.

It sure beats writing C code if you're doing a similar operation to a mass of text files, for instance. I have found that it can be tedious to get the scripts right. Here are the comments from one of my AutoHotKey scripts that give a flavor for what it can do. The entire script, with comments, is 222 lines:

; Operation: This converts a directory full of files.
; - Each file is opened in Word
; - The title is extracted and stored in variable Title
; - If "Poll question" appears it, and all text till the
;    next pair of CRs is found, is deleted
; - The title in the Word file gets <h1> and </h1> tags
; - Every pair of Enters is replaced with a <p> tag
; - The file's creation date is put at the end of the file
; - The entire article is put on the clipboard 
; - Word is closed
; - Ultraedit is loaded and the article pasted into it.
; - Ultraedit then reformats it to remove non-WWW characters
; - The article is then copied to the template and Ultraedit is closed
; - Ultraedit is loaded with the "template.htm" file
; - The Title tag is found and is set to the value in variable Title
; - The string showing the insertion point is found, and the clipboard pasted
; - Ultraedit then saves it to a file with the same name as the Word file, but
;   an extension of .html, all the spaces removed, and all lower-case.    

Rodrigo Flores wrote: for those of you using PasswordSafe, Password Gorilla is a format-compatible (you can use either client with the same DAT file) multi-platform (I've used it in Windows, Linux, and Solaris but it supports others including Mac OS X) and stand-alone (Exe for Windows, TclTk kits required for Posix) replacement is here .

Oliver Bachmann writes: If you are looking for a good search tool, try InfoRapid Search And Replace. It has one of the fastest search engines I have seen so far, and I use it regularly for searching strings in files even in subdirectories where other search tools do not generate a hit.

Dave Kellogg writes about several tools: One of my favorite utilities is FileLocator Pro (link, $40).  This is WAY more powerful than your fathers GREP.  It can even GREP on file names and paths.  It knows how to search inside of Word, Excel, PDF, and ZIP files (and many others).  It can do searches (with exclusions) that combine date, size, attributes, contents (including RegEx), and file name (including RegEx).  Like any good tool, it is scriptable. Highly recommended.  It is the best search tool that I have found.
 
Dave also sent: Until I got Snagit (link,  $50) it, I did not realize how handy having a full-featured screen capture and mark-up tool would be.  If all you have ever used is Windows Screen Print, you are in for an amazing surprise.  Being able to clip and add mark-up to a screen shot is a huge enabler.  It is very helpful for interacting with tool vendors, when resolving problems.  Again, highly recommended.

Ray Keefe is also on-board: Snagit (link):

We also use this screen capture utility and it saves a lot of time.  Our primary use is generating documentation of programming procedures, testing procedures and program operation.  The ability to capture the current window so we can paste it into the documentation is a real time saver and it operates quickly and efficiently with a range of graphics tools for adding features like arrows and text labels.  Great for capturing a PCB from our CAD package then adding arrows pointing to test points with annotations about what the test point is for and colour coding the lot to make it easy to identify the test point.

Also great for capturing the details of bugs so you can send of bug reports with evidence from their own windows.

From Ernest Schloesser: In your latest newsletter, snagit was mentioned. After having used snagit for many years, I now switched to greenshot (link). Capture a region of your screen, apply text and shapes, output to file, clipboard or printer. It does not record movies. It costs less (open source) but will do less also. But, as with many tools, 50% percent of the functionality is often enough. It also uses less resources.

Carl VanWormer sent this: Your mention of Snagit ($50) prompts me to suggest my new favorite, Picpick (link), which is free, and has more features than my previous favorite of the last 10 years. My preferred default is to capture a mouse defined rectangle after hitting the print-screen key. The resultant rectangle pops into an image editor for any pretty arrows and notes, with that result able to be printed or saved as a graphics file. This file was brought to my attention by Gizmo, where I have found most of my current favorite programs and utilities. Check out their reviews.

David Hunt uses the screenshot feature in Dropbox, then edit that with FastStone Image Editor. FastStone is lightweight and snappy...it is a full and complete image editor. Using the Dropbox screenshot feature has a side benefit...it allows me push one button to save the screen, which usually has many more things I want to save. It also make the screenshots available across all of my machines (9) so I don't have to fool around with manual file transfers. Here is how to enable that feature.

Bruce Wedding (August 2010) commented: I saw someone recommended Snag-It by Techsmith. To really take training and instruction to another level, look at Camtasia Studio by the same company. This is screen recording software which allows you to specify an area of the desktop and make a video of your actions. It also records your voice. This is great for training on processes. It is also excellent documentation on how to perform builds, debugging etc. The uses are unlimited. (He also suggested TechSmith's free Jing. It seems to be a scaled-down version of SnagIt.)

So did Roger Ball: I'll second Bruce Wedding's recommendation of Camtasia from ToolSmith. I used it to create a set of user tutorials on one of our new products a couple of years ago. It was easy to use for making synchronized voice with screen-capture movies to really show & explain how to use our product. My thumb is way up on Camtasia.

Jim Donelson gives a vote for CamStudio: "I have been using CamStudio (link) to record screen and sound and it has worked very well for me. I can't compare to Camtasia.

Here's a review of a number of screen capture utilities.

Don Peterson wrote: For Windows, check out this site -- especially Process Explorer. It's a nice replacement for Windows' Task Manager.

Mike Teachman contributed: The mention of InfoSelect made me think of a free tool that I use a few times a day. It's Copernic desktop search. www.copernic.com I use it solely to search MS Outlook for emails and contacts. It indexes all your emails. It's blazingly fast and has an intuitive interface. I tried Google desktop search, but, for me Copernic was superior.

From Scott Winder: CLCL (from here). A free clipboard manager that stores past clipboard entries but also has template capabilities and a versatile plug-in architecture for custom manipulation of copied clips. Once you get used to using this one, it can be very frustrating to work on a computer that doesn't have it installed.

Archis Bhave recommends Launchy (here) is a keystroke launcher with catalog facility. No more hassles to find where one stored the files, may they be images or data sheets. Runs on Linux (with a source build) and windows both. Can launch installed applications as well.

Well-known author Jan Axelson suggested three tools: OpenWide (link) customizes the File > Open dialog in applications (not just Windows Explorer) to default to the size, position, and view (List, Details, etc.) that you prefer.

Clipmate Clipboard Extender (link) remembers and manages up to thousands of clipboard items. The PowerPaste feature will easily paste a series of clips in sequence.

Ultramon (from here) helps manage multiple monitors, including easy moving of maximized windows and optional custom taskbars for each monitor.

David Bley likes MWSnap (link) - This is a screen capture tool.  It lets you capture a part or all of the screen and put the image into your word document.  Great for manuals, procedures and instructions.

Eric Smith writes: MWSnap (link) - This is a screen capture tool. I haven't tried MWSnsap, and it's hard to argue with the price (free), but I've been very happy with CaptureWizPro by PixelMetrics.  Disclaimer: the author is one of my friends, but I don't have any interest in it other than as a satisfied user.

Don Peterson wrote:

Sometimes it's handy to turn something into a PDF. If your company won't spring for an overpriced Adobe tool, you can get free tools like PDFCreator for Windows which will insert itself in the printing stream and convert the output to a PDF file. Frankly, though, I don't use it anymore, since I switched from MS Office to Open Office a number of years ago. There's a button on the OO toolbar to convert the file you have open (word processing document, spreadsheet, presentation, drawing, etc.) to a PDF -- I use it constantly. I also do a lot of equation writing and Open Office's equation writing tools are excellent and much faster to use than Word's. If you know LaTeX or TeX, the OO equation writer should look pretty familiar. Here's a cheatsheet I use.

I don't have a copy of Adobe Acrobat, but I sometimes need to make simple changes to a PDF file. The stapler.py script from http://github.com/hellerbarde/stapler is capable of concatenating, splitting, selecting, or deleting pages from PDF files. You need python and a PDF python library. Very handy (and free) when you need it.

Philippe Cau says: I'm using PtrScr program to make screenshot under Windows. It is very useful when you must write some documentation or make a presentation too. Get it here.

Jack Ganssle likes Second Copy (link): Without a reasonable backup strategy you might as well junk the computer. I find Centered Systems' $29.95 Second Copy keeps the data safe. As a certified old-timer I have never caved into Microsoft's evil My Documents default directory structure, and save all important files in c:\docs. Second Copy lets you create various backup profiles, and one of those automatically copies that directory to an external hard drive every evening. But first I have it run a DOS script that backs up the other machines here into a subdirectory under c:\docs, so everything important in this office is mirrored to a Western Digital Passport drive. Automatically. I keep the same directory structure on the laptop, and use Second Copy to keep c:\docs identical on both machines. And another profile copies everything to a Thumb drive. The program only copies files that have changed, and you can have it keep as many old copies of files as you'd like in an archive directory. Highly recommended.

Ray Keefe says: For complete system snapshots we use Shadow Protect from Storage Craft (link).  We have set it up to do full system snapshots weekly and 2 hourly incremental backups.  The recovery console lets you map the repository as a drive and you can browse it so it is also great if a file gets trashed and you just want to go back to a version from more than 2 hours ago.  This is useful for files not in our revision control system such as installed executables that get trashed by an upgrade that goes wrong.

From Don Peterson: My sister turned me on to Zotero, a bibliographic plugin for Firefox. It lets you capture web page content and save it on your computer and later create a bibliography from the things you found. You can choose from a variety of bibliography formats. An important subtlety is that you have the web page's content on the day you saved it -- important for sites that have dynamic content. I used the Scrapbook Firefox plugin for a few years, but found Zotero a better tool in most ways.

Johan Kok wrote: For synchronizing I use AllWay Sync (link). You can set up profiles for different directories with different rules for each and it only sync the file difference to speed up the process.

Martin Jahn wrote: I have a similar backup scheme in place. But I'm currently not using a commercial backup software. Instead, I'm using hand-crafted scripts and at the heart is Microsoft's "robocopy" ("robust file copy for Windows") command-line tool, part of "Windows Server 2003 Resource Kit Tools" (rktools), which can be downloaded from Microsoft. This tool is definitely worth looking at, as a decent replacement for "copy", "xcopy" but also goes beyond (e.g. mirroring feature, as you use).

Martin Jahn also likes Total Commander: The most important of my can't-miss tools for over ten years is Christian Ghisler's "Total Commander" (link). It's a fast file manager for Windows with numerous features built-in, well-suited for operating by key strokes, boosting productivity. An unlimited, fully-functioning evaluation version lets you try it without hurry and the registration price is very affordable (and includes updates forever).

Rich Ries echoed others' compliments about Total Commander: A big AMEN!!! TC also has a DIY network feature which allows me to transmit files between two computers. The one is an XP machine with NO floppy drives, but thumb drives; the other is a W-98 machine with NO thumb drives, but floppy drives. The W-98 is my work machine (do the development there); the XP is the company approved networking machine which I found impossible to get my (DOS-based) development software to run on properly. TC allows me to transfer the files relatively easily. The drawback is that I have to do a manual refresh (Ctrl-R) to see the new files.

Timothy Dahlin sent: I didn't see rdiff-backup on your site. See this site . I use rdiff-backup for automatic weekly incremental backups of my active working directories to an external hard drive.


CAD Tools

Richard Tomkins submitted the following: Number one and this is a really great tool, DraftSight, a free (FREE), professional 2D CAD application from Dassault Systemes, it runs on Macintosh, Linux and Windows platforms and it does DWG (AutoCAD) files, opening, editing and saving.

Number two is DesignSpark, a free (FREE), Schematic capture, design and PCB layout application, it reads Eagle files and will work with Eagle libraries, it does 3D board images with the use of Google Sketchup. It runs on Windows.

Marco Reis suggesed: I'd like to submit the OnShape (https://www.onshape.com) cad to your list of software tools. Although it is a mechanic cad—not a schematic/PCB cad—it is extremely powerful and easy to use; free for hobbyists and is a web-based (zero-installation) tool. Combining this tool with 3D printers, which are very affordable these days, we can very easy build custom boxes and mechanical parts to our embedded system prototypes. OnShape even have a free online training that is very easy and fun to follow.

Steve Karg wrote about Kicad: There is a project called Kicad which is open source (GPL) software for the creation of electronic schematic diagrams and printed circuit board artwork. It is cross platform (i.e. Windows/Linux) and free. The example layouts they include are pretty slick, especially the 3D view. Of course, you have to be able to create the 3D decals/parts to be able to do that, but the concept is sound and the program works. The home page is here.

Clyde Shappee concurred: Another very capable schematic tool and PCB package, all in one is Kicad. “It is a nicely integrated tool that keeps getting better! I have a colleague who uses it now exclusively (start-up == no money) and has done 5 designs with it with very few complaints or "Gotchya"s.

Archis Bhave likes KiCAD: kicad.sourceforge.net is an open source and feature rich schematic editor and PCB lay-outing tool. Nice for the schematics, good for designing quick prototypes.

Here's a decent article comparing PCB packages.

Jonathan Harston wrote: Talking about development tools, and PCB layout in particular, I use Paint Shop Pro. No, really! I put a grid lock on at 15 pixels, which becomes my 1/20 layout grid. Printing at 300dpi gives a tracking image. I email the layout as a JPEG to a PCB fabricator, they add on a tenner to convert it to their format and send me a little parcel of PCBs a few days later. I wouldn't recommend this method for anything big, but for small jobs it's a breeze.

Scott Rosenthal cued me in to free schematic capture and PCB layout sites: Pad2Pad (link) and DesignWorks Express (here). I've used the latter's DesignWorks package for some years. But the two together lets one get a small PCB design, plus a manufacturing quote, in a jiffy. Board prices are, to this old guy who used to spend thousands on PCBs, really cheap.

David Bley suggested EasyCAD - This is a 2D cad package that is very powerful, easy to use, 1/10th the cost of AutoCAD and imports and exports DWG and DXF files.  I use it for front panel layouts, PC Board outlines, sheet metal drawings, etc.

Mark Misiewicz likes Sketchup: I have a suggestion for mechanical CAD package.  About two years ago I discovered Google Sketchup.  What a great piece of 3D modeling software! And it is FREE too. We use it for modeling and designing enclosures, front panels, fitting circuit boards, garage shelves, mechanical parts etc.

Chuck Petras had this: Here's a circuit simulation applet (java running in a web browser window) you may find helpful: get it here . Use menu Circuits -> Blank Circuit to bring up a blank palette and then right click to add circuit elements. Also he's got some other applets that look like fun: it's here .


VHDL/Verilog Tools

Shalom Bresticker wrote: Since you have an item in the Table of Contents for Verilog, you might want to list this site/.

John Johnson reports: Someone in the FPGA/Verilog/VHDL newsgroups decided to survey tools, i.e. editors and IDEs, for VHDL (Verilog?). The results are published here .


Static Analysis and Metrics Tools

Juergen Kemmler wrote: Polyspace is used to clean up our safety critical code, it works well. We perform Module Tests and project analysis.

From a reader who wishes to remain anonymous:

In response to your question about static analysis tools, I'd just add that I've been using PolySpace for about 18 months now. The results for C and Ada95 are better than C++ (this is possibly due to the language definition itself not lending itself to analysis). We can run 'whole program' analysis in both C and Ada95. Hints:

1) add loads of memory (4GB)
2) runon GNU/Linux, not Windows (40% speed improvement). The tool uses Cygwin on Windows and this seems to slow things down.

But your question was really "does it work?" The short-ish answer is "Yes", with some effort and no tool is perfect.'

The tools understand some constructs better than others, so this is obviously easier to get right on 'blue sky' projects rather than 'legacy'.

E.g. Const correctness is an absolute _must_ in any library routines the unit under test calls. Without this PolySpace must assume the worst, e.g.

int   myLibRoutine(int* i); // no const correctness
// assume that 'i' can be changed // to point to anything // and that '*i' can be changed // to any value

Instead:

int myLibRoutine(const int* const i); 
                            // with   const correctness
// the value 'i' can not change and // the value '*i' can not change


Little things like this go a huge way to improving both the speed and quality of results. NB: it is also just 'best practice' coding style!

Possibly one of the most telling stats is that we find loads more bugs in the C code than the Ada code. I can think of 1 bug that PolySpace uncovered in Ada code in all that time. It arguable that we'd have been a lot cheaper to not bother with C or PolySpace and just write everything in Ada!!

Vlad Zeylikman wrote:

I had experience with PolySpace about 4 years ago. The system promised a lot but delivery was another story. The code it was given was pretty bad: convoluted functions, some 5-6 screenloads long, half a dozen tasks interacting with each other via messages (mostly). In some cases, they communicated via globals protected by disable/enable interrupt pairs. The code needed analysis and refactoring as it suffered from unexplained random hangs. The hope was that PolySpace would pinpoint the problems, we'd fix them, and this would buy us time to do a real refactoring and optimization.

Well, PolySpace tried. They gave us a PC on which we ran the analysis and it did not go well. So, they offered to send our code to their Grenoble headquarters where they have a server farm - it was a matter of pride and they wanted to show that they are up to the task. Our code sample hung their servers.

PolySpace rep was a nice and a diligent man and I worked with him and the tech support guy and in the end we decided that it was taking too much time.

I refactored the code, removed the globals, etc., etc. The system got better and faster. And the code became readable. A year hence, we got a call - they ran our old code through their servers! The rep realized that it did not matter to us but wanted to show that they are getting better and maybe they should be considered after all.

My impression after all this is that it can be a useful tool but when the code is bad - high cyclomatic complexity, lots of variables in the scope, and complex interactions - it becomes too taxing for PolySpace. It might be much better now, I hope it is: they are improving and the hardware is faster now. But when the major surgery is in order - do it and forget the analyzers.

A reader who wishes to remain anonymous wrote:

We are using PolySpace here with good end results. However, it is a beast to run reliably on Windows, and the results are often difficult to interpret. Also the analysis is very slow (longer than the time between releases for us), and incredibly the server product cannot be sped up by adding processors. The tool is only able to verify subsections of code, not the whole system (which is apparently too complex for PolySpace to handle). It does not cope well with autogenerated code.

The key to success is automating the submission of code into the tool, and investing time implementing the many tweaks that PolySpace recommend to improve accuracy. Out of the box, the current version (3.3) produces too much noise for many developers to take it seriously. After the tweaks and automation, it all becomes a lot easier to deal with, and it does find real and potential run time bugs!

So: not happy with the setup pain and quality of the GUI which is too much and too flaky on windows at least. All the obvious errors are found, and so far (2 months, 4 releases) no errors that should have been found have crept through.

Any bug is potentially catastrophic. So I guess they are worth the price if you have the money.

Tormod Tjaberg commented: We had a meeting with PolySpace a few months ago where they were showcasing their product.

The presenters were not very knowledgeable about the product. When it came to the actual licensing and pricing we could not understand why they needed a special server where they uploaded the code to and it performed the analysis.

We gave them some code and after some hassle they managed to start the analysis. They discovered one trivial bug. But at that point I telnetted into the work environment and ran flexlint which in < 10 seconds found the same bug.

The product had a hard time coping with a mix of C & C++.

And we could not get it to analyse anything on our current Linux project. There were bugs in PolySpace itself which choked on the kernel include files.

I would not say they are selling snake oil but their emphasis is convincing non IT savvy managers that this is the silver bullet.

I would use Flexlint, it takes some time to set up but when it's running it's fast. It also does multiple passes and code analysis.

Jeff Brentlinger is using the static analyzer from Klocwork:

We are early in the use of Klocwork (from here), so I did not reply to your 1st request for people using Static Code Analysis Tools (I was hoping some of the other users would chime in).

One of the problems we have had is resisting the urge to use this new tool on the current project that is in trouble. Project X is late, so let's run this tool over the code...Great now we have 200 critical code issues on top of the 200 bugs reported by the test group (we won't even think about the 70,000 other issues the tool found).

Like any quality improvement tool/method/process, static analysis tools need to be use early in the project (built in quality).
Having address that small part of the cultural issues, what about the tool itself? We have yet to have Klocwork flag an issue that was not at least poor coding (if that code is executed there will be a problem, but is that path ever executed?).

One advantage of this type of tool (over lint or just turning on all the compiler warnings) is that the results are public. Anyone on our network can log in to the system and see that Project X has 165 Critical Code Issues, far better than the situation where the compiler warnings (or lint report) just stay on the build machine seen by no one.


From Justin Phillips:

I've used Parasoft's Insure++ to perform static and dynamic analysis of embedded code in a host environment. It's a good tool which uncovers all of the usual features and more besides. The runtime analysis feature also provides code coverage figures which can be helpful(!).

My reservations about it were that it had setup costs (time), also code instrumentation degraded runtime performance (expected) and was resource hungry, which affects usability. What would have been useful was a runtime tool usage detection function in the tool's API, which is a feature Rational's Purify plus. Which is useful for determining which memory allocator to use.

As far as lint goes, flexelint is lint on steroids.

With all of the above tools, the biggest pain is ensuring that that they are fully integrated into the software development process that's hopefully followed. Also their continued usage needs evaluation and review i.e. sharper tools are always required.


Matthew MacClary uses these checkers:

    • gcc -Wall -O3 (sometimes with a -pedantic)
    • splint (link) is designed to be a better lint with a security focus, the theory being that broken code is insecure code.
    • valgrind is excellent see here, it is actually a dynamic checker though. I implement the core of my functionality for embedded systems as regular Linux programs, and then just pass a define variable to the compiler when I want to to pull in the microcontroller specific functionality. This systems lets me use every tool that is available for Linux development.

I am happy with these tools. I use gcc with lots of checking turned on all the time, the other tools I just use on hairy problems - though making them part of my standard flow would be great too.

The key errors that aren't checked are asynchronous / interrupt handler type problems. I rely on coding best practices like reliable debouncing routines, ring buffers, and double buffers as appropriate to design this type of asynchronous code correctly from the start.

Dave Kellogg sent this: Understand (link) is a powerful IDE plus Static Analyzer.  It parses your code (C, C++, Java, Ada, VHDL, and several others) at a syntactic level, and builds a database.  It can then show you textual and graphical tree views of calls to, called by, included by, read or write references to variables, dozens of metrics (including McCabes Complexity, comment density, line counts, and coupling), and much more.  It has a scriptable API, multiple monitor support, and all the typical functionality of an IDE. It can generate flow charts from your code. It has an architecture feature for grouping a bunch of source files together as a unit, and then doing analysis on that unit. I'm extremely impressed with the support offered by Sci Tools.  If you write code, you need to check out this tool.  If you maintain code written by others, then you MUST check out this tool.    The price ($500) may seem high if this were just an IDE/Editor.  But with its huge range of analysis features, it is a fantastic bargain.  Very highly recommended.

Vlad Zeylikman votes for Understand, too: (link). It's not cheap. the lowest priced version supports C, C++, C#, and Java. Other variants support more languages, including VHDL. It can generate code metrics, call and called trees, cross-references, etc. The code navigation within a project is very easy. Search can be done on project files or outside. There are Windows, Linux, and Solaris versions. For a large project on which you need to come up to speed quickly, it is an invaluable tool. It is way above SourceNavigator’s capabilities but then SourceNavigator is free and Understand is not.
 
Dave Kellogg also likes: PC-Lint (get it here) is the most capable lint available.  For $390, you get automatic detection of hundreds of questionable C or C++ constructs, coupled with extremely flexible false positive suppression.  It supports dimensional analysis (detects operations on variables with incompatible units) and MISRA compliance checking.  The manual is 500+ pages.  Strongly recommended.

Ray Keefe is a fan, too: PC-Lint - This tool languished for a few years but has recently been brought fully up to speed and maintained again.  It is great for catching coding issues and classes of bugs that are common.  Once again, an invaluable input into our code reviews.

Amr Bekhit suggested an open source tool he recently released: It's called PC-Lint Wizard and can be found at here. It is a GUI tool designed to make it easy to setup and maintain Gimpel's PC-Lint for software projects.

Vinay Patil likes Splint: Here is another very good, and free tool called splint for checking C Syntax, Memory leak, Buffer overflow, Naming conventions checking (even customizable), etc. See here.

Ray Keefe recommended Resource Standard Metrics from these folks - This is a very versatile tool.  We use it for coding standard conformance verification, code quality metrics, ensuring copyright notices are present in every file, general coding metrics and as one of the inputs to every code review we do.  It is free for up to 20 files and USD$200 for anything bigger.  For C and C++ development this is one of our mainstay tools for reviews and project metrics.


Reverse Engineering/Disassembling Tools

Charlie Wallace suggested: I didn't see IDA on the list, if you're not an engineer but instead a reverse engineer. It's about the most useful tool out there. Get it here .

 

Miscellaneous Tools

Grzegorz Mazurkiewicz suggests Kst https://kst-plot.kde.org/.

It allows you to visualize your data on 2D plots. It has also some analysis capabilities (histograms, power spectrum). It supports many file formats, but I think the most useful is of course CSV (or maybe the simplest to use).

A very interesting feature of this tool is that it can show the data in real time. It means that it updates the plots when the new data is available in the input file.

The simplest usage scenario for us, embedded developers, is to print the data using UART on a device side, transfer it to PC (FTDI or similar), save to CSV file and use it in Kst.

I did it when I was working on a project where accelerometers and other sensors were used. All the data from the sensors plus some variables were visualized using this tool. Very useful as a debug method.

Worth to mention is that this tool is really fast and handles lots of data without any lags. Tutorials: https://www.youtube.com/channel/UCuYlIZjLCWsDS6d3ghVZWrA

Freemind (link) is a really great tool for brainstorming and quickly building up outlines of hierarchical information. It's a mind mapping tool, a concept I wasn't aware of until I found Freemind. The best way to understand what it does is to look at the website.

Thomas Pircher suggested pycrc. It can calculate any CRC and generate C/C++ source code. The used CRC variant can be chosen from a fast but space-consuming implementation to slower but smaller versions especially suitable for embedded applications. pycrc is available here.

From Don Peterson: If you're a UNIX person who has to use a Windows computer, all your favorite and familiar tools can be gotten by installing cygwin (link). If you want to distribute apps under cygwin, the licensing fees are substantial. Instead, get the MinGW compiler (link) and you can build native Windows apps and distribute them without any fees. Use wxWidgets (from here) and you can build C++ cross-platform GUI apps.

Dave Mazzoni likes Boost, (site) a C++ extension that is being incorporated into the official extension to the language. Within boost are several very useful tools for writing test driven code. The most impressive thing (in my mind) is that one doesn't have to change the code in order to test it. Otherwise, you might experience the horror of removing the well placed debug print statements from 'tested code' to find the code then fails!

Tim Dahlin wrote: Advin Programming Tool --> Advin is here, I use it to convert different program file formats. It does not require an Advin programmer. The DOS version can be scripted using batch files.

Scott Winder suggests RegexBuddy ($29.95; link) as an incredible tool for learning, building, archiving, and debugging complex regular expressions. This is not always directly useful in a deployed system, but it's great for changing large quantities of code in a dynamic manner or finding similar but not identical constructs buried deep in your source files (note that this is not a search tool, but UltraEdit and a few other editors have regex search and JGsoft [RegexBuddy maker] sells one called PowerGREP).

He added: xplorer^2 (19.95 euros) is basically Windows Explorer on steroids. I'm not going to attempt to describe all of its features; it suffices to say that if you spend a lot of time wandering around in the folders on your Windows machine, this tool may do just as well for your heartburn as Rolaids. See here.

Rod Bartlett (August 2010) sent this: Having once again been frustrated by how slow the Windows search utility is, I finally found a better file search tool for Windows.  Its an open source project called AstroGrep.  This one lets you search recursively for multiple file extensions and either display just the filenames which contain the specified text or the filenames and the lines within each which match.  If you choose to display matching lines, the matching text is highlighted.  You can use regular expressions and limit matching files based on timestamps or sizes.  The best part is its very fast. See this.

John Kaasgaard wrote:

A great tool I use every day for organizing and structuring ideas, requirements database design and lots of other things is a free MindMapping tool called FreeMind from here and examples are here.

Another tool I often use for making release preparations, sending out .hex and binary files to the production or customers is fsum (link)- calculates the CSUM for the 'deliverables'

Finally, John mentioned: This tool is much more rich and useful - if you work with audio aspects. In or output! Audio Spectrum Analyzer (link) .

Roland Bennett wrote: This might come across as blatant self-advertisement, but I'm very proud of my first open source contribution (Time Tracker): this is the site . It is to aid timesheets without having to do much, the app will check the active window periodically and list time spent on each. Custom tasks can be added, and with the aid of rules, windows can be associated with these tasks. So if setup correctly, one would not even have to start/stop manual timers!

Grant Sargent likes Unison: For keeping various files in sync (home, work, removable drives etc), I recommend the Unison file sync application (link). Great if you don't need the revision control of subversion. Available for Linux and Windows. Open Source, works as advertised.

Ray Keefe suggested Duplo from here - A sourceforge project published under GNU GPL this finds duplicated blocks of code.  The idea is to refactor common blocks of code to make projects more maintainable.  You can select the number of consecutive identical lines required for a match.  It strips comments before comparing and also ignores white space so it is looking at just the code.  The weakness is that it treats variable names the same as it does keywords so if you name your loop variable differently then it will look different to Duplo.  But we still use it at the project review level to identify ways to make the software more modular and more maintainable for the long haul.

He also suggested SciLab from this site - This is an open source project with a GPL like license.  If you want a tool to do maths like Matlab but the license cost is prohibitive then this is one of your options.  It is not 100% Matlab compatible but is close in many areas and easier to use than other tools like Octave.  It includes a LabView gateway.

From Jason Hsu (August 2010): Another open source alternative to MATLAB is Octave, which has greater MATLAB compatibility.  I recently used it for analyzing data for Project Phoenix (IEEE study group working on an open source blood pressure monitor).  Since I live over 60 miles from the lab where we meet, using Octave has allowed me to work on the project from home.  Although the group has a MATLAB license, I'd only be able to use it at our lab, as it would be prohibitively expensive to give everyone in the group a MATLAB license.  Since Octave is open source, anyone can use it on any computer at any location.

Ron Kumetz sent:

I have been using two tools from Trace Systems. The first is the SUMS system which is an Ethernet bootloader on steroids. It is a complete firmware update management system for Microchip PIC based embedded systems. I can't imagine how anyone could duplicate the functionality for less than the price that Trace Systems sells it for! Get it here

The second tool is TCPMaker also by Trace Systems from here. TCPMaker allows you to define your browser based user interface in a graphical development environment and then generates the code to manage sending data back and forth between the browser and the PIC based embedded system. I had a cool looking GUI up and running in an hour and the Adobe Flash based system has controls that are much cooler looking than HTML while being easy on your bandwidth. Once again doing this yourself may allow you to pat yourself on the back but you are not going to save your employer any money by doing so.

Stephen Schwartz-Fenwick has done a really nice comparison of the JDSU Bus Doctor and Frontline ComProbe analyzers. The .PDF is here .

Jack Ganssle likes his Weller WESD-51, which can be had from Amazon for about $135. It's a nice unit. The tip comes up to temperature in almost exactly one minute. The LED temp display is very bright and a single knob sets it to any value between 350 and 850 degrees. It comes with interchangeable tips. With a 1/64" tip it's not too hard to solder small SMT parts. At least after the coffee buzz has worn off. Recommended.

Jack also likes TI's Handbook of Operational Amplifier Applications. It’s a 94 page .PDF which starts with the basics of op amps and takes the reader through all of the commonly-used applications. Highly recommended, and it’s available target="_blank"here.

ARM, in their attempt to assimilate the entire world of embedded systems, has a software stack called the Cortex Microcontroller Software Interface Standard (CMSIS) that simplifies and standardizes access to common on-board peripherals. Amr Bekhit has created a tool called the CMSIS Configuration Wizard, which is a free and open-source tool for easily configuring ARM CMSIS files (or other files that use the same structured comment format) without the need to use Keil's uVision IDE. More information can be found at this site.

Apps for Mobile Devices

Dan Swiger wrote:The apps I use most are: ASCII Table (yeah, there's an app for that), RealCalc (pretty decent scientific calculator with great conversions with data sizes being the most useful for me), TimeCalc, and Now and Then (basically "DateCalc"). I also use ColorNote to replace a short-term engineering notebook... I'm a poor writer (can't even read my ALL CAPS SCRIPT some days) so the swipe action is much more effective for me... talk about COOL technology: swipe!

Kyle Bostian is also an Android user:

I've come across several helpful apps for electronics and embedded engineering. ElectroDroid is great for reference information on connector pinouts, wire size and ampacity, and the like. It includes a nice ASCII table and calculators for several common formulas. I find myself using it when I'm away from my desk or bench, such as answering questions on the factory floor or in meetings. It's available in a free ad-supported version.

Viewing CAD data on a phone is painful but it can be useful to view a Gerber or DWG that comes in as an email attachment in a pinch. Duccan Nguyen is the author of Android Gerber Viewer, which is very usable. There are many choices on the DWG side, but my favorite is GstarCAD MC. It loads quickly and scrolls nicely, even on a low-end phone.

There are many HP calculator emulators available. If I'm at my desk I still use a real HP35 but if I'm anywhere else I use my phone and Free42 by Thomas Okken. It's fast and has no annoying ads. I haven't found a 16c or 12c emulator that I like but they're out there.

Nuts & Bolts is an app that has data on just what it says. I've taped a tap chart on every drill press I use but they always fall off... now, I just look at my phone. (Not electronics per se, but the real world is still held together with threaded fasteners.)