OK1046a-C2 FlexBuild 使用记录

FlexBuild 使用

编译环境搭建

命令 路径
执行下列命令的路径 orlinx@ubuntu:~$
创建work目录 mkdir -p /home/forlinx/work
使用 root 用户操作 sudo -s
执行下列命令的路径 root@ubuntu:~$
解压到work目录 tar xvf OK10xx-linux-fs.tar.bz2 -C /home/forlinx/work
进入指定目录 cd /home/forlinx/work/OK10xx-linux-fs/flexbuild
执行下列命令的路径 root@ubuntu:~/work/OK10xx-linux-fs/flexbuild$
设置环境变量 source setup.env

FlexBuild目录文件简介

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
forlinx@ubuntu:~/work/OK10xx-linux-fs/flexbuild$ tree -L 1
.
├── build
├── configs
├── docker
├── docs
├── include
├── LICENSE
├── logs
├── Makefile
├── packages
├── README.md
├── setup.env
└── tools
8 directories, 4 files
packages build configs tools setup.env
源码目录,含有 linux firmware apps ramdisk 的源码 编译目录,用于编译过程产生的临时文件,编译结果位于 build/images 目录 编译配置,flexbuild 适用于多个平台,针对不同平台的配置信息 编译工具,flex-builder flex-installer 等 用于配置编译环境变量

全部编译

命令 路径
执行下列命令的路径 forlinx@ubuntu:~/work/OK10xx-linux-fs/flexbuild$
之前编译过 apps执行清空 flex-builder -i clean-apps build/apps/components_arm64
全部编译 flex-builder -a arm64 -m ls1046ardb build/images
生成的文件位于 build/images 目录

Image目录文件简介

1
2
3
4
5
6
7
8
9
10
11
12
13
14
forlinx@ubuntu:~/work/OK10xx-linux-fs/flexbuild/build/images$ tree
.
├── boot
│   ├── fsl-ls1046a-rdb-sdk-1133-5a59.dtb
│   ├── Image
│   └── ls1046ardb_boot.scr
├── config.ini
├── firmware_ls1046ardb_uboot_qspiboot_1133_5a59.img
├── firmware_ls1046ardb_uboot_sdboot_1133_5a59.img
├── ls1046ardb_update.scr
├── ubuntu.img
└── usb_update.itb
1 directory, 9 files

Scripts Tools Rootfs Firmware Config Boot
ls1046ardb_update.scr usb_update.itb ubuntu.img openwrt.img firmware_ls1046ardb_uboot_qspiboot_1133_5a59.img firmware_ls1046ardb_uboot_sdboot_1133_5a59.img config.ini 内核及设备树等

单独编译Firmware

命令 路径
执行下列命令的路径 forlinx@ubuntu:~/work/OK10xx-linux-fs/flexbuild$
执行清空 flex-builder -iclean-firmware
编译qspi flex-builder -c firmware -a arm64 -m ls1046ardb -b qspi -S 1133 build/firmware/u-boot/ls1046ardb/uboot_ls1046ardb_qspi.bin
编译sd flex-builder -c firmware -a arm64 -m ls1046ardb -b sd -S 1133 build/firmware/u-boot/ls1046ardb/uboot_ls1046ardb_sdcard_1133_5a59.bin
生成镜像qspi flex-builder -i mkfw -a arm64 -m ls1046ardb -b qspi -S 1133 build/images/firmware_ls1046ardb_uboot_qspiboot_1133_5a59.img
生成镜像sd flex-builder -i mkfw -a arm64 -m ls1046ardb -b sd -S 1133 build/images/firmware_ls1046ardb_uboot_sdboot_1133_5a59.img

单独编译内核及模块

命令 路径
执行下列命令的路径 forlinx@ubuntu:~/work/OK10xx-linux-fs/flexbuild$
默认(修改覆盖)配置文件 packages/linux/linux/arch/arm64/configs/ls1046_defconfig
执行清空 flex-builder -i clean-linux build/linux
配置内核及配置文件路径 flex-builder -c linux:custom -m ls1046ardb -a arm64 build/linux/linux/arm64/output/LSDK-18.06-V4.14/.config
编译内核 flex-builder -c linux -a arm64 -m ls1046ardb build/linux/linux/arm64
编译cryptodev驱动 flex-builder -c cryptodev-linux -a arm64 -m ls1046ardb packages/linux/crytodev-linux
驱动模块更新到文件系统 flex-builder -i merge-component -a arm64 -m ls1046ardb build/rfs/rootfs_ubuntu_bionic_arm64
重新生成ubuntu镜像 flex-builder -i compressrfs -m ls1046ardb build/images/ubuntu.img
内核、设备树文件更新到 build/images 目录 flex-builder -i genboot -m ls1046ardb build/images/boot

单独编译 app 程序

命令 路径
执行下列命令的路径 forlinx@ubuntu:~/work/OK10xx-linux-fs/flexbuild$
之前编译过 apps执行清空 flex-builder -i clean-apps build/apps/components_arm64
更新 app 到文件系统 flex-builder -i merge-component -a arm64 -m ls1046ardb build/rfs/rootfs_ubuntu_bionic_arm64
重新生成 ubuntu 镜像 flex-builder -i compressrfs -m ls1046ardb build/images/ubuntu.img

TFTP 烧写 QSPI

TFTP 环境搭建

命令 路径
执行下列命令的路径 forlinx@ubuntu:~/work$
安装 tftp-hpa 和 tftpd-hpa sudo apt-get install tftp-hpa tftpd-hpa xinetd
重新启动 tftp 服务 sudo service tftpd-hpa restart
tftp 配置文件 cat /etc/default/tftpd-hpa /etc/default/tftpd-hpa
行本地 tftp 测试 目录权限 sudo chmod 777 -R /var/lib/tftpboot
写入测试内容 echo "tl8517.com" > /var/lib/tftpboot/test
本地TFTP tftp localhost
下载test当前目录 get test
退出TFTP q
当前test内容 cat test

TFTP 烧写 QSPI

命令 路径
执行下列命令的路径 forlinx@ubuntu:~/work/OK10xx-linux-fs/flexbuild$
虚拟机 IP ifconfig
拷贝 Firmware 文件到 TFTP 目录 cp build/images/firmware_ls1046ardb_uboot_qspiboot_1133_5a59.img /var/lib/tftpboot/
开发板停留在 uboot 命令行
配置开发板 IP setenv ipaddr 10.1.1.111
配置 Server IP setenv serverip 10.1.1.100
Ping 测试 ping 10.1.1.100
下载文件到内存 tftp 0x90000000 firmware_ls1046ardb_uboot_qspiboot_1133_5a59.img
检测QSPI FLASH sf probe 0:0
擦除指定位置,指定长度的flash内容 sf erase 0 0x1000000
写内存数据到flash sf write 0x90000000 0 0x1000000
重启 reset

制作 TF 卡启动

命令 路径
执行下列命令的路径 forlinx@ubuntu:~/work$
查看设备节点 ls /dev/sdb*
firmware_ls1046ardb_uboot_sdboot_1040_5559.img 放到 Ubuntu 的 work 目录
烧写 firmware 到 TF 卡 sudo dd if=firmware_ls1046ardb_uboot_sdboot_1040_5559.img of=/dev/sdb seek=8 bs=512

U 盘烧写 eMMC 和 QSPI

U盘FAT32分区内的文件(同FlexBuild生成的文件):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
forlinx@ubuntu:/media/forlinx/a$ tree
.
├── boot
│   ├── fsl-ls1046a-rdb-sdk-1133-5a59.dtb
│   ├── Image
│   └── ls1046ardb_boot.scr
├── config.ini
├── firmware_ls1046ardb_uboot_qspiboot_1133_5a59.img
├── firmware_ls1046ardb_uboot_sdboot_1133_5a59.img
├── ls1046ardb_update.scr
├── ubuntu.img
└── usb_update.itb

1 directory, 9 files

如果开发板 QSPI 无法启动将config.ini中的 “qspiflsh” 改为true

1
2
3
4
5
6
7
8
9
forlinx@ubuntu:/media/forlinx/a$ cat config.ini 
[config]
platform=ok1046-c
qspifirmware=firmware_ls1046ardb_uboot_qspiboot_1133_5a59.img
sdfirmware=firmware_ls1046ardb_uboot_sdboot_1133_5a59.img
rootfs=ubuntu.img
qspiflash=true
emmcflash=true

TF 卡启动开发板,停在uboot 命令行,此时弹出 TF 卡,系统自动将切换到 eMMC,输入 boot 进入烧写流程。(如果您 QSPI 能够正常引导系统,那么仅插入 U 盘启动系统即可,无需操作 TF 卡)