Layerscape LSDK2004操作指导

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

发表评论

电子邮件地址不会被公开。