Bootloader redundancy failure and document inconsistency

Hi,

I am trying to modify the partition table on a TX1 in order to implement bootloader redundancy. According to the document ‘Runtime Boot Loader Update Process for Jetson TX1’ I need to modify the file gnu_linux_tegraboot_emmc_full.xml . Initially I tried to use the sample configuration described in that document, adjusting the size of the partitions to match my binaries but failed. Then I tried to use a single bootloader partition, similar to how the SDK is right now but with different partition sequence and sizes. Again failed to flash the SDK.

The partition names are somewhat different but they seem to get translated when you try and flash the module. So there is analogy between the file and the document. I had no problems with that. I actually verified the generated file. The failures I had were associated with either:

  1. There is a partition within the configuration file called PPT which is not described anywhere. Partitions placed before it in the configuration file seem to be ignored and return errors if placed there (except BCT).
  2. Changing for example the size of partition TBC (TXC in the configuration file) to anything less than 2097152 is unacceptable. In fact partition sizes less that 2097152 are unacceptable. I have checked the size of the binary files that correspond to the partitions I tried to modify and they are fine. The partition sizes I tried to use were well over the size of the corresponding files.

I am trying to figure our the structure that needs to go into gnu_linux_tegraboot_emmc_full.xml so that (initially) I have the same partitions as with the standard configuration but with smaller sizes (that match the size of the corresponding binaries) and with the sequence described in that document under the section ‘Moving the BFS to the Boot Partitions’ step #5. Hence I would like some answers on the following questions:

  1. What do i need to modify within gnu_linux_tegraboot_emmc_full.xml (or elsewhere) so that I can have partition sizes under 2097152
  2. I need more information regarding the partition found within gnu_linux_tegraboot_emmc_full.xml labeled PPT. How to treat it, where to put it, etc.
  3. In the document, under the sample partition list, there is a partition labeled PT. Is it the same as PPT and if not, do I need to include it in the configuration file as described in the document i.e. have PT-1, PT-2, PT-3 in case of bootloader redundancy.

Thanks in advance

Joe

hello piperak,

we’re going to take a look and then get back to you.

hello piperak,

we had tested bootloader redundancy on TX1 and it was passing.
since you had enabling bootloader redundancy, please modify the configuration file to commenting out the BOOTPARTSIZE=xxx before flashing. i’ve try to reduce the TXC partition size and this is workable.
regarding to PPT, it’s Primary GPT output. thanks

Hi JerryChang,

thanks for your response but I have tried that and it does not work. Perhaps I did not make myself clear. I have removed the BOOTPARTSIZE from the conf file, just like the manual says. When I modified the existing gnu_linux_tegraboot_emmc_full.xml file I was able to reduce the size of the BCT, NVC and other partitions. But if I try to change their order I cannot. I will post two gnu_linux_tegraboot_emmc_full.xml files at the end of this post. The first one works, the second one does not. Perhaps this is a better way of figuring out what am I doing wrong. But I need an answer on the following two questions:

  1. The manual refers to a partition PT (PT, PT-1 etc). This partition needs a file called flash.bin. That file cannot be found within the installation files. All the other files required by the example config file are there, but not that one. Is this partition necessary for bootloader redundancy and if yes where can I find flash.bin or how can I generate it.
  2. The gnu_linux_tegraboot_emmc_full.xml generated by the jetpack installer has a partition called PPT. That partition is not within the example configuration file (described in the manual). Is it required for bootloader redundancy? Do I need to have several like PPTs, PPT-1, etc. How does its size effect the partition map.

If you can’t answer these two questions would it be possible to provide me with a gnu_linux_tegraboot_emmc_full.xml that can be used to enable bootloader redundancy that works with 24.2.1. The one in the manual does not work (it is 24.2). I have tried it as is and I have BOOTPARTSIZE commented out. If I hadn’t commented it out, the following file would not work but it does:

<?xml version="1.0"?>

<partition_layout version=“01.00.0000”>


<allocation_policy> sequential </allocation_policy>
<filesystem_type> basic </filesystem_type>
1048576
<file_system_attribute> 0 </file_system_attribute>
<allocation_attribute> 8 </allocation_attribute>
<percent_reserved> 0 </percent_reserved>

    <partition name="NXC" id="3" type="NVCTYPE">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 188416 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> NVCFILE </filename>
    </partition>

    <partition name="PPT" id="4" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> PPTSIZE </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
    </partition>

    <partition name="GP1" id="5" type="GP1">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 2097152 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
    </partition>

    <partition name="APP" id="6" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> APPSIZE </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 0x8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> APPFILE </filename>
    </partition>

    <partition name="TXC" id="7" type="TBCTYPE">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 2097152 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> TBCFILE </filename>
    </partition>

    <partition name="EBT" id="8" type="bootloader">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 4194304 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> EBTFILE </filename>
    </partition>

    <partition name="BXF" id="9" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 2097152 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <partition_attribute> 0 </partition_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> BPFFILE </filename>
    </partition>

    <partition name="WX0" id="10" type="WB0TYPE">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 6291456 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> WB0FILE </filename>
    </partition>

    <partition name="RP1" id="11" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 4194304 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 0x8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> DTBFILE </filename>
    </partition>

    <partition name="TXS" id="12" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 6291456 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <partition_attribute> 0 </partition_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> TOSFILE </filename>
    </partition>

    <partition name="EXS" id="13" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 2097152 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <partition_attribute> 0 </partition_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> EKSFILE </filename>
    </partition>

    <partition name="FX" id="14" type="FBTYPE">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 2097152 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 0x8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> FBFILE </filename>
    </partition>

    <partition name="SOS" id="15" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 20971520 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 0x8 </allocation_attribute>
        <filename> SOSFILE </filename>
    </partition>

    <partition name="EXI" id="16" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> EFISIZE </size>
        <file_system_attribute> 0 </file_system_attribute>
        <partition_attribute> 0 </partition_attribute>
        <allocation_attribute> 0x8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> EFIFILE </filename>
    </partition>

    <partition name="LNX" id="17" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 67108864 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 0x8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> LNXFILE </filename>
    </partition>

    <partition name="DXB" id="18" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 4194304 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 0x8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> DTBFILE </filename>
    </partition>

    <partition name="NXT" id="19" type="NCTTYPE">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 2097152 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 0x8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> NCTFILE </filename>
    </partition>

    <partition name="MXB" id="20" type="MPBTYPE">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 6291456 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <partition_attribute> 0 </partition_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> MPBFILE </filename>
    </partition>

    <partition name="MXP" id="21" type="MBPTYPE">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 6291456 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <partition_attribute> 0 </partition_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> MBPFILE </filename>
    </partition>

    <partition name="USP" id="22" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 2097152 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 0x8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
    </partition>

    <partition name="UDA" id="23" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 2097152 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 0x808 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
    </partition>

    <partition name="GPT" id="24" type="GPT">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 0xFFFFFFFFFFFFFFFF </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
    </partition>
</device>

</partition_layout>

The next one does not work. I have tried to replicate the partition sequence as described in the manual but I have skipped the PT partition as I can not find flash.bin :

<?xml version="1.0"?>

<partition_layout version=“01.00.0000”>


<allocation_policy> sequential </allocation_policy>
<filesystem_type> basic </filesystem_type>
1048576
<file_system_attribute> 0 </file_system_attribute>
<allocation_attribute> 8 </allocation_attribute>
<percent_reserved> 0 </percent_reserved>

    <partition name="PPT" id="3" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> PPTSIZE </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
    </partition>
    
    <partition name="NXC" id="4" type="NVCTYPE">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 188416 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> NVCFILE </filename>
    </partition>
    
    <partition name="TXC" id="5" type="TBCTYPE">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 86016 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> TBCFILE </filename>
    </partition>

    <partition name="RP1" id="6" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 516096 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 0x8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> DTBFILE </filename>
    </partition>

    <partition name="DXB" id="7" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 516096 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 0x8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> DTBFILE </filename>
    </partition>
    
    <partition name="EBT" id="8" type="bootloader">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 516096 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> EBTFILE </filename>
    </partition>
    
    <partition name="WX0" id="9" type="WB0TYPE">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 4096 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> WB0FILE </filename>
    </partition>

    <partition name="BXF" id="10" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 69632 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <partition_attribute> 0 </partition_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> BPFFILE </filename>
    </partition>

    <partition name="TXS" id="11" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 86016 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <partition_attribute> 0 </partition_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> TOSFILE </filename>
    </partition>
                   
    <partition name="GP1" id="12" type="GP1">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 2097152 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
    </partition>

    <partition name="APP" id="13" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> APPSIZE </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 0x8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> APPFILE </filename>
    </partition>

    <partition name="EXS" id="14" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 2097152 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <partition_attribute> 0 </partition_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> EKSFILE </filename>
    </partition>

    <partition name="FX" id="15" type="FBTYPE">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 2097152 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 0x8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> FBFILE </filename>
    </partition>

    <partition name="SOS" id="16" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 20971520 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 0x8 </allocation_attribute>
        <filename> SOSFILE </filename>
    </partition>

    <partition name="EXI" id="17" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> EFISIZE </size>
        <file_system_attribute> 0 </file_system_attribute>
        <partition_attribute> 0 </partition_attribute>
        <allocation_attribute> 0x8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> EFIFILE </filename>
    </partition>

    <partition name="LNX" id="18" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 67108864 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 0x8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> LNXFILE </filename>
    </partition>


    <partition name="NXT" id="19" type="NCTTYPE">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 2097152 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 0x8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> NCTFILE </filename>
    </partition>

    <partition name="MXB" id="20" type="MPBTYPE">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 6291456 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <partition_attribute> 0 </partition_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> MPBFILE </filename>
    </partition>

    <partition name="MXP" id="21" type="MBPTYPE">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 6291456 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <partition_attribute> 0 </partition_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> MBPFILE </filename>
    </partition>

    <partition name="USP" id="22" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 2097152 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 0x8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
    </partition>

    <partition name="UDA" id="23" type="data">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 2097152 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 0x808 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
    </partition>

    <partition name="GPT" id="24" type="GPT">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 0xFFFFFFFFFFFFFFFF </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
    </partition>
</device>

</partition_layout>

Thanks again.

hello piperak,

may i know what’s your purpose about changing the partition orders?
according to the document, you should ensure these orders was following the rules.

To modify the partition table
2. Verify that each bootfileset is defined immediately after each NVC partition, and that
the PT partition is the first within each bootfileset…

Hi, JerryChang,

What I want to build is a bootloader with two BFSs for redundancy. The biggest problem I have is that I cannot use the example configuration as I cannot setup a PT partition since that partition requires a file called flash.bin. Since I can’t find it I cannot use the example. So I cannot do the step (2) that you mention. And then is the issue of the PPT partition which exists in the configuration file of the bootloader that comes by default with the TX1. If I could figure out how to generate the flash.bin then I could use the example configuration as is. Can you help me with that. Thanks again.

hello piperak,

flash.bin is an nvidia specific partition table which is auto-generated by tegraflash to flashed and removed.
hence, you should not worry about that if you’re using “flash.sh”. thanks

Hi JerryChang,

I figured out what was wrong with my configuration file. I had increased the size of certain partitions, such as the EBT and the DTB, because the size of the SDK supplied .dtb file was bigger than the size in the sample configuration file. Unfortunately, the total size of each BFS was bigger than the specified limit. Once I reduced the size of the partitions it worked.

One final question. The size of the flash is specified in the conf file as 31276924928. I tried to use two app partitions of 14Gb each but it did not work. However, when I reduced the size of the two partitions to 7Gb each (I changed ROOTFSSIZE to 7Gb also) it worked. Is there a way to take advantage of all the 30Gb of the flash device? Do I need to change anything within the flash script? Thanks again.

If you are using a TX1 then the entire eMMC combined is 16GB. You’d need a TX2 for a 30GB flash.