一、下载flexbuild_lsdkxxxx.tgz
下面以flexbuild_lsdk2108.tgz为例,通过官方网站下载flexbuild_lsdk2108.tgz。
方法一:
1、进入官网(https://www.nxp.com.cn/)选择产品->Layerscape处理器->查看所有LAYERSCAPE处理器,然后在处理器的表格中选在ls1046A。
2、进入后选择设计资源
继续下来找软件,会看到SDK的下载接口。
在新打开的页面中点击下载,会自动弹到下载的位置。然后根据自己需要下面相应的软件。在向下滑动可以找到帮助文档“Layerscape Software Development Kit User Guide, Rev. 21.08”。
3、点击上图中7的下载,进入flexbuild_lsdk2108.tgz的下载界面。如果不行的话可以参考第二种方法下载。
方法二:
访问https://lsdk.github.io/ 选择CONPONENT-> LSDK UTILITY->Dowenload。然后参照方法一中3的方式下载。
另外这个界面flexbuild的描述中有关系编译对系统的要求。其它标签中也提供了其它应用和镜像的下载。
二、LSDK编译镜像
参考flexbuild中的要求,我编译系统选择的是ubuntu20.04,将flexbuild_lsdk2108.tgz,放入flexbuild_lsdk2108.tgz复制到系统中,利用tar -xzvf flexbuild_lsdk2108.tgz进行解压。进入解压后的目录执行source setup.env && flex-builder -a arm64 -m ls1046ardb
flex-builder -a arm64 -m ls1046ardb会将系统编译所需要的依赖包和其它源码之类的一并来取下来,所以整个过程中需要联网,所需要时间比较长。如果中间有提示什么错误可以尝试多执行几次flex-builder -a arm64 -m ls1046ardb看看能修复不(因为网络的原因下载有时被中断)。对于flex-builder的用法可以查看帮助文档(执行flex-builder)。
使用docker编译:
$ sudo apt-get install decker.io #docker安装,已安装过可以忽略。
$ sudo gpasswd -a $USER docker #将当前用于加入docker组
$ source setup.env
$ flex-builder docker #执行完后会进入docker编译环境
[root@fbubuntu flexbuild_lsdk2108]$ source setup.env
[root@fbubuntu flexbuild_lsdk2108]$ flex-builder -a arm64 -m ls1046ardb
下面是最终lsdk中的目录结构:
下面是SDK各目录的介绍,其中有些本人目前也没太明白具体用途,另外如果哪里写的有误望评论区告知。
.
├── build #编译输出文件的存放目录
│ ├── apps #对应components/apps编译输出
│ ├── firmware #对应components/firmware编译输出
│ ├── images #编译后生成镜像的存放位置
│ ├── linux #linux内核编译的输出目录
│ └── rfs #顾名思义rootfs
├── components #源码存放目录,LSDK-21.08在这里,之前版本好像在packages目录下。
│ ├── apps #看名字是存放应用程序源码的地方。具体都有什么用到在看。
│ ├── firmware #固件存放位置,RCW配置和uboot源码都在这个目录下面,
│ └── linux #linux源码存放位置。还有一些以ko方式编译的模块的源码。
├── configs #配置信息
│ ├── board #board的配置信息,每种board都有一个专门的目录。
│ ├── buildroot #buildroot配置信息
│ ├── centos #centos的配置信息
│ ├── linux #???,编译LS1046ARD感觉没调用到这里的defconfig,后面遇到再说
│ ├── sdk.yml #SDK编译配置文件,用户也可以编写sdk_custom.yml文件或编译时-f参数指定,其中kernel的defconfig文件在该文件的KERNEL_CONFIG中有指定。通过parse_yaml命令这个文件会在当前目录下生成一个《.sdk.cfg》的配置文件。
│ ├── ubuntu #ubuntu的配置信息
│ └── yocto #yocto的配置信息
├── docker #LSDK支持docer编译,这个应该是docker镜像有关的东西
│ └── ubuntu
├── docs #帮助和说明文档,建议多看看了解一下
│ ├── build_and_deploy_distro.md
│ ├── FAQ-ubuntu-docker.md
│ ├── flexbuild_usage.md
│ ├── flexbuild_workflow.txt
│ ├── lsdk_build_install.md
│ ├── memory_layout.txt
│ └── proxy.md
├── include #???,感觉和拉取代码有关
│ ├── app_repo_update.inc
│ └── repo.mk
├── LICENSE
├── logs #编译log输出的地方
│ ├── autobuild-arm64-log-202301291118.txt
├── Makefile
├── packages #LSDK-21.08之前源码好像在这个目录下,LSDK-21.08每个目录下都放着一些编译用的Makefile文件
│ ├── apps
│ ├── firmware
│ ├── linux
│ ├── Makefile
│ └── rfs
├── README.md
├── setup.env #设置环境变量的脚本,每次重新打开终端都需要source一下
└── tools #编译用的工具,还有好多编译过程的变量,在flex-builder中会被调用设置
├── clean_components
├── create_bootpartition
├── create_composite_firmware
├── distro_buildroot
├── distro_centos
├── distro_ubuntu
├── distro_yocto
├── flash_images
├── flex-builder #编译时用这个,是一个脚本文件
├── flex-installer
├── flex-mkdistrorfs
├── getvariable
├── parse_yaml #用于将configs下的xxx.yml生成.sdk.cfg文件。
├── repo_update
└── secure_sign_image
28 directories, 39 files
参考文档:
LSDK-KC-REV18.12.pdf
欲知后事如何,等get到新知识了在更新,谢谢各位看官。