wiki:catalina/bootloader

Version 1 (modified by Tim Harvey, 2 days ago) ( diff )

initial page

Catalina U-Boot Bootloader

Gateworks supports the U-Boot Bootloader for the Catalina product family.

The purpose of a bootloader is to load the Linux kernel and execute it passing it configuration parameters such as an optional kernel command-line, an optional initial ramdisk filesystem, and a device-tree.

The following items are supported in the Gateworks U-Boot for Catalina:

  • i.MX95 ENETC Ethernet (port0, port1, port2)
  • USB Host support
    • USB Mass Storage
    • USB Networking (for various adapters supported in U-Boot)
  • eMMC (mmc dev 0)
  • microSD (mmc dev 1)

see uboot for more info

U-Boot Environment

Default environment

If you would like to modify the default environment you can edit the catalina.env in the Catalina BSP.

Restoring defaults

The Catalina boot firmware default is build into the U-Boot binary. If you erase the version stored on the boot device it will be restored.

To restore default bootloader environment variables:

  • At the "Hit any key to stop autoboot:" prompt press any key.
  • Execute the following command:
    run env_erase && reset
    

Boot Devices

The Catalina U-Boot Bootloader supports the following devices and partition types:

  • eMMC
  • microSD
  • USB Mass Storage

The U-Boot 'Standard Boot' is used for Catalina (vs the older legacy 'Generic Distro Config' used for previous product families):

  • the default bootcmd will ultimately search for boot scripts on a set of bootable devices
  • the 'boot_targets' env variable dictates which devices are checked and in what order (ie 'mmc0 mmc1 usb')
  • the 'boot_prefixes' env variable dictates what file prefixes are searched for a boot script

Catalina boards always boot from the on-board eMMC device but once in the U-Boot environment you can load your Linux based OS from any boot media supported in U-Boot such as USB, microSD, network.

Memory Mapping

When working with boot firmware you are often dealing with choosing where to load in memory various components. Sometimes this is done by hard-coding addresses into U-Boot commands, using env variables, or hard coding them into the U-Boot build configuration files (ie binman node) or FIT image templates.

Here is what we recommend for memory mapping on for the Catalina i.MX95 SoC:

address var Note
0x90400000 kernel_comp_addr_r CONFIG_TEXT_BASE
0x98400000 loadaddr,kernel_addr_r CONFIG_SYS_LOAD_ADDR
0xa0400000 fdt_addr_r area for loading fdt (128M above kernel)
0xa0500000 scriptaddr area for loading a boot script (1M above fdt)
0xa0580000 ramdisk_addr_r area for loading a ramdisk (512K above script)
0xd0000000 1GB boundary
Note: See TracWiki for help on using the wiki.