nxp的LSDK一些使用说明

刚开始使用nxp的LSDK碰到一些问题,浪费了不少时间去理解,因此写下来供大家参考,以免走弯路。

首先要说LSDK是什么,LSDK是nxp发布的一个用于layerscape系列的linux使用开发sdk,其实是一个完整的构建工具,你可以用它来完成如下工作:

1.构建linux的rootfs镜像,比如 ubuntu/Debian userland, Centos. builder-root等等

2.构建u-boot镜像,支持从sd卡,nor flash,启动

3.编译应用APP

4.提供二进制的firmware用于构建完整镜像

整个构建过程是通过一系列脚本来完成的,在某种意义上来说和openwrt很类似或者说buildroot以及yocto类似,都是通过运行程序,下载源程序到本地然后构建交叉编译工具,再进行编译,最后生成镜像可以安装到sd卡或者用u-boot更新。

支持的操作系统是ubuntu18.04(在有些18.04上也不能正常运行,原因我看了一下脚本,脚本会检查交叉编译器,如果已经安装了交叉编译器并且不符合就会导致检查不通过,这种情况下只能用docker了)

如果运行flex-builder时出现如下提示就需要使用docker运行环境了:

 The existing toolchain version 8.x is not tested in this distro 
 Please build on Ubuntu 18.04 host or in docker to use the verified toolchain 
构建docker环境也很简单,直接运行flex-builder docker即可,系统就会自己下载安装运行环境

lsdk的主要文档在doc目录下,建议这个目录下面的说明文件要好好阅读一下(下面的使用方法主要翻译自这几个说明文件):

构建脚本主要有:

flex-builder 主要的构建脚本,通过运行参数可以生成镜像

flex-installer 生成最终烧写的安装镜像和安装

在目录下运行 . setup.env,可以自动设置环境变量,然后就可以运行flex-builder和flex-installer

说几个常用的命令:

一、构建相关镜像(由于构建过程中需要下载大量的源程序,如果网络不好会很慢,而且很多在国外,建议增加代理,可以看一下文档中对于proxy的说明)

flex-builder - i   -m  -c -r

-i  指令参数 包括 auto 自动构建所有必须的镜像, mkrfs构建 rootfs  mkfw  构建组合firmware clean  清除编译完成的文件

-m  板子类型,包括  ls1012afrwy, ls1021atwr, ls1028ardb, ls1043ardb, ls1046ardb, ls1088ardb, ls2088ardb, lx2160ardb_rev2, etc

-r 发行版的类型,包括 ubunut, centos buildroot等等,也可以是 a:b的形式,其中 a 是发行版名称,b是类型,比如 ubuntu:mate ubuntu:lite等等

-c 构建组件类型: 常用的 包括  firmware 固件, apps 运行app, linux linux发行版, atf, atf估件  rcw, layerscape的特有rcw配置字

-r rootfs的类型,包括 ubuntu|debian|centos|android|buildroot:main|devel|mate|lite|tiny

-b  启动的类型,包括sd, emmc, qspi, xspi, nor, nand,  

构建完成以后通常会生成3个文件, bootparitionxxx.tgz, rootfsxxx.tgz ,firmwarexxxx.img,第一个是分区表打包文件,第二个是rootfs打包文件,第三个是固件及启动镜像。

生成完整的sd卡镜像应该采用如下命令:

flex-install -i mksdcard  -b bootpaxxxx.tgz -r rootfxxxx.tgz  -f fimwarexxx.img  xxx.img

最后的xxx.img就是生成sd卡镜像的名字

如果要更新组合的固件,可在uboot下用tftp更新, 

tftp a0000000 firmware_<machine>_uboot_sdboot.mg

mmc write a0000000 8 1f000

要注意从第八个block开始写,因为这个镜像没有开始的8个block,

而系统默认是从0x1000处开始读取rcw字节的,所以如果你把这个镜像烧写到从0开始的block就会发生悲剧,导致系统无法启动。这点和openwrt不一样,openwrt已经生成了完整的镜像,所以就不用加这个8个block的偏移了,从0开始的镜像需要用上面说的sd卡镜像生成命令,

如果想自定义RCW怎么办?

1.修改packages/firmware/u-boot/board/freescale/xxx.cfg  对于不同的配置有不同的cfg文件,对于sd 启动是ls102xa_rcw_sd_ifc.cfg,对于qspi是ls102xa_rcw_sd_qspi.cfg,具体的可以参考configs/board/ls1021atwr/manifest文件,里面有每个配置对应的文件名字,可以根据自己的实际配置修改对应的cfg文件

2.运行flex-builder -c uboot -m xxxx -b xxx

 

如果想自定义u-boot怎么办?

1.设定环境变量 ARCH=arm32|arm64, CROSS_COMPILE=arm-linux-gnueabihf-

2.进入packages/firmware/u-boot,运行make menuconfig 修改相关配置并保存

3.此时运行flex-builder会出错,所以运行make savedefconfig,把u-boot目录下的defconfig覆盖configs下对应的xxxxdefconfig,然后再运行 make mkproper以清除修改内容,当然也可以直接修改xxxdefconfig的内容也能达到同样的目的

4,运行flex-builder -c uboot -m xxxx  -b  xxx 生成u-boot镜像

如果想自定内核怎么办:

很简单,运行flex-builder -c linux:custom -a xxxx 进入menuconfig界面修改并保存,然后运行

flex-builder -c linux -a xxx  -a 

如果想修改自己程序怎么办?

进入目录apckages/apps然后编辑自己的应用和源程序及makefile.

然后运行-c 参数就可以单独编译,然后再运行 -i merge-component 合并文件,运行packrfs打包文件

 

 

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值