AVRSH: What a tool! I mean that in a good way.
It should be no surprise that, thanks to the Auduino platform, I reach for an AVR microcontroller first…at least for any project where an ARM SoC isn’t what I’m after. Part of the success of both the AVR and the Arduino platform (which is based on the AVR) is the proliferation of tools. When you’re working on a microcontroller, you’re flying with one propellor and not much else. In fact, in any good embedded development shop, you’ll find at least one tools specialist whose full time (or nearly full-time job) is to cobble together the toolkit for the other engineers. This person’s bread and butter is keeping everyone else from flying blind.
Suffice it to say, I love a good tool, and this could be one of the best I’ve seen in a long time…AVRSH, a command line and shell that directly exposes the features of an AVR. Register manipulation, pin configs, fuses…it’s all in there, and you can interact with them using a very familiar interactive shell. This is useful for two major reasons. The first is for those times when you need to poke around and scope out how a chip feature really works. Traditionally, I attack this by making a “dummy load” program and either single-stepping through it with debugger or watching the fireworks through JTAG. If neither are available, I make the program have some long timing in it and I start attaching an oscope or LEDs to watch the state of lines. This works, but it’s a crude process that’s infinitely improved by letting me more freely interact with the chip’s features myself.
The other way AVRSH is awesome is in general proptyping of a concept. Because the only way to know if your program works is to build it, program your board with it, and watch the results, there’s an endless treadmill involved in early prototyping. An interactive shell greatly improves this scenario, especially if you’re engaged in HW/SW co-design and need to watch how changes at one level impact another.
This is, effectively, the difference between exploring a cave by throwing wireless cameras in random directions and watching the video produced…and exploring a cave by picking up a flashlight and going for a stroll.
Make this a great scripting environment and basic embedded systems programming just became a first-class part of the Linux apps programming world. With AVRs making such great controllers for robotic activities, how long before “Begone or I’ll replace you with 10 lines of Perl” really becomes true?
