The main purpose of the bootloader is to boot the operating system. Other uses of the bootloader include performing manufacturing programming, early initialization of peripherals, or handling of tampering events.
Depending on your use case, you may want to modify the standard bootloader.
Platform code overview
You can access Digi’s U-Boot source code in GitHub.
SOM and carrier board source code
The BSP is located inside folder board/digi/
where there are the following subfolders:
-
ccimx9
: contains specific code for the ConnectCore 91 system-on-module (RAM initialization, eMMC, PMIC, Ethernet, and so on). -
ccimx91-dvk
: contains specific code for the ConnectCore 93 Development Kit carrier board (Ethernet PHY, power regulators, and so on).
The microSD card controller (on the carrier board) is initialized together with the eMMC (on the SOM) in the ConnectCore 91 System-On-Chip common code, despite technically being part of the carrier board. |
Device tree files
Following the Linux kernel, U-Boot has progressively adopted the device tree model although some drivers may not have full support for all properties.
Digi provides device tree files for the SOM and the carrier board in path arch/arm/dts/
of U-Boot source code.
File | Description |
---|---|
|
SOM include file |
|
ConnectCore 93 Development Kit DTS file |
|
ConnectCore 93 Development Kit DTS file for U-Boot tweaks |
Platform include files
Platform include files in include/configs/
are:
-
ccimx91-dvk.h
: contains configuration for the ConnectCore 93 Development Kit like the board name, the UART to use as console, the Ethernet PHY address, or the default environment. -
ccimx9_common.h
: contains common configuration for the ConnectCore 91 System-On-Chip, like the location of U-Boot and its environment, or the supported interfaces and commands. -
digi_common.h
: contains common configuration for Digi embedded products.
Modify platform code
Once you understand the structure of U-Boot platform code, you can customize existing code. Example of adaptations include:
-
Ethernet PHY, if a different PHY is used on your board.
-
PMIC voltages, if different LDOs are used to power interfaces that must be enabled during the boot process.
-
GPIOs, IOMUX of pads, per your board’s requirements.
You can make most changes on the ConnectCore 93 Development Kit device tree to adapt it to your carrier board-specific hardware. For more specific functionality, you may need to adapt the board source code.
See Methods for guidelines on making changes to the configuration and source code of any recipe.
The recipe that builds the U-Boot bootloader is called u-boot-dey
.