# Patent

## Title
Configuring a data storage device with a parameter file interlocked with configuration code

## Abstract

A method is disclosed for configuring a data storage device. Configuration data records of a parameter file are compared to configuration execution records of an executable file, wherein the configuration execution records for configuring at least one configuration file of a data storage device. If the configuration data records interlock with the configuration execution records, the configuration file is modified and the modified configuration file is stored to the data storage device. The method may be performed by a computer external to the data storage device, or by control circuitry internal to the data storage device, or a combination of both.

## Background
BACKGROUND
Description of the Related Art
When manufacturing data storage devices, such as disk drives, each data storage device is typically configured according to the specifications of each individual customer (e.g., each PC manufacturer). For example, certain features may be enabled or disabled, or the disk drive may be configured to operate in various modes of operation, such as different security modes, different performance/acoustic modes, etc. Configuring the disk drive typically involves modifying configuration files stored in the disk drive. When a disk drive is powered on, the control circuitry reads the configuration files and configures itself accordingly.
In the past, a feature specification engineer has typically maintained a feature spreadsheet that specifies the features requested for each customer. From the feature spreadsheet a firmware engineer generates executable code for implementing each feature, wherein the executable code reads appropriate data from configuration files. For each customer, a configuration engineer typically creates a corresponding configuration spreadsheet that specifies how to initialize the configuration files to be stored on each disk drive. When a newly manufactured disk drive is powered on, the executable code reads the configuration files and configures the disk drive accordingly.
The above process is subject to human error since the configuration engineer may make input errors when generating the configuration spreadsheet such that the configuration spreadsheet is not compatible with the executable code. In addition, operator error may occur when the feature spreadsheet is modified and the modification does not propagate correctly to the configuration spreadsheet. If the configuration spreadsheet and corresponding configuration files are incorrect, it may lead to the recall of thousands of misconfigured disk drives.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates a method according to an embodiment of the present invention for configuring a data storage device, such as a disk drive, by comparing configuration data records of a parameter file to configuration execution records of an executable file.
FIG. 2 illustrates an embodiment of the present invention wherein a graphical user interface is employed to generate the configuration data records.
FIG. 3A shows a configuration data structure according to an embodiment of the present invention.
FIG. 3B shows a configuration execution record according to an embodiment of the present invention.
FIGS. 4A and 4B show example configuration execution records in the form of a table in a “.h” file.
FIG. 5 is a flow diagram according to an embodiment of the present invention wherein the configuration execution records are integrated with firmware and then interlock checked with configuration data records prior to loading the firmware and configuration data records to the disk drive.
FIG. 6 shows an embodiment of the present invention wherein a configuration data file stores a plurality of configuration data record sets each corresponding to a particular configuration for the disk drive.
FIG. 7A is a flow diagram according to an embodiment of the present invention wherein the control circuitry within the disk drive performs an interlock check on a selected configuration data record set.
FIG. 7B is a flow diagram according to an embodiment of the present invention wherein the control circuitry within the disk drive checks configuration rules for a selected configuration data record set.
FIG. 8 shows a disk drive according to an embodiment of the present invention comprising a disk, a head actuated over the disk, and control circuitry for configuring the disk drive.



DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION
FIG. 1 illustrates a method of configuring a data storage device, such as a disk drive. Configuration data records of a parameter file 2 are compared (step 4) to configuration execution records of an executable file 6, wherein the configuration execution records for configuring at least one configuration file of a disk drive. If the configuration data records interlock with the configuration execution records, the configuration file is modified (step 8) and the modified configuration file is stored to the disk drive (step 10). The method may be performed by a computer external to the disk drive, or by control circuitry internal to the disk drive, or a combination of both. Also, although a disk drive is discussed for illustrative purposes, embodiments of the present invention may include other data storage devices, such as solid state drives, flash memory, optical data storage devices (e.g., CD-ROM), etc.
In the embodiment of FIG. 1, the parameter file 2 may be referred to as a 0x115 file and the executable file 6 may be referred to as a 0x118 file. Also in the embodiment of FIG. 1, the configuration data records may be generated using a graphical user interface (GUI) (step 12). The resulting 0x115 file is evaluated by firmware design engineers who implement the corresponding 0x118 file that will configure the disk drive. In an embodiment described below with reference to FIGS. 4A and 4B, the 0x118 file is implemented as a “.h” file which is interpreted in order to configure the disk drive as specified by a 0x115 file generated using the GUI (step 12).
FIG. 2 shows an example GUI for generating the configuration data records (0x115 records) of the parameter file (0x115 file). In the example shown, there are a number of configurable features, wherein each feature may have one or more parameters. Each parameter may be one of a plurality of types, such as a Boolean type, a value type, an enumerated type, or a string type. The GUI may display the configuration settings for a number of different configurations, for example, for a number of different customers (e.g., PC manufacturers). In one embodiment, the GUI protects against invalid user input. For example, the GUI may provide only two possible values for a Boolean type (true or false), or the GUI may limit the possible settings for a value type. Similarly, an enumerated type may be restricted to only the values that may be selected from a drop-down menu as illustrated in FIG. 2. A string value (e.g., the firmware version parameter) may be limited by a minimum and/or maximum number of characters for the string.
FIG. 3A shows an example format for a configuration data record (a 0x115 record), and FIG. 3B shows an example format for a configuration execution record (a 0x118 record). The 0x115 record comprises a signature field which stores a special value that demarks the beginning of the record within the 0x115 file. The feature ID identifies the feature number, and the parameter ID identifies the parameter number. The parameter type may be any suitable value (e.g., Boolean, value, enumerated, string, etc.), and the parameter length specifies the byte length of the parameter value. The length of the parameter value may vary, for example, if the parameter type is string. Since the parameter value has a variable length, the signature field identifies the beginning of each 0x115 record in the 0x115 file.
In one embodiment, the common fields between a 0x115 record are compared to the 0x118 records in order to determine whether the 0x115 record interlocks with one of the 0x118 records. The parameter value of the 0x115 record may also be compared to a feature_enabled field of the 0x118 record. In one embodiment, there must be a match between all of the interlock fields in order to find an interlocking record. If an interlock is found, the remaining fields of the 0x118 record specify how to modify the configuration file of the disk drive in order to implement the requested configuration. In the example of FIG. 3B, the fields of a 0x118 record include an actual length field which specifies the actual length (bits or bytes) to modify in the configuration file. A file section field, file offset field, and bit number field specify the exact location within the configuration file to modify. In addition, certain 0x115 records may correspond to multiple 0x118 records that modify multiple settings of a configuration file (e.g., multiple bits). In this embodiment, the 0x118 records further include a settings_per_feature field and a setting_no field which specify the total number of settings and the setting number being configured for a particular 0x118 record.
The 0x118 records may be implemented in any suitable manner, and in an embodiment illustrated in FIGS. 4A and 4B, the 0x118 records are implemented as a table defined in a “.h” file. The first four entries in the table of FIG. 4A correspond to an ATA security setting. The feature ID is one, the parameter ID is one, and the type is Boolean indicating the ATA security feature is either enabled or disabled. The feature_enabled field specifies either “ENABLE” or “DISABLE”, followed by three fields which specify the location within the configuration file to modify. In this example, there are two bits that are configured (set or reset) and therefore there are two corresponding table entries. When a 0x115 record is received to configure this feature, all of the corresponding fields must match, including whether to ENABLE or DISABLE the feature. When a match is found, the configuration file is modified as specified by the two table entries of the matching 0x118 record.
The second feature in FIG. 4A corresponds to an offline scan of the disk drive. This feature has a first Boolean parameter to enable/disable the feature, and a second value parameter (a timer) that specifies how long the disk drive must remain idle before beginning (or continuing) the offline scan. Since the timer is of type value, the expected_value field of the 0x118 record is set to UNRELATED since there is no expected value. The bit_number field of the 0x118 record is also set to UNRELATED since the value modifies one or more bytes.
FIG. 4B illustrates an enumerated parameter (the second parameter of the AAM feature) wherein there are three possible values for the enumerated value (see the example of FIG. 2). For each of the three possible values, a byte in the configuration file is modified with a particular bit pattern. In other words, the byte in the configuration file can only take on three possible values as defined by the 0x118 record, and these three values correspond to the only possible selections provided in the drop-down menu of the GUI in FIG. 2. When a match between a 0x115 record and the 0x118 record is found, there will be a match of all seven table entries shown in FIG. 4B, and therefore all seven table entries will be processed in order to configure the corresponding byte of the configuration file. The last feature in FIG. 4B corresponds to a firmware version which comprises a Boolean parameter indicating whether the feature is enabled, and a string value for specifying the version number (see FIG. 2). Similar to a value type, with a string type the expected_value of the corresponding 0x118 record is set to UNRELATED since there is no expected value for a string type.
FIG. 5 is a flow diagram according to an embodiment of the present invention wherein when generating a new firmware version that is to be downloaded into a disk drive, a 0x115 file and a 0x118 file is selected (step 16). For example, an engineer may select from a database an executable file that includes a 0x118 file, and then select from the database a 0x115 file. The 0x115 records of the 0x115 file are then compared to the 0x118 records of the 0x118 file to ensure that all of the 0x115 records interlock with a corresponding 0x118 record (step 18). If not, an error is generated and the firmware is not downloaded into the disk drive. Otherwise, the firmware (including the 0x115 and 0x118 files) are downloaded into the disk drive (step 20).
FIG. 6 shows an embodiment of the present invention wherein the 0x115 file comprises a plurality of 0x115 record sets 220-22N, wherein each 0x115 record set 22i corresponds to a particular configuration (e.g., for a particular customer). A configuration code 24 is received by the disk drive which indexes a header structure 26 that is used to select the corresponding 0x115 record set. This embodiment enables a single firmware version (including 0x115 file and 0x118 file) to be downloaded into a disk drive, and then to configure the disk drive into a desired state. For example, the disk drive may be configured into various states in order to perform various manufacturing test procedures, and then configured into a final state corresponding to a particular customer (e.g., a PC manufacturers).
FIG. 7A shows a flow diagram according to an embodiment of the present invention wherein when configuring a disk drive, a configuration code is received by the disk drive (step 28) and a corresponding 0x115 record set is selected from the 0x115 file (step 30). The 0x115 records are then compared to the 0x118 records (step 32) and if a match is found (interlock) for all of the 0x115 records (step 34), then the configuration file (or files) corresponding to the matching 0x118 records are read (step 36), modified using the matching 0x118 records (step 38), and then stored back to the disk drive (step 40). The configuration files may be stored in any suitable manner, such as in a non-volatile semiconductor memory (e.g., a flash memory), and one or more of the configuration files may also be stored on the disk of the disk drive.
FIG. 7B is a flow diagram which expands on the flow diagram of FIG. 7A, wherein after modifying the configuration files (step 38), a number of configuration rules are checked (step 42) in order to verify the validity of the configuration. Any suitable configuration rule may be checked, such as a dependency check wherein a first parameter may be set to a selected value only if one or more other parameters are set to predetermined values. In another embodiment, the configuration rules comprise an exclusivity check wherein if a first parameter is enabled, one or more other parameters must be disabled. Yet another configuration rule may comprise a range check wherein a parameter value must fall within a predetermined range. The configuration rules checked at step 42 may comprise any combination of dependency, exclusivity, and range checking rules.
FIG. 8 shows a disk drive according to an embodiment of the present invention comprising a disk 46, a head 48 actuated over the disk 46, and control circuitry 50 operable to communicate with a host. The control circuitry is further operable to configure the disk drive by comparing configuration data records (0x115 records) of a parameter file to configuration execution records (0x118 records) of an executable file, wherein the configuration execution records for configuring at least one configuration file of a disk drive. If the configuration data records interlock with the configuration execution records, the control circuitry 50 modifies the configuration file and stores the modified configuration file to the disk drive.
Any suitable control circuitry may be employed to implement the flow diagrams in the embodiments of the present invention, such as any suitable integrated circuit or circuits. For example, the control circuitry may be implemented within a read channel integrated circuit, or in a component separate from the read channel, such as a disk controller, or certain steps described above may be performed by a read channel and others by a disk controller. In one embodiment, the read channel and disk controller are implemented as separate integrated circuits, and in an alternative embodiment they are fabricated into a single integrated circuit or system on a chip (SOC). In addition, the control circuitry may include a suitable preamp circuit implemented as a separate integrated circuit, integrated into the read channel or disk controller circuit, or integrated into an SOC.
In one embodiment, the control circuitry comprises a microprocessor executing instructions, the instructions being operable to cause the microprocessor to perform the steps of the flow diagrams described herein. The instructions may be stored in any computer-readable medium. In one embodiment, they may be stored on a non-volatile semiconductor memory external to the microprocessor, or integrated with the microprocessor in a SOC. In another embodiment, the instructions are stored on the disk and read into a volatile semiconductor memory when the disk drive is powered on. In yet another embodiment, the control circuitry comprises suitable logic circuitry, such as state machine circuitry.

## Claims

1. A method of configuring a data storage device comprising:
comparing configuration data records of a parameter file to configuration execution records of an executable file, wherein the configuration execution records are for configuring at least one configuration file of the data storage device; and
when the configuration data records interlock with the configuration execution records, modifying the configuration file and storing the modified configuration file to the data storage device,
wherein:
the configuration data records comprise a first plurality of fields;
the configuration execution records comprise a second plurality of fields; and
a configuration data record interlocks with a configuration execution record when at least one field value of the configuration data record matches at least one field value of the configuration execution record.

2. The method as recited in claim 1, wherein the matching field value specifies a feature.

3. The method as recited in claim 2, wherein the matching field value specifies a parameter of the feature.

4. The method as recited in claim 1, wherein the matching field value specifies a parameter type.

5. The method as recited in claim 1, wherein the matching field value specifies a parameter length.

6. The method as recited in claim 1, wherein the matching field value specifies a parameter value.

7. The method as recited in claim 1, further comprising checking at least one configuration rule for the configuration data records.

8. The method as recited in claim 1, wherein a host computer connected to the data storage device compares the configuration data records of the parameter file to the configuration execution records of the executable file.

9. The method as recited in claim 1, wherein control circuitry within the data storage device compares the configuration data records of the parameter file to the configuration execution records of the executable file.

10. A data storage device comprising control circuitry operable to:
compare configuration data records of a parameter file to configuration execution records of an executable file, wherein the configuration execution records for configuring at least one configuration file of the data storage device; and
when the configuration data records interlock with the configuration execution records, modify the configuration file,
wherein:
the configuration data records comprise a first plurality of fields;
the configuration execution records comprise a second plurality of fields; and
a configuration data record interlocks with a configuration execution record when at least one field value of the configuration data record matches at least one field value of the configuration execution record.

11. The data storage device as recited in claim 10, wherein the matching field value specifies a feature.

12. The data storage device as recited in claim 11, wherein the matching field value specifies a parameter of the feature.

13. The data storage device as recited in claim 10, wherein the matching field value specifies a parameter type.

14. The data storage device as recited in claim 10, wherein the matching field value specifies a parameter length.

15. The data storage device as recited in claim 10, wherein the matching field value specifies a parameter value.

16. The data storage device as recited in claim 10, wherein the control circuitry is further operable to check at least one configuration rule for the configuration data records.

17. The data storage device as recited in claim 16, wherein the configuration rule comprises a dependency check.

18. The data storage device as recited in claim 16, wherein the configuration rule comprises an exclusivity check.

19. The data storage device as recited in claim 16, wherein the configuration rule comprises a range check.

20. The data storage device as recited in claim 10, further comprising:
a disk; and
a head actuated over the disk.

21. A computer program embodied on a non-transitory computer readable medium, the computer program comprising code segments for configuring a data storage device by:
comparing configuration data records of a parameter file to configuration execution records of an executable file, wherein the configuration execution records for configuring at least one configuration file of the data storage device; and
when the configuration data records interlock with the configuration execution records, modifying the configuration file and storing the modified configuration file to the data storage device;
wherein:
the configuration data records comprise a first plurality of fields;
the configuration execution records comprise a second plurality of fields; and
a configuration data record interlocks with a configuration execution record when at least one field value of the configuration data record matches at least one field value of the configuration execution record.