一、通用指令
一、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