| Version 1 (modified by , 2 days ago) ( diff ) |
|---|
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 |
