15AH, San Francisco

California, United States.

Send Your Mail At:

tianyingkejishe@sina.cn

Working Hours

Mon-Sat: 9.30am To 7.00pm

【Nxp】flexbuild_lsdk2108固件编译方法

一、通用指令

一、SD卡分区格式化
flex-installer -i pf -p 5P=200M:1536M:6G:-1 -d /dev/sdx

二、需要的下载包
firmware_ls1046afrwy_uboot_sdboot.img already exists ...
bootpartition_LS_arm64_lts_4.19.tgz already exists ...
rootfs_lsdk1909_LS_arm64_main.tgz already exists ...

三、下载包清楚指令
 flex-builder clean                          # clean all obsolete firmware/linux/apps image except distro rootfs
 flex-builder clean-rfs                      # clean distro rootfs, '-r ubuntu:main -a arm64' by default
 flex-builder clean-firmware                 # clean obsolete firmware image
 flex-builder clean-apps                     # clean obsolete apps component binary image
 flex-builder clean-linux 

二、ls1046 系统定制

1、下载包生成指令

$ flex-builder -i mkfw -m ls1046afrwy -b sd

$ flex-builder -i mkrfs -r ubuntu:main -m ls1046afrwy
$ flex-builder -c apps -r ubuntu:main -m ls1046afrwy

$ flex-builder -i mkboot -m ls1046afrwy -b sd

$ flex-builder -i merge-component -r ubuntu:main -m ls1046afrwy
$ flex-builder -i packrfs -r ubuntu:main -m ls1046afrwy

$ cd build/images
$ flex-installer -r rootfs_<sdk_version>_ubuntu_desktop_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -d /dev/sdx


$ flex-installer -i pf -d /dev/sdx   (partition and format the target storage device)
$ flex-installer -b boot_LS_arm64_lts_5.10.tgz -r rootfs_lsdk2108_ubuntu_main_arm64.tgz -f firmware_ls1046ardb_sdboot.img -d /dev/sdx

2、定制内核

 flex-builder -c linux:custom -a arm64  -m ls1046afrwy -b sd
 flex-builder -c linux -a arm64 -m ls1046afrwy -b sd

 flex-builder -i mkbootpartition -a arm64 -m ls1046afrwy -b sd

3、网络配置

auto fm1-mac1
iface fm1-mac1 inet dhcp

auto fm1-mac5
iface fm1-mac5 inet dhcp

auto fm1-mac6
iface fm1-mac6 inet dhcp

auto fm1-mac10
iface fm1-mac10 inet dhcp

4、SCTP协议栈支持

需要在内核选择确定。

三、LX2160 系统定制

1、编译内核

 flex-builder -c linux:custom -a arm64  -m lx2160ardb -b sd
 flex-builder -c linux -a arm64 -m lx2160ardb -b sd

 flex-builder -i mkbootpartition -a arm64 -m lx2160ardb -b sd

2、编译文件系统

 flex-builder -i mkrfs -r ubuntu:main -m lx2160ardb
 flex-builder -i packrfs -r ubuntu:main -m lx2160ardb

3、构建BOOTLOADER

 flex-builder -c atf -m lx2160ardb -b sd
 flex-builder -i mkfw -m lx2160ardb -b sd

 flex-builder -i mkfw -m lx2160ardb_rev2 -b sd

4、下载更新

 cd build/images
 flex-installer -r rootfs_<sdk_version>_ubuntu_desktop_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -d /dev/sdx

5、网络配置

dhclient 是网卡获取IP,可以上网。
安装network-manager

四、LX2160 REV2系统定制

1、编译内核

flex-builder -c linux:custom -a arm64 -m lx2160ardb_rev2 -b sd
flex-builder -c linux -a arm64 -m lx2160ardb_rev2 -b sd
flex-builder -i mkbootpartition -a arm64 -m lx2160ardb_rev2 -b sd

2、编译文件系统

flex-builder -i mkrfs -r ubuntu:main -m lx2160ardb_rev2
flex-builder -i packrfs -r ubuntu:main -m lx2160ardb_rev2

3、构建BOOTLOADER

flex-builder -c atf -m lx2160ardb_rev2 -b sd
flex-builder -i mkfw -m lx2160ardb_rev2 -b sd

flex-builder -c atf -m lx2160ardb_rev2 -b emmc
flex-builder -i mkfw -m lx2160ardb_rev2 -b emmc

4、下载更新

cd build/images
flex-installer -r rootfs__ubuntu_desktop_arm64.tgz -b boot_LS_arm64_lts_5.10.tgz -d /dev/sdx

5、网络配置

dhclient 是网卡获取IP,可以上网。
安装network-manager

6、实时补丁

 flex-builder -c linux:custom -a arm64  -m lx2160ardb_rev2 -b sd
 flex-builder -c linux:linux:LSDK-21.08-RT -a arm64 -m  lx2160ardb_rev2 -b sd
 flex-builder -i mkbootpartition -a arm64 -m lx2160ardb_rev2 -b sd

五、ARM DPDK Kmods编译

#KSRC ?= ./../../../flexbuild_lsdk2108/components/linux/linux/
KSRC ?= ./../../../flexbuild_lsdk2108/build/linux/linux/arm64/LS/output/LSDK-21.08/
ENV:=ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

all:
	        make $(ENV) -C $(KSRC)/ M=$(PWD)

clean:
	        make $(ENV) -C $(KSRC)/ M=$(PWD) clean

六、ARM DPDK 编译

flex-builder -c openssl -a arm64 # to resolve the dependency on OpenSSL package
flex-builder -c linux -a arm64 # to resolve the dependency of KNI module
flex-builder -c dpdk -a arm64 # build dpdk application
flex-builder -c pktgen_dpdk -a arm64 # to generate dpdk pktgen application
flex-builder -c ovs_dpdk # to generate ovs-dpdk binaries
flex-builder -i merge-component -a arm64 # merge app components into target rootfs

七、启动IEEE1588

1、IEEE1588开关配置

由于硬件设置问题,需要增加启动变量bootcmd。

修改RCW,增加如下代码:
EC2_PMUX=2

获取EC2状态(最高位有效):
i2cget -y 0 0x66 0x54

设置EC2状态(最高位有效):
i2cset -y 0 0x66 0x54 0xA0

Boot获取EC2状态(最高位有效):
i2c md.0 66 54

Boot设置EC2状态(最高位有效):
i2c mw.0 66 54 a0

2、寄存器配置1pps

tmr-ctl		        devmem2 0x8b95080 w 0xA0004	
tmr-add		        devmem2 0x8b950a0 w 0xcccccccd
tmr-prsc		devmem2 0x8b950a8 w 50000
tmr-fiper1		devmem2 0x8b950d0 w 0x3B9AC9F6
tmr-fiper2		devmem2 0x8b950d4 w 0x989676
tmr-fiper3		devmem2 0x8b950d8 w 0x7A116

八、FLASH更新固件

把固件从SD卡导入内存:
load mmc $load_addr firmware_lx2160ardb_rev2_xspiboot.img
load mmc 0:4 $load_addr firmware_lx2160ardb_xspiboot.img

格式化flash:
sf probe 0:0

写入FLASH:
sf erase 0 +$filesize && sf write $load_addr 0 $filesize

复位重启:
reset
qixis_reset
qixis_reset altbank

九、ARM OpenSSL

1、编译:

$ cd flexbuild
$ source setup.env
Build cryptodev-linux:
$ flex-builder -c cryptodev_linux -a arm64 # automatically setup cross-toolchain and fetch 
cryptodev-linux repository to build
Build OpenSSL:
$ flex-builder -c openssl -a arm64
Merge OpenSSL and cryptodev-linux components into target rootfs:
$ flex-builder -i merge-component -a arm64
Generate bootpartition tarball:
$ flex-builder -i mkbootpartition -a arm64
   flex-builder -i mkbootpartition -a arm64 -m lx2160ardb_rev2 -b sd

2、配置:

cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf
修改为:
#include /etc/ld.so.conf.d/*.conf
# libc default configuration
/usr/local/lib
# Multiarch support
/usr/local/lib/aarch64-linux-gnu
/lib/aarch64-linux-gnu
/usr/lib/aarch64-linux-gnu
/usr/lib/aarch64-linux-gnu/libfakeroot

ldconfig

3、加载模块


modprobe caamalg_desc
modprobe caamhash_desc
modprobe dpaa2_caam
modprobe cryptodev
modprobe caamalg_qi
sudo modprobe caam
user@localhost:~$ sudo modprobe cryptodev
[sudo] password for user:

user@localhost:~$ ls /dev/crypto
/dev/crypto

user@localhost:~$ openssl engine
(devcrypto) /dev/crypto engine
(dynamic) Dynamic engine loading support

4、Verify the CAAM offloading

Hardware operations can be monitored with the interrupt counters for CAAM JR and QI (DPAA1 and DPAA2) interfaces.

user@localhost:~$ cat /proc/interrupts | grep jr
78: 20 0 0 0 GICv2 103 Level 1710000.jr
79: 0 0 0 0 GICv2 104 Level 1720000.jr
80: 0 0 0 0 GICv2 105 Level fsl-jr0

user@localhost:~$ openssl enc -aes-256-cfb -k secret -P -md sha1
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
salt=233157F098D1B0E8
key=D2B0C0C088AA7DAA6CF37CC856E283E3B0C3DD2BE155688DE18593EB3F997776
iv =A4E2C86E0DBA1211B5A4B02EBEFF6DC4

user@localhost:~$ cat /proc/interrupts | grep jr
78: 54 0 0 0 GICv2 103 Level 1710000.jr
79: 69 0 0 0 GICv2 104 Level 1720000.jr
80: 0 0 0 0 GICv2 105 Level fsl-jr0
anyShare分享到:
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。
stormwind