5.3. Boot App

Boot App is a tertiary bootloader which is booted by the SBL. It runs on mcu1_0, from mcu1_0 it boots other cores in different stages. It can boot high level OS like Linux or QNX on A72 cores via MMCSD or OSPI. This is supported on HS devices as well.

5.3.1. Boot stages

This application boots the main domain cores. In default boot sequence there are 3 stages. It can RTOS in all the three stages or RTOS in the stage1, stage2 and high level OS like QNX, Linux in the stage3. The specification of the cores to be included in each stage is given by the arrays “boot_order_first_stage”, “boot_order_second_stage” and “boot_order_three_stage” found in <PDK>/packages/ti/boot/sbl/example/boot_app/soc/$SOC/boot_core_defs.c

5.3.2. Steps to Boot Different OS via Different Boot Media

  1. Booting lateapps via MMCSD

  2. Booting QNX via MMCSD

  3. Booting Linux via MMCSD

  4. Booting lateapps via OSPI

  5. Booting QNX via OSPI

  6. Booting Linux via OSPI

    Booting lateapps via MMCSD

    1. Generate lateapps by using the following commands

      • goto <PDK>/packages/ti/boot/sbl/example/boot_app/scripts

      • Run ./make_multicore_appimages.sh <board_name>

      • Multicore images(lateapps) will be generated in <PDK>/packages/ti/boot/sbl/example/boot_app/multicore_images/$BOARD/.

      • Stage1 image corresponds to lateapp1, stage2 image corresponds to lateapp2 and stage3 image corresponds to lateapp3.

    2. Copy sbl_mmcsd_img_mcu1_0_release.tiimage as tiboot3.bin to the boot partition of SD card

    3. Copy tifs.bin to the boot partition of SD card

    4. Build boot_app_mmcsd by using the following command

      • make BOARD=<board_name> CORE=mcu1_0 boot_app_mmcsd -sj

    5. Copy sbl_boot_app_mmcsd_<board_name>_mcu1_0_freertos_TestApp_release.appimage image as app to the boot partition of SD card

    6. Copy stage1 image as lateapp1, stage2 image as lateapp2 and stage3 image as lateapp3 to the boot partition of SD card

    Booting QNX via MMCSD

    1. Generate lateapps by using the following commands

      • goto <PDK>/packages/ti/boot/sbl/example/boot_app/scripts

      • Run ./make_multicore_appimages.sh <board_name>

      • Multicore images(lateapps) will be generated in <PDK>/packages/ti/boot/sbl/example/boot_app/multicore_images/$BOARD/.

      • Stage1 image corresponds to lateapp1, stage2 image corresponds to lateapp2 and stage3 image corresponds to lateapp3.

    2. Copy sbl_mmcsd_img_mcu1_0_release.tiimage as tiboot3.bin to the boot partition of SD card

    3. Copy tifs.bin to the boot partition of SD card

    4. Build boot_app_mmcsd by using the following command

      • make BOARD=<board_name> CORE=mcu1_0 boot_app_mmcsd_qnx -sj

    5. Copy sbl_boot_app_mmcsd_qnx_<board_name>_mcu1_0_freertos_TestApp_release.appimage image as app to the boot partition of SD card

    6. Copy stage1 image as lateapp1, stage2 image as lateapp2 to the boot partition of SD card

    7. Copy ifs_qnx.appimage, atf_optee.appimage to the boot partition of SD card. Please find these images in the QNX daily build here

    Booting Linux via MMCSD

    1. Generate lateapps by using the following commands

      • goto <PDK>/packages/ti/boot/sbl/example/boot_app/scripts

      • Run ./make_multicore_appimages.sh <board_name>

      • Multicore images(lateapps) will be generated in <PDK>/packages/ti/boot/sbl/example/boot_app/multicore_images/$BOARD/.

      • Stage1 image corresponds to lateapp1, stage2 image corresponds to lateapp2 and stage3 image corresponds to lateapp3.

    2. Copy sbl_mmcsd_img_mcu1_0_release.tiimage as tiboot3.bin to the boot partition of SD card

    3. Copy tifs.bin to the boot partition of SD card

    4. Build boot_app_mmcsd_linux by using the following command

      • make BOARD=<board_name> CORE=mcu1_0 boot_app_mmcsd_linux -sj

    5. Copy sbl_boot_app_mmcsd_linux_<board_name>_mcu1_0_freertos_TestApp_release.appimage image as app to the boot partition of SD card

    6. Copy stage1 image as lateapp1, stage2 image as lateapp2 to the boot partition of SD card

    7. Copy atf_optee.appimage, tidtb_linux.appimage, tikernelimage_linux.appimage to the boot partition of SD card.

    Booting lateapps via OSPI

    1. Generate lateapps by using the following commands

      • goto <PDK>/packages/ti/boot/sbl/example/boot_app/scripts

      • Run ./make_multicore_appimages.sh <board_name>

      • Multicore images(lateapps) will be generated in <PDK>/packages/ti/boot/sbl/example/boot_app/multicore_images/$BOARD/.

      • Stage1 image corresponds to lateapp1, stage2 image corresponds to lateapp2 and stage3 image corresponds to lateapp3.

    2. Build boot_app_ospi by using the following command

      • make BOARD=<board_name> CORE=mcu1_0 boot_app_mmcsd_linux -sj

    3. Flash images to ospi flash memory at specified address using uniflash tool

      • sbl_cust_img_mcu1_0_release.tiimage at an offset of 0x0

      • tifs.bin at an offset of 0x8000

      • boot_app_ospi_<board_name>_mcu1_0_freertos_TestApp_release.appimage at an offset of 0x100000

      • stage1 image at an offset of 0x1fc0000

      • stage2 image at an offset of 0x27c0000

      • stage3 image at an offset of 0x37c0000

    Booting QNX via OSPI

    1. Generate lateapps by using the following commands

      • goto <PDK>/packages/ti/boot/sbl/example/boot_app/scripts

      • Run ./make_multicore_appimages.sh <board_name>

      • Multicore images(lateapps) will be generated in <PDK>/packages/ti/boot/sbl/example/boot_app/binary/$BOARD/. Stage1 image corresponds to lateapp1, stage2 image corresponds to lateapp2 and so on.

    2. Build boot_app_ospi_qnx by using the following command

      • make BOARD=<board_name> CORE=mcu1_0 boot_app_mmcsd_qnx -sj

    3. Flash images to ospi flash memory at specified address using uniflash tool

      • sbl_cust_img_mcu1_0_release.tiimage at an offset of 0x0

      • tifs.bin at an offset of 8000

      • boot_app_ospi_qnx_<board_name>_mcu1_0_freertos_TestApp_release.appimage at an offset of 0x100000

      • stage1 image at an offset of 0x1fc0000

      • stage2 image at an offset of 0x27c0000

      • atf_optee.appimage at an offset of 0x1c0000

      • ifs_qnx.appimage at an offset of 0x7c0000

    Booting Linux via OSPI

    1. Generate lateapps by using the following commands

      • goto <PDK>/packages/ti/boot/sbl/example/boot_app/scripts

      • Run ./make_multicore_appimages.sh <board_name>

      • Multicore images(lateapps) will be generated in <PDK>/packages/ti/boot/sbl/example/boot_app/binary/$BOARD/. Stage1 image corresponds to lateapp1, stage2 image corresponds to lateapp2 and so on.

    2. Build boot_app_ospi by using the following command

      • make BOARD=<board_name> CORE=mcu1_0 boot_app_mmcsd_linux -sj

    3. Flash images to ospi flash memory at specified address using uniflash tool

      • sbl_cust_img_mcu1_0_release.tiimage at an offset of 0x0

      • tifs.bin at an offset of 0x8000

      • boot_app_ospi_linux_<board_name>_mcu1_0_freertos_TestApp_release.appimage at an offset of 0x100000

      • stage1 image at an offset of 0x1fc0000

      • stage2 image at an offset of 0x27c0000

      • atf_optee.appimage at an offset of 0x1c0000

      • tidtb_linux.appimage at an offset of 0x7c0000

      • tikernelimage_linux.appimage at an offset of 0x1ec0000

5.3.3. Booting in HS devices

  1. To boot the boot app on HS devices add _hs while building boot app image i.e boot_app_mmcsd_hs or boot_app_ospi_hs.

  2. Use .appimage.signed images instead of .appimage for HS devices.