Format of the Fuse Configuration File
A fuse configuration file contains a <genericfuse>
… </genericfuse>
tag pair, which contains one <fuse/>
tag for each fuse to be burned. This template shows the format of the file.
<genericfuse MagicId="0x45535546" version="1.0.0">
<fuse name="<name>" size="<size>" value="<value>"/>
<fuse name="<kdk0>" size="<size>" value="<value>" gen_key=<gen_key>/>
. . .
</genericfuse>
Where:
<name>
is the name of a fuse. Fuse names are documented in the table under Manufacture Programmable Fuses.<size>
is the size of the fuse in bytes.<value>
is the value to be burned into the fuse, with two hexadecimal digits per byte.<gen_key>
is an optional fuse field bit flag that is only applicable to kdk0 fuse. This flag indicates the kdk0 fuse value to be randomly generated on the target. The fuse value shown in the XML is not the final value programmed to the kdk0 fuse and is a placeholder for XML parsing. However, there are constraints on enabling this flag.
MagicID
is used by the FSKP target-binary and must not be changed.
tegraparser_v2
burns fuses in the order that they appear in the fuse configuration file. If two or more fuses' values are interdependent, the independent fuses must be specified before the dependent one so that they are burned first. That is, if the values that may be burned into fuse Z depend on the value of fuse Y, and the values that may be burned into fuse Y depend on the value of fuse X, then the fuse configuration file must specify fuse X first, then Y, then Z, so that tegraparser_v2
burns fuse X first, then Y, then Z.
The FSKP fuse burning tool does not check for dependencies, so specifying a dependent fuse before the fuse it depends on may render the target device inoperable. Check the fuse list's order carefully before you burn the fuses.
A Reference Fuse Configuration File
The DRIVE OS platform provides a fuse configuration file for use as a reference. The file is located here:
<top>/drive-foundation/tools/flashtools/fuseburn
The fuse list for this file is ordered correctly to allow for fuse dependencies.
Some fuse values in the reference configuration file are enclosed in XML comments, as in the following example. To adapt the reference file for use, uncomment them and replace their "0xFFFF…" placeholder values with the actual key index values for your target.
<genericfuse MagicId="0x45535546" version="1.0.0">
<!-- <fuse name="OdmId" size="8"
value="0xFFFFFFFFFFFFFFFF"/> -->
<!-- <fuse name="ReservedOdm0" size="4"
value="0xFFFFFFFF"/> -->
<!-- <fuse name="ReservedOdm1" size="4"
value="0xFFFFFFFF"/> -->
<!-- <fuse name="ReservedOdm2" size="4"
value="0xFFFFFFFF"/> -->
<!-- <fuse name="ReservedOdm3" size="4"
value="0xFFFFFFFF"/> -->
<!-- <fuse name="ReservedOdm4" size="4"
value="0xFFFFFFFF"/> -->
<!-- <fuse name="ReservedOdm5" size="4"
value="0xFFFFFFFF"/> -->
<!-- <fuse name="ReservedOdm6" size="4"
value="0xFFFFFFFF"/> -->
<!-- <fuse name="ReservedOdm7" size="4"
value="0xFFFFFFFF"/> -->
<!-- <fuse name="OdmInfo" size="2" value="0x4000"/> -->
<!-- <fuse name="SecureProvisionInfo" size="4"
value="0x1"/> -->
<!-- <fuse name="PublicKeyHash" size="64"
value="0x00000000111111112222222233333333444444445555555566666666777777778888888899999999aaaaaaaabbbbbbbbccccccccddddddddeeeeeeeeffffffff"/> -->
<!-- <fuse name="BootSecurityInfo" size="4" value="0x1"/> -->
<!-- <fuse name="SecurityMode" size="4" value="0x1"/> -->
</genericfuse>