??? 06/16/05 13:05 Modified: 06/16/05 13:15 Read: times |
#95091 - one off Responding to: ???'s previous message |
Since most of my designs fall into the one-off category, I am sincerely interested in knowing more on proving the design in such cases.
One off really does not have much to do with it. I would state that "mission critical" or not is the determining factor for the time you can afford to spend on design thouroughfullness. You can not really "prove" a design, I have seen design errors that showed up less then once a year. (coincidence errors) An example of a thing that can be done: set a breakpoint in your ICE at the deepest subroutine you have (some deciphering of the M51 file can tell you where) and read the SP. Then check the assembly for all your interrupts and add the max at every priority level to the SP - are you over?. Another very important issue thet I often find missing is that all functions incapable of handling the min or max value (0-255 for a char NOT "what the program can generate") of a parameter MUST be able to survive (and mark) if an invalid value is presented - or, at least, gracefully error out. Oh, and DO use a lint program, it is amzing what it will catch. Anyhow re "design" vs "test". You can state "I ran a 5V 12 MHz uC at 3.3 volts and 16MHz and it worked" is that a valid design? The main types of errors that I can think of just now are 1) Ignoring the datasheet e.g. a memory chosen on the "typ" speed 2) Clerical programming errors e.g. '=' instead of '==' in an if 3) Functional programming errors e.g. stack overflow when subroutine max depth coincided with interrupts at all priorities. Since we all (I assume) are human, not much can be done about 2), but that will be found in the first test and be a solid bug so no "proof" will be involved. re 1) that is a matter of actually checking all timings. re 3) here we get into a mix of carefulness, forethought and experience and - rellly - I have no other idea than Nikes "just do it" Erik |
Topic | Author | Date |
AT89C51RD2 without supervisor IC | 01/01/70 00:00 | |
RC is never good | 01/01/70 00:00 | |
watchdog ad absurdum | 01/01/70 00:00 | |
and uses a bunch of pins | 01/01/70 00:00 | |
wd | 01/01/70 00:00 | |
paranoia revisited - wd 2 | 01/01/70 00:00 | |
when the full story | 01/01/70 00:00 | |
WD3 | 01/01/70 00:00 | |
if code run astray | 01/01/70 00:00 | |
Has been discussed before | 01/01/70 00:00 | |
External ones are better | 01/01/70 00:00 | |
External ones are better in one respect | 01/01/70 00:00 | |
Yes, but... | 01/01/70 00:00 | |
Nope, never use an external when | 01/01/70 00:00 | |
Exactly! | 01/01/70 00:00 | |
Combined Watchdogs | 01/01/70 00:00 | |
External better in another respect | 01/01/70 00:00 | |
I'm using the internal and works well | 01/01/70 00:00 | |
works well - how do you know | 01/01/70 00:00 | |
who should test it? | 01/01/70 00:00 | |
nobody | 01/01/70 00:00 | |
the manufacturer should | 01/01/70 00:00 | |
Design Verification | 01/01/70 00:00 | |
one off![]() | 01/01/70 00:00 | |
The meaning of "well" | 01/01/70 00:00 |