M.I.5¾ said:
If you have an old, but working, redundant drive that you no longer have a
use for, take the cover off the hard drive part. Now if you power it up,
you can watch the read/write head reading the 'firmware' off the drive
platters before the drive is available for use. If you put a 'scope on the
output of the sense amplifier (assuming you can find it) you can see the
code being read.
We can't really answer the question with any certainty, if the docs
for the chips aren't available for public consumption. I took the
nine digit number off my hard drive microcontroller chip, and that
didn't dig up any docs. A site called hddworld had a variety of
nine digit number chips listed. I also found some web sites dealing
in left over inventory, who seemed to have some of them. If they were
custom ROM masks, they shouldn't have escaped into the hands of jobbers.
It could be, that these are mask ROM chips. Could be. There is no
way to know for sure, unless ST.com (SGS Thompson) admits to making them in
some way.
A 64KB EEPROM would be big enough to hold a bootstrap code.
Or a bootstrap could be held inside the microcontroller, in
mask ROM (where only the top mask need be applied to establish
a bit pattern, when manufacturing them). I don't see an easy way
to prove this one way or another, due to the lack of public
documentation.
So what can I say ?
1) I'll assume there is a general purpose micro inside the
controller chip. This gives maximum flexibility in any case.
There is no benefit to making the thing entirely hard wired
logic, especially as the ATA command set is complex, and
a programmable device gives the flexibility needed to interpret
those commands.
2) A microcontroller cannot run without *some* code. The code
cannot be fetched entirely from the platter. The microcontroller
doesn't know how to program the motor controller IC, to start
accelerating the platter. So some code is needed prior to
reading the first byte off the platter.
3) At least some initial code ("bootstrap" code) should be stored
on the PCB. On one of my broken hard drives, where the heads were
gone, the microcontroller reported a hard drive model of "Falcon"
and said my drive was "10GB". In fact the drive had a proper model
number (a Maxtor drive), and the capacity was 40GB. So the PCB
itself was responsible for reporting "Falcon" and "10GB".
That to me suggests that some code is stored on the PCB. In terms
of technology choices, mask ROM inside the chip could be used
to store an initial program. Or, an SPI chip (similar to those
used on the newest motherboards), could be used. But without
some docs, I don't see a way to say definitely how it is done.
(Picture of one of those 9 digit ST chips.)
http://www.techarp.com/showarticle.aspx?artno=302&pgno=3
(An instance of Maxtor and "Falcon". Sure, this says code is stored
in the system area. I don't argue that it isn't possible. But something
must be used to prepare the microcontroller to be able to read the
system area, and that means bootstrap code on the controller board
itself.) And 64K is enough to do that.
http://www.easyrecovery.ie/datarecovery/hdd/maxtor/40GB+ATA+133+HDD.html
If the 64KB device was used for parameter storage
1) It is a slow part, with a serial interface. If you were storing
parameters in it, you might not have power long enough to finish.
2) If it has 100K cycle write rating, and the disk has a minimum
50000 start/stop cycle rating, you run the risk of wearing it
out, if it is written each time the drive was powered. The industry
boiler plate rating is 50000 cycles, meaning most drives can
complete more cycles than that.
It makes more sense for it to hold code, or relatively static
parameters. Things like bad blocks, make more sense to hold in
the system area (track -1).
Paul