| | 1 | [[PageOutline]] |
| | 2 | |
| | 3 | |
| | 4 | [=#u-boot] |
| | 5 | = Catalina U-Boot Bootloader |
| | 6 | Gateworks supports the U-Boot Bootloader for the Catalina product family. |
| | 7 | |
| | 8 | 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. |
| | 9 | |
| | 10 | The following items are supported in the Gateworks U-Boot for Catalina: |
| | 11 | - i.MX95 ENETC Ethernet (port0, port1, port2) |
| | 12 | - USB Host support |
| | 13 | * USB Mass Storage |
| | 14 | * USB Networking (for various adapters supported in U-Boot) |
| | 15 | - eMMC (mmc dev 0) |
| | 16 | - microSD (mmc dev 1) |
| | 17 | |
| | 18 | see [wiki:uboot] for more info |
| | 19 | |
| | 20 | |
| | 21 | == U-Boot Environment |
| | 22 | |
| | 23 | === Default environment |
| | 24 | If you would like to modify the default environment you can edit the [https://github.com/Gateworks/u-boot/blob/v2026.04-catalina/board/gateworks/catalina/catalina.env catalina.env] in the Catalina BSP. |
| | 25 | |
| | 26 | === Restoring defaults |
| | 27 | 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. |
| | 28 | |
| | 29 | To restore default bootloader environment variables: |
| | 30 | |
| | 31 | - At the "Hit any key to stop autoboot:" prompt press any key. |
| | 32 | - Execute the following command: |
| | 33 | {{{#!bash |
| | 34 | run env_erase && reset |
| | 35 | }}} |
| | 36 | |
| | 37 | |
| | 38 | [=#bootdevs] |
| | 39 | == Boot Devices |
| | 40 | The Catalina U-Boot Bootloader supports the following devices and partition types: |
| | 41 | - eMMC |
| | 42 | - microSD |
| | 43 | - USB Mass Storage |
| | 44 | |
| | 45 | The U-Boot 'Standard Boot' is used for Catalina (vs the older legacy 'Generic Distro Config' used for previous product families): |
| | 46 | - the default bootcmd will ultimately search for boot scripts on a set of bootable devices |
| | 47 | - the 'boot_targets' env variable dictates which devices are checked and in what order (ie 'mmc0 mmc1 usb') |
| | 48 | - the 'boot_prefixes' env variable dictates what file prefixes are searched for a boot script |
| | 49 | |
| | 50 | 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. |
| | 51 | |
| | 52 | [=#memmap] |
| | 53 | == Memory Mapping |
| | 54 | 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. |
| | 55 | |
| | 56 | Here is what we recommend for memory mapping on for the Catalina i.MX95 SoC: |
| | 57 | ||= address =||= var =||= Note =|| |
| | 58 | || 0x90400000 || kernel_comp_addr_r || CONFIG_TEXT_BASE || |
| | 59 | || 0x98400000 || loadaddr,kernel_addr_r || CONFIG_SYS_LOAD_ADDR || |
| | 60 | || 0xa0400000 || fdt_addr_r || area for loading fdt (128M above kernel) || |
| | 61 | || 0xa0500000 || scriptaddr || area for loading a boot script (1M above fdt) || |
| | 62 | || 0xa0580000 || ramdisk_addr_r || area for loading a ramdisk (512K above script) || |
| | 63 | || 0xd0000000 || || 1GB boundary || |