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 卡)