Version 2 (modified by 8 months ago) ( diff ) | ,
---|
Venice U-Boot Bootloader
Gateworks supports the U-Boot Bootloader for the Venice 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 Venice:
- IMX8M FEC GbE
- IMX8MP EQOS GbE
- USB Host support (USB Mass Storage and USB Networking for ASIX USB 2.0 USB Network device)
- eMMC / microSD
The following items are not currently supported in the Gateworks U-Boot for Venice:
- PCIe support (include PCIe based Gbe)
Additional resources:
see uboot for more info
Editing the environment
If you would like to modify the default environment you can edit the venice/venice.env in the Venice BSP.
Restoring environment defaults
The Venice boot firmware has a copy of the original U-Boot env that was created during build time.
To restore default bootloader environment variables:
- At the "Hit any key to stop autoboot:" prompt press any key.
- Execute the following command:
run restore_env && reset
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 the IMX8M{M,N,P} SoC's:
address | var | Note |
---|---|---|
0x00920000 | ARM Trusted Firmware | |
0x40000000 | base of DRAM | |
0x40200000 | kernel_comp_addr_r | CONFIG_TEXT_BASE: base of non-secure memory<BR>The ATF configures the first 2M of DRAM as secure for itself |
0x40310000 | binman_fip image gets put here | |
0x44000000 | CONFIG_SPL_LOAD_FIT_ADDRESS (used for secure boot) | |
0x48200000 | loadaddr, kernel_addr_r | CONFIG_SYS_LOAD_ADDR |
0x50200000 | fdt_addr_r | area for loading fdt (128M above kernel_addr_r) |
0x50300000 | scriptaddr | area for loading script (512K above fdt_addr_r) |
0x7e000000 | CFG_TZDRAM_START (secure boot with TEE; for 1GB DRAM boards) | |
0x80000000 | 1GB boundary | |
0xbe000000 | CFG_TZDRAM_START (secure boot with TEE; for 2GB DRAM boards) | |
0xc0000000 | 2GB boundary | |
0xfe000000 | CGG_TZDRAM_START (secure boot with TEE; for 4GB DRAM boards) | |
0x100000000 | 3GB boundary | |
0x140000000 | 4GB boundary |