BCT, boot.img warmboot.bin Explanation

Hi,
For Jetpack 4.2, I’ve recently required to modify the pinmux to get SPI3 working again and was trying to understand this part of the build process.

From

https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-322/

I understand that the file I modify : tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg, is part of the Boot Configuration Table (BCT), which becomes part of the MB1 (microboot) bootloader component. Looking at the flash output the cfg gets processed during the call to flash.

I’d like to know if these end up part of an output binary file, or do they get copied as some other file during the flash.

The flash output reports “Sending bct_bootrom” and “Sending bct_mb1”. It would be useful for me to know which fies are actually transmitted.

Also, I noticed during the flash process, boot.img and warmboot.bin files get created. It would be good to understand what these are and how these get created.

There is a lot of great information in the aforementioned document however I am just trying to complete the picture.

Thanks

hello marc.armstrong,

you may also refer to Jetson TX2 Boot Flow chapter.

  1. Boot Configuration Table (BCT) contains timing parameters to initialize and configure SDRAM and eMMC for booting. Jetson-TX2 is enhanced to add MB1-BCT. it contains platform-specific data. This BCT is created when flashing the image using TegraFlash.
  2. warmboot.bin is locate at sc7 partition, which is used to resume the board.
  3. you could consider boot.img as kernel image. there’s mkbootimg binary file kick-in during flashing process to make it as $OUT/kernel/Image for writing kernel partition.
    thanks

Hi JerryChang,

Thanks for your response. This is very useful.

Just to clarify…

Is there an actual BCT file which gets created during the flash? I couldn’t find any.
How does warmboot get created? i.e. what are the source files?

The main reason I ask is that I need to create a minimal, file structure for our production guys to flash TX2 modules with images including our own modifications, e.g. kernel drivers, device tree and pinmux changes and so need to know all relevant input and output files. I suppose the /bootloader and /kernel folders are all that I need, given that we will reuse a pre-built system image, however it is useful for me to understand as much as possible the full flash process.

Thanks

hello marc.armstrong,

  1. there’s pre-built warmboot binary including into root file system, we also don’t public release the sources for reference.

  2. please refer to below for the default configuration,
    $OUT/Linux_for_Tegra/bootloader/P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg

you should also go through the whole flashing messages, you’ll also see there’re several related files for reference.
for example,

[   2.2767 ] Generating br-bct
[   2.2785 ] Updating dev and MSS params in BR BCT
[   2.2787 ] tegrabct_v2 --dev_param emmc.cfg --sdram P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg --brbct br_bct.cfg --chip 0x18 0
  1. you might also refer to below xml file for default partition layouts
    $OUT/Linux_for_Tegra/bootloader/t186ref/cfg/flash_l4t_t186.xml