LS1028A QorIQ LS系列的编译环境 FlexBuild使用

FlexBuild使用

请不要跳过这段话:

开发环境是开发人员在开发过程当中,所需的软硬件平台。开发环境并不是一个固定的样式,在这里,我们详细讲解一个嵌入式Linux开发环境搭建的方法。您已经对嵌入式开发非常了解的话,可以按照自己的需求来搭建环境。如果和本手册环境不一样而产生报错,您可以从国内一些大Linux论坛和网站搜索相关的信息来解决。本册介绍的环境经过飞凌的测试,如果对嵌入式开发不是非常熟悉的朋友,希望您按照飞凌提供的方法来搭建环境。

一、 版本说明及硬件平台

操作系统:Ubuntu18.04 64位版

交叉工具链:aarch64-linux-gnu-gcc

SDK版本:LSDK-20.04-V5.4.3

硬件平台:OK1028A-C开发板基于NXP Layerscape  LS1028A CPU  )


二、  编译环境搭建

1、编译环境说明

flexbuild是NXP官方提供的QorIQ LS系列的编译环境,飞凌在NXP官方版本的flexbuild的基础上针对OK1028A-C平台进行了定制修改,更适合用户快速开发。flexbuild中提供了整个系统编译需要的所有源码,比如linux内核、uboot、firmware、app程序以及一个完整的文件系统。对于文件系统,用户可直接使用,当然您也可以选择从零编译一个文件系统,但是相比飞凌提供的文件系统会缺少一部分配置,不建议您这样做。

Flexbuild默认只支持ubuntu18,当然它也支持docker,由于大多数用户对docker并不熟悉,因此强烈建议您使用飞凌提供的ubuntu18虚拟机进行编译开发。注意:虚拟机用户名为forlinx,密码为forlinx。

LS1028系列 OK1028A-C开发板软件镜像编译整体分为两部分,第一部分为启动第一阶段相关内容,主要包含了rcw、u-boot、网络相关固件、安全相关固件,整体被编译为一个16M的firmware镜像。第二部分是ubuntu文件系统。

2、编译环境搭建

2.1、下载flexbuild包并解压

 路径:OK1028-C(Linux)用户资料\Linux\源码\OK1028-linux-fs.tar.bz2

注意:编译过程中请全程使用root用户操作


root@ubuntu:~$ sudo -s (此时要求密码,密码为1)

将OK1028-linux-fs.tar.bz2放到虚拟机/home/forlinx/work目录

root@ubuntu:~$ mdkir -p /home/forlinx/work

root@ubuntu:~$ tar xvf OK1028-linux-fs.tar.bz2 -C /home/forlinx/work

root@ubuntu:~$ cd /home/forlinx/work/OK1028-linux-fs/flexbuild

2.2、主要目录/文件简介

packages

源码目录,含有linux firmware apps ramdisk的源码

build

编译目录,用于编译过程产生的临时文件,编译结果位于build/images目录

configs

编译配置,flexbuild适用于多个平台,针对不同平台的配置信息

tools

编译工具,flex-builder flex-installer等

setup.env

用于配置编译环境变量

2.3、设置环境变量

root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ source setup.env

注意:整个flexbuild环境以该操作为基础,如果您重启了虚拟机或者Shell终端都需要重新执行该操作。

三、 全部编译

第一次进行编译时,建议您使用全部编译命令进行编译,好处是操作简单,只需要一条命令就可以编译出所有需要的文件。

root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -m ls1028ardb -r ubuntu:main

生成的文件位于build/images目录:

 

四、  打包烧写镜像

root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ ./sdfuseIMG.sh

 

将在OK1028-linux-fs目录生成images.tar.bz2,后续可以直接解压到烧写U盘中。

五、  单独编译Firmware

Ls系列的芯片在启动时需要加载一些固件,例如rcw(复位控制字),uboot等,在开发过程中如果您对上述文件进行了修改,就需要重新编译并将这些文件制打包成一个firmware镜像文件,烧写到启动设备中,编译firmware的命令为:

清除之前编译的文件:

root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -i clean-firmware

编译Firmware:

EMMC启动:

root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -i mkfw -a arm64 \

-m ls1028ardb -b emmc

TF卡启动:

root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -i mkfw -a arm64 \

-m ls1028ardb -b sd

XSPI启动:

root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -i mkfw -a arm64 \

-m ls1028ardb -b xspi

OK1028支持EMMC、TF卡、XSPI启动,需要将特定的Firmware烧写到对应的介质中。

 

六、  单独编译内核及模块 

LS1028A平台默认的配置文件为:packages/linux/linux/arch/arm64/configs/ok1028_defconfig

清除之前编译文件:

root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -i clean-linux

编译内核:

root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -c linux -a arm64 -m ls1028ardb

将编译好的内核、设备树文件更新到build/images目录:

root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -i mkboot -m ls1028ardb

注意:单独编译内核及模块时,务必执行mkboot操作,以便后续打包烧写镜像。

 

配置内核(如果使用默认配置可略过)

root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -c linux:custom -m ls1028ardb -a arm64

 

生成的配置文件为:build/linux/linux/arm64/LS/output/.config

可以将改动过后的文件覆盖:packages/linux/linux/arch/arm64/configs/ok1028_defconfig

七、  单独编译app程序

packages/apps包含了飞凌LS1028A平台相关的上层应用层工具例如OpenSSL如果您对这部分的源码有所改动,需要使用以下命令单独编译:

编译命令如下:

root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -c apps -m ls1028ardb

注意:为了加快编译速度,默认飞凌已经将默认编译好的二进制程序集成到文件系统基础包中,默认编译文件系统时不再编译此类app程序,如果您对packages/apps/目录的代码有修改,可修改configs/build_lsdk.cfg开启对应软件的编译选项,例如CONFIG_APP_DPDK=y。

更新app到文件系统中:

root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder

-i merge-component -a arm64 -m ls1028ardb

重新生成ubuntu镜像:root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder

-i packrfs -r ubuntu:main -m ls1028ardb

 

 

此外,飞凌提供的命令行和Qt测试程序位于packages/rfs/ls1028_ubuntu_main_overlay/forlinx/apps目录,该目录的测试程序将在编译文件系统的过程中自动构建,您可以使用如下方式进行构建:

以qt can测试程序为例:

root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ mount -o bind /dev build/rfs/rootfs_lsdk2004_ubuntu_main_arm64/dev

root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ chroot build/rfs/rootfs_lsdk2004_ubuntu_main_arm64 /bin/bash

root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ cd /forlinx/apps/forlinx-qt/can/

root@ubuntu:/forlinx/apps/forlinx-qt/can# qmake

 

root@ubuntu:/forlinx/apps/forlinx-qt/can# make

 

root@ubuntu:/forlinx/apps/forlinx-qt/can# make install

 

退出编译环境:

root@ubuntu:/forlinx/apps/forlinx-qt/can# exit

root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ umount build/rfs/rootfs_lsdk2004_ubuntu_main_arm64/dev