I realize this is probably an open ended topic, and I'm probably not going to phrase it correctly, but can anyone give me some thoughts on an approach for thorough testing of an Arduino clone?
What I mean is, verifying that it performs "as well as" a standard implementation, i.e. Duemilanove.
I've designed and built a circuit that includes two embedded "Arduinos" and, besides just using it for my intended purpose and seeing what happens, I'd like to verify as much as possible that it is equivalent to a Duemilanove. Are there any worthwhile, non-destructive tests I can perform? Things I can measure?
I'm thinking beyond the "pin 13 LED blink sketch." I have a JYETech DSO, multimeter, etc. so I can do things like watch a PWM pin's output on the scope, or feed a known voltage to an analog input and see what it reports back. Since I'm coming at this from a self-taught hobby perspective (i.e. I'm not an EE), I'm not even sure if it makes sense to test anything specific, much less WHAT to test. However, since I have a handful of other people interested in the project, I'd like to give them at least a shred of reassurance that it'll perform similar to a Duemilanove, besides just "oh, I sorta used the Duemilanove schematic, and mine hasn't blown up yet."
I have 2 sketches that verifies pins -- it makes sure that no pins are shorted to other pins or unconnected and that they all drive high and low. It uses 2 Arduinos -- you plug the "tester" into the "tested". I guess that's kind of your most basic functional test. You are welcome to have it if you want.
In terms of more interesting things to test, I'd look at your power and ground rails and see how stable they are. The AVR has those 6 analog inputs and if you don't have proper capacitors or even isolation inductors your analog input readings will suffer from random noise.
Also you could look at your clock crystal and caps and see how steady it is (if your scope is fast enough).
But you might have more fun trying to exceed the specs. Make the 5v rail handle an accidental connection to a higher voltage source.
I think I'm answering my own question. I suppose it should really be divided into two sub-questions:
Is the design seriously botched (traces touching or going to the wrong pins) or did I wreck something during assembly/damage an IC/otherwise cause a failure? This should be straightforward to test for and obvious.
Does the design meet some standard level of performance? i.e. are the Analog inputs "stable"? Is there "too much" noise on the power traces? etc.?
The problem with #2 is that I don't have a list of conditions to check for, and I guess it's a chicken-and-egg thing. I don't know how to test because I don't know what I'm testing for, and "what" to test for is probably rather application specific. And half my point in starting this thread was testing for unknown applications others might try to use the design for, which is probably an unrealistic goal, since if you don't know the application you can't test to see if the device will meet it.
Still, interested in hearing others' thoughts, whether practical or theoretical.