2023年update:目前NXP的git服务器已经从https://source.codeaurora.org 更新到https://github.com/nxp-qoriq, 请参考最新的https://www.lijiandong.com.cn/?p=293文档
一:LSDK2004操作指导
SDK编译环境需要ubuntu系统,先安装ubuntu18.04系统
解压缩flexbuild_lsdk2004.tgz
进入解压缩目录
source setup.env 先执行这个脚本,配置环境变量
flex-builder -i repo-fetch 这个命令下载uboot/linux等源码包到本地
flex-builder -i repo-update
- for arm64 生成64位系统image
flex-builder -i mkrfs -a arm64 这个命令下载ubuntu文件系统 生成的文件系统在build/rfs下
flex-builder -i mkrfs -a arm64 -r centos 这个命令下载centos文件系统(可选) 生成的文件系统在build/rfs下
flex-builder -i mkfw -m lx2160ardb -b sd 这个命令生成针对lx2160ardb开发板的最小系统 生成image在build/image下
flex-builder -c apps -a arm64 这个命令编译nxp适配的应用软件,比如dpdk等 编译后放在build/apps下
flex-builder -i mkdistroscr -a arm64
flex-builder -i mkboot -a arm64 这个命令生成boot分区压缩文件 生成的压缩文件放在build/image下
flex-builder -i merge-component -a arm64 这个命令把编译后的nxp适配应用软件放到build/rfs/下的ubuntu或者centos文件系统里
flex-builder -i packrfs -a arm64 这个命令压缩文件系统build/rfs下的ubuntu/centos文件系统为tgz文件,生成文件在build/image下
cp flexbuild_lsdk2004/tools/flex-installer /usr/bin/
sudo flex-installer -i pf -d /dev/sdx 对sd卡分区,x代表实际名称
sudo flex-installer -b build/image/bootpartition_LS_arm64_lts_5.4.tgz -r build/image/rootfs_lsdk2004_ubuntu_main_arm64.tgz -f build/image/firmware_lx2160ardb_uboot_sdboot.img -d /dev/sdx -d /dev/sdx
这个命令会把三个文件安装到sd卡上,sd卡如果是读卡器,一般设备名是/dev/sdx,x代表实际名称
- for arm32 生成32位系统image
flex-builder -i mkrfs -a arm32 这个命令下载ubuntu文件系统 生成的文件系统build/rfs下
flex-builder -i mkrfs -a arm32 -r centos 这个命令下载centos文件系统(可选) 生成的文件系统在build/rfs下
flex-builder -i mkfw -m ls1021atwr -b sd/qspi/nor 这个命令生成针对ls1021atwr开发板的最小系统,针对不同的启动介质,指定 sd, qspi,nor, 生成image在build/image下
flex-builder -c apps -a arm32 这个命令编译nxp适配的应用软件,比如dpdk等 编译后放在build/apps下
flex-builder -i mkdistroscr -a arm32 生成启动脚本
flex-builder -i mkboot -a arm32 这个命令生成boot分区压缩文件 生成的压缩文件放在build/image下
flex-builder -i merge-component -a arm32 这个命令把编译后的nxp适配应用软件放到build/rfs/下的ubuntu或者centos文件系统里
flex-builder -i packrfs -a arm32 这个命令压缩文件系统build/rfs下的ubuntu/centos文件系统为tgz文件,生成文件在build/image下
cp flexbuild_lsdk2004/tools/flex-installer /usr/bin/
sudo flex-installer -i pf -d /dev/sdx 对sd卡分区,x代表实际名称
sudo flex-installer -b build/image/bootpartition_LS_arm32_lts_5.4.tgz -r build/image/rootfs_lsdk2004_ubuntu_main_arm32.tgz -f build/image/firmware_ls1021atwr_uboot_sdboot.img -d /dev/sdx
这个命令会把三个文件安装到sd卡上,sd卡如果是读卡器,一般设备名是/dev/sdx,x代表实际名称
二:支持开发板型号列表在/flexbuild_lsdk2004/configs/build_lsdk.cfg
BUILD_LAYERSCAPE_IMAGE=y
CONFIG_MACHINE_LS1012ARDB=y
CONFIG_MACHINE_LS1012AQDS=n
CONFIG_MACHINE_LS1012AFRDM=n
CONFIG_MACHINE_LS1012AFRWY=y
CONFIG_MACHINE_LS1021ATWR=y
CONFIG_MACHINE_LS1021AQDS=n
CONFIG_MACHINE_LS1028ARDB=y
CONFIG_MACHINE_LS1028AQDS=n
CONFIG_MACHINE_LS1043ARDB=y
CONFIG_MACHINE_LS1043AQDS=n
CONFIG_MACHINE_LS1046ARDB=y
CONFIG_MACHINE_LS1046AQDS=n
CONFIG_MACHINE_LS1046AFRWY=y
CONFIG_MACHINE_LS1088ARDB=n
CONFIG_MACHINE_LS1088AQDS=n
CONFIG_MACHINE_LS1088ARDB_PB=y
CONFIG_MACHINE_LS2088ARDB=y
CONFIG_MACHINE_LS2088AQDS=n
CONFIG_MACHINE_LX2160ARDB=y
CONFIG_MACHINE_LX2160AQDS=n
CONFIG_MACHINE_LX2160ARDB_REV2=y
CONFIG_MACHINE_LX2160AQDS_REV2=n
三:组成firmware固件的各部分image地址在flexbuild_lsdk2004/configs/board/common/memorylayout.cfg定义
Start block number in beginning 64MB space of SD/eMMC card on all QorIQ platforms sd_rcw_bootloader_offset=8 sd_bootloader_offset=2048 sd_bootloader_env_offset=10240 sd_secureboot_headers_offset=12288 sd_ddr_phy_fw_offset=16384 sd_fuse_headers_offset=17408 sd_fman_ucode_offset=18432 sd_qe_firmware_offset=18944 sd_dp_firmware_offset=18944 sd_phy_firmware_offset=19456 sd_uboot_scr_offset=19968 sd_dpaa2_mc_fw_offset=20480 sd_dpaa2_mc_dpl_offset=26624 sd_dpaa2_mc_dpc_offset=28672 sd_device_tree_offset=30720 sd_kernel_offset=32768 sd_kernelitb_offset=32768 sd_initrdrfs_offset=34816
四:组成firmware image的固件内容参考如下文件,以lx2160ardb开发板为例,flexbuild_lsdk2004/configs/board/lx2160ardb/manifest
[firmware_images] rcw_xspi=$FBOUTDIR/firmware/rcw/lx2160ardb/XGGFF_PP_HHHH_RR_19_5_2/rcw_2000_700_2900_19_5_2.bin rcw_sd=$FBOUTDIR/firmware/rcw/lx2160ardb/XGGFF_PP_HHHH_RR_19_5_2/rcw_2000_700_2900_19_5_2.bin rcw_emmc=$FBOUTDIR/firmware/rcw/lx2160ardb/XGGFF_PP_HHHH_RR_19_5_2/rcw_2000_700_2900_19_5_2.bin uefi_xspiboot=$FBOUTDIR/firmware/uefi/lx2160ardb/LX2160ARDB_EFI_NORBOOT.fd uefi_env=$FBOUTDIR/firmware/uefi/lx2160ardb/LX2160ARDBNV_EFI_NORBOOT.fd atf_bl2_xspi=$FBOUTDIR/firmware/atf/lx2160ardb/bl2_flexspi_nor.pbl atf_bl2_xspi_sec=$FBOUTDIR/firmware/atf/lx2160ardb/bl2_flexspi_nor_sec.pbl atf_bl2_sd=$FBOUTDIR/firmware/atf/lx2160ardb/bl2_sd.pbl atf_bl2_sd_sec=$FBOUTDIR/firmware/atf/lx2160ardb/bl2_sd_sec.pbl atf_bl2_emmc=$FBOUTDIR/firmware/atf/lx2160ardb/bl2_emmc.pbl atf_fip_uboot=$FBOUTDIR/firmware/atf/lx2160ardb/fip_uboot.bin atf_fip_uboot_sec=$FBOUTDIR/firmware/atf/lx2160ardb/fip_uboot_sec.bin atf_fip_uefi=$FBOUTDIR/firmware/atf/lx2160ardb/fip_uefi.bin secureboot_headers_xspi=$FBOUTDIR/firmware/secboot_hdrs/lx2160ardb/secboot_hdrs_xspiboot.bin secureboot_headers_sd=$FBOUTDIR/firmware/secboot_hdrs/lx2160ardb/secboot_hdrs_sdboot.bin ddr_phy_fw=$FBOUTDIR/firmware/ddr_phy_bin/fip_ddr_all.bin ddr_phy_fw_sec=$FBOUTDIR/firmware/atf/lx2160ardb/fip_ddr_sec.bin phy_firmware=$FBOUTDIR/firmware/phy_inphi/in112525-phy-ucode.txt dpaa2_mc_fw=$FBOUTDIR/firmware/mc_bin/lx2160a/mc*.itb dpaa2_mc_dpc=$FBOUTDIR/firmware/mc_utils/config/lx2160a/RDB/dpc-usxgmii.dtb dpaa2_mc_dpl=$FBOUTDIR/firmware/mc_utils/config/lx2160a/RDB/dpl-eth.19.dtb
五:uboot启动加载的xxxx_boot.scr文件,如果需要增加启动配置定义,修改flexbuild_lsdk2004/configs/board/lx2160ardb/manifest文件distroboot部分,然后执行flex-builder -i mkdistroscr,生成新的xxxx_boot.scr文件,也可以设置othbootargs 环境变量,比如 setenv othbootargs=devpart_root 3设置挂载rootfs文件系统在第三个分区。
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1…
Scanning mmc 0:2…
Found U-Boot script /lx2160ardb_boot.scr
1031 bytes read in 16 ms (62.5 KiB/s)
Executing script at 80000000
25350656 bytes read in 1220 ms (19.8 MiB/s)
29393 bytes read in 16 ms (1.8 MiB/s)
Flattened Device Tree blob at 90000000
distroboot=\ 'env exists dtb || setenv dtb fsl-lx2160a-rdb.dtb;'\ 'env exists kernel_image || setenv kernel_image Image;'\ 'env exists devpart_boot || setenv devpart_boot 2;'\ 'env exists devpart_root || setenv devpart_root 4;'\ 'part uuid $devtype $devnum:$devpart_root partuuidr;'\ 'setenv bootargs console=ttyAMA0,115200 earlycon=pl011,mmio32,0x21c0000 root=PARTUUID=$partuuidr rw rootwait pci=pcie_bus_perf $othbootargs;'\ 'load $devtype $devnum:$devpart_boot $kernel_addr_r $kernel_image;'\ 'load $devtype $devnum:$devpart_boot $fdt_addr_r $dtb;'\ 'env exists secureboot && echo validating secureboot && run secureboot_validate;'\ 'booti $kernel_addr_r - $fdt_addr_r'
给8G 卡分区 sudo flex-installer -i pf -p 4P=100M:1G:1G:-1 -d /dev/sdx
给4G 卡分区 sudo flex-installer -i pf -p 4P=100M:1G:100M:-1 -d /dev/sdx
生成整个sd卡image sudo flex-installer -i mksdcard -m lx2160ardb
备份sd卡分区成压缩包sudo flex-installer -i backup -d /dev/sdx