Hello,
Your approach is not the recommended LSDK method. The individual raw images can work, but you must also reproduce the complete U-Boot environment and boot sequence for LX2160A. The safer method is to generate and flash the composite firmware image:
flex-builder -i mkfw -m lx2160ardb_rev2 -b sd
This generates:
build/images/firmware_lx2160ardb_rev2_sdboot.img
Then write it to the SD card:
sudo flex-installer -f firmware_lx2160ardb_rev2_sdboot.img -d /dev/mmcblk0
Alternatively:
sudo dd if=firmware_lx2160ardb_rev2_sdboot.img \
of=/dev/mmcblk0 bs=1k seek=4 conv=fsync
Problems in the proposed procedure
root=/dev/mmcblk0p1 is valid only if partition 1 contains an extracted Linux root filesystem. A .tar.gz file itself is not a mounted root filesystem; it must be extracted into the partition:
sudo mkfs.ext4 /dev/mmcblk0p1
sudo mount /dev/mmcblk0p1 /mnt
sudo tar -xpf fsl-image-networking-full-lx2160ardb-rev2-*.rootfs.tar.gz \
-C /mnt
sudo umount /mnt
- This command assumes that the FIT image occupies exactly
0x14000 blocks:
mmc read 0x90000000 0x8000 0x14000
That size must match the actual FIT file size, rounded up to 512-byte sectors. Otherwise, U-Boot may read too little or overwrite adjacent memory.
-
You are bypassing the normal sd_bootcmd sequence. The standard sequence also loads the Management Complex firmware, DPC, and other required components. The LSDK guide defines a composite SD layout and recommends booting through the generated firmware image rather than manually placing each component.
-
Your fip.bin and fip_ddr_all.bin entries should not be treated as interchangeable. Their correct locations and loading commands depend on the generated U-Boot environment and firmware layout.
A better manual boot test, after the composite image is installed, is:
or simply reset the board with the boot switches configured for SD boot.
Why source directories are empty
The LSDK package separates the build framework from component source trees. The directories under components/firmware may contain manifests, configuration, recipes, or references, while the actual ATF, U-Boot, RCW, DDR PHY, and Linux sources are fetched according to the LSDK manifest/configuration. Therefore, cloning the component repositories is expected when building from source. Use the exact revisions specified by the LSDK release rather than arbitrary upstream branches.
For example, build through Flexbuild instead of independently cloning and building each component:
flex-builder -c atf -m lx2160ardb_rev2 -b sd
flex-builder -c linux -m lx2160ardb_rev2
flex-builder -i mkfw -m lx2160ardb_rev2 -b sd
For a production build, use the official flexbuild_lsdk2108.tgz archive because it contains the release-matched configuration and component revisions.
Generating a FIT image
A FIT image is generated from an ITS description using U-Boot’s mkimage utility:
mkimage -f lx2160.its lx2160.fit
The ITS file describes the kernel, device tree, optional initramfs, load addresses, compression, hashes, and configuration. The LSDK guide explicitly documents this process and gives the command format above.
A minimal kernel-plus-DTB example is:
/dts-v1/;
/ {
description = "LX2160A kernel and device tree FIT";
images {
kernel {
description = "Linux kernel";
data = /incbin/("Image");
type = "kernel";
arch = "arm64";
os = "linux";
compression = "none";
load = <0x81080000>;
entry = <0x81080000>;
hash-1 {
algo = "sha256";
};
};
fdt {
description = "LX2160ARDB Rev2 device tree";
data = /incbin/("fsl-lx2160a-rdb.dtb");
type = "flat_dt";
arch = "arm64";
compression = "none";
load = <0x90000000>;
hash-1 {
algo = "sha256";
};
};
};
configurations {
default = "conf";
conf {
kernel = "kernel";
fdt = "fdt";
};
};
};
Build it with the mkimage supplied by the LSDK U-Boot tools:
mkimage -f lx2160.its fitImage
For a compressed kernel, use Image.gz and set:
Ensure that the kernel, FDT, initramfs, and U-Boot load regions do not overlap. The generated file in tmp/deploy/images/.../fitImage-*.bin is normally a Yocto-generated FIT artifact; its timestamp and Git hash are packaging metadata, not a special binary format. The FIT format itself is produced by mkimage.
Finally, note that the documented LSDK 21.08 FIT example includes an initramfs/rootfs as well as kernel and DTB. If you boot with root=/dev/mmcblk0p1, you can omit the initramfs, but the root filesystem must be properly extracted and contain a valid /sbin/init.
Regards