|
3
Gordon Drive, P.O.Box 1347 Rockland, Maine 04841 U.S.A.
|
|
© 2004 Avocet Systems, Inc.
|
Call
Us Today at 207-596-7766 ("Picton Press")
|
|
Avocet Systems, Inc. : The Complete Solution for Embedded Systems
Development Tools
|
|
|
Embedded Update
An Embedded History - Part 2
Ten issues of the Embedded Update ago we ran a bit of a personal history of
the embedded industry. Response was overwhelmingly favorable, so here's another
installment.
We left our story with the Intellec 8, an 8008-based development system that
used nothing more than an ASR-33 as both "mass storage" (via the paper
tape), and console.
I worked for a company that built grain analyzers - a scanning monochrometer
shined about a thousand frequencies of IR light at a sample of grain - wheat,
barley, and the like. Detectors sampled the reflected IR, amplified it by numerous
orders of magnitude, and digitized the signal before sending it to the 8008-based
controller. The first computerized version had a 4k program - unbelievably tiny
by today's standards, huge by those of the day. It took 16 ROMs (1702s, the
only game in town at the time, had a whopping 256 byte capacity) to store the
4k of code. No kidding.
Even with the dawn of the microprocessor age our code was as riddled with bugs
as today - probably more so. The problems were much more tractable back then,
as the limited address space and exclusive use of assembly language eliminated
any possibility of building really complex systems, though we did have to implement
all calculations in floating point, and even ran a least squares regression
to calibrate the system, all within that 4k.
For debugging purposes, we cabled the Intellec 8's bus back to our own computer's
backplane, and let the Intellec's CPU take charge of our peripherals. We edited,
assembled, and linked on that Intellec, and then loaded and debugged the code.
Building a program was a nightmare, though in those days having exclusive access
to ANY computer seemed pretty magic. Load the editor paper tape. Enter and edit
the program. Punch a tape of the source program (all assembly, of course). Load
the assembler tape. The assembler was a three pass nightmare - you had to run
the source tape through three times before it spit out a binary tape. Then,
load the linker and each binary tape.
The 4k program required 3 days to assemble and link. Three days. Needless to
say, one reassembled only rarely.
The Intellec had a simple monitor (much like a scaled down version of the PC's
DEBUG utility) that let you set two software breakpoints. We'd load the binary
and debug, making changes to the machine code with each bug fix. The monitor
didn't have a mini-assembler, so we quickly learned all of the machine codes
for the 8008's instruction set - not much of a feat when you consider how limited
that set was.
Sometimes we could patch right on top of the code. When the change was too big,
we'd patch a jump to a "patch area", and hand assemble new code in
there. With each change we'd make a careful record on the source listings.
After a day of debugging, we'd have lots of changes (hey - we were kids at the
time, with no concept of software engineering!). We'd punch a tape of the current
memory image and go home, reloading it the next day to pick up from the same
spot. Only infrequently would we edit in changes and go through the pain of
a total reassembly.
Development was incredibly slow. Every aspect of the process was buggy. At the
time even Intel didn't understand how to program 1702s, so they'd frequently
drop bits. We spent months perfecting the algorithm in concert with them.
Despite the troubles things worked, and we delivered product - hundreds of units
over a couple of years. Time moved on and we later used better processors and
algorithms; people left the company, replaced with others not familiar with
the older products.
The original units used an iterative regression, which, if it didn't converge
within 20 minutes, displayed "HELP" in the seven segment LEDs. I'll
never forget some years later a technician came in, ashen faced, and told me
"I've been trying to repair this ancient unit, and after I fiddled with
it for a while it started displaying a panicked HELP message!"
|
|
|