LS1028A QorIQ LS系列的編譯環境 FlexBuild使用
FlexBuild使用
請不要跳過這段話:
開發環境是開發人員在開發過程當中,所需的軟硬件平臺。開發環境并不是一個固定的樣式,在這里,我們詳細講解一個嵌入式Linux開發環境搭建的方法。您已經對嵌入式開發非常了解的話,可以按照自己的需求來搭建環境。如果和本手冊環境不一樣而產生報錯,您可以從國內一些大Linux論壇和網站搜索相關的信息來解決。本冊介紹的環境經過飛凌的測試,如果對嵌入式開發不是非常熟悉的朋友,希望您按照飛凌提供的方法來搭建環境。
一、 版本說明及硬件平臺
操作系統:Ubuntu18.04 64位版
交叉工具鏈:aarch64-linux-gnu-gcc
SDK版本:LSDK-20.04-V5.4.3
硬件平臺:OK1028A-C開發板 ( 基于NXP Layerscape LS1028A CPU )
二、 編譯環境搭建
1、編譯環境說明
flexbuild是NXP官方提供的QorIQ LS系列的編譯環境,飛凌在NXP官方版本的flexbuild的基礎上針對OK1028A-C平臺進行了定制修改,更適合用戶快速開發。flexbuild中提供了整個系統編譯需要的所有源碼,比如linux內核、uboot、firmware、app程序以及一個完整的文件系統。對于文件系統,用戶可直接使用,當然您也可以選擇從零編譯一個文件系統,但是相比飛凌提供的文件系統會缺少一部分配置,不建議您這樣做。
Flexbuild默認只支持ubuntu18,當然它也支持docker,由于大多數用戶對docker并不熟悉,因此強烈建議您使用飛凌提供的ubuntu18虛擬機進行編譯開發。注意:虛擬機用戶名為forlinx,密碼為forlinx。
LS1028系列 OK1028A-C開發板軟件鏡像編譯整體分為兩部分,第一部分為啟動第一階段相關內容,主要包含了rcw、u-boot、網絡相關固件、安全相關固件,整體被編譯為一個16M的firmware鏡像。第二部分是ubuntu文件系統。
2、編譯環境搭建
2.1、下載flexbuild包并解壓
路徑:OK1028-C(Linux)用戶資料\Linux\源碼\OK1028-linux-fs.tar.bz2
注意:編譯過程中請全程使用root用戶操作
root@ubuntu:~$ sudo -s (此時要求密碼,密碼為1)
將OK1028-linux-fs.tar.bz2放到虛擬機/home/forlinx/work目錄
root@ubuntu:~$ mdkir -p /home/forlinx/work
root@ubuntu:~$ tar xvf OK1028-linux-fs.tar.bz2 -C /home/forlinx/work
root@ubuntu:~$ cd /home/forlinx/work/OK1028-linux-fs/flexbuild
2.2、主要目錄/文件簡介
packages |
源碼目錄,含有linux firmware apps ramdisk的源碼 |
build |
編譯目錄,用于編譯過程產生的臨時文件,編譯結果位于build/images目錄 |
configs |
編譯配置,flexbuild適用于多個平臺,針對不同平臺的配置信息 |
tools |
編譯工具,flex-builder flex-installer等 |
setup.env |
用于配置編譯環境變量 |
2.3、設置環境變量
root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ source setup.env
注意:整個flexbuild環境以該操作為基礎,如果您重啟了虛擬機或者Shell終端都需要重新執行該操作。
三、 全部編譯
第一次進行編譯時,建議您使用全部編譯命令進行編譯,好處是操作簡單,只需要一條命令就可以編譯出所有需要的文件。
root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -m ls1028ardb -r ubuntu:main
生成的文件位于build/images目錄:
四、 打包燒寫鏡像
root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ ./sdfuseIMG.sh
將在OK1028-linux-fs目錄生成images.tar.bz2,后續可以直接解壓到燒寫U盤中。
五、 單獨編譯Firmware
Ls系列的芯片在啟動時需要加載一些固件,例如rcw(復位控制字),uboot等,在開發過程中如果您對上述文件進行了修改,就需要重新編譯并將這些文件制打包成一個firmware鏡像文件,燒寫到啟動設備中,編譯firmware的命令為:
root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -i clean-firmware
編譯Firmware:
EMMC啟動:
root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -i mkfw -a arm64 \
-m ls1028ardb -b emmc
TF卡啟動:
root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -i mkfw -a arm64 \
-m ls1028ardb -b sd
XSPI啟動:
root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -i mkfw -a arm64 \
-m ls1028ardb -b xspi
OK1028支持EMMC、TF卡、XSPI啟動,需要將特定的Firmware燒寫到對應的介質中。
六、 單獨編譯內核及模塊
LS1028A平臺默認的配置文件為:packages/linux/linux/arch/arm64/configs/ok1028_defconfig
清除之前編譯文件:
root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -i clean-linux
編譯內核:
root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -c linux -a arm64 -m ls1028ardb
將編譯好的內核、設備樹文件更新到build/images目錄:
root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -i mkboot -m ls1028ardb
注意:單獨編譯內核及模塊時,務必執行mkboot操作,以便后續打包燒寫鏡像。
配置內核(如果使用默認配置可略過)
root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -c linux:custom -m ls1028ardb -a arm64
生成的配置文件為:build/linux/linux/arm64/LS/output/.config
可以將改動過后的文件覆蓋:packages/linux/linux/arch/arm64/configs/ok1028_defconfig
七、 單獨編譯app程序
packages/apps包含了飛凌LS1028A平臺相關的上層應用層工具例如OpenSSL如果您對這部分的源碼有所改動,需要使用以下命令單獨編譯:
編譯命令如下:
root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder -c apps -m ls1028ardb
注意:為了加快編譯速度,默認飛凌已經將默認編譯好的二進制程序集成到文件系統基礎包中,默認編譯文件系統時不再編譯此類app程序,如果您對packages/apps/目錄的代碼有修改,可修改configs/build_lsdk.cfg開啟對應軟件的編譯選項,例如CONFIG_APP_DPDK=y。
更新app到文件系統中:
root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder
-i merge-component -a arm64 -m ls1028ardb
重新生成ubuntu鏡像:root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ flex-builder
-i packrfs -r ubuntu:main -m ls1028ardb
此外,飛凌提供的命令行和Qt測試程序位于packages/rfs/ls1028_ubuntu_main_overlay/forlinx/apps目錄,該目錄的測試程序將在編譯文件系統的過程中自動構建,您可以使用如下方式進行構建:
以qt can測試程序為例:
root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ mount -o bind /dev build/rfs/rootfs_lsdk2004_ubuntu_main_arm64/dev
root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ chroot build/rfs/rootfs_lsdk2004_ubuntu_main_arm64 /bin/bash
root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ cd /forlinx/apps/forlinx-qt/can/
root@ubuntu:/forlinx/apps/forlinx-qt/can# qmake
root@ubuntu:/forlinx/apps/forlinx-qt/can# make
root@ubuntu:/forlinx/apps/forlinx-qt/can# make install
退出編譯環境:
root@ubuntu:/forlinx/apps/forlinx-qt/can# exit
root@ubuntu:~/work/OK1028-linux-fs/flexbuild$ umount build/rfs/rootfs_lsdk2004_ubuntu_main_arm64/dev
相關產品 >
-
OK1028A-C開發板
LS028A 系列-LS1028開發板 雙核Cortex-A72 設計 TSN網絡支持 ,工業級 LS1028A開發板 提供了一個用于設計和評估LS1028A處理器設計核心板的平臺。支持TSN的以太網交換機和以太網控制器,可支持融合的IT和OT網絡;支持CANFD、UART 、USB3.0、PCIe3.0、SATA3.0、IIS、IIC、SPI 等常用總線接口,并支持一個最大分辨率4K的DP接口。ls1028a 適用于工業路由器、TSN、SD-WAN、 5G CPE 、邊緣計算網關 、IP-PBX等產品,以及工業互聯、智慧工廠、工業安全、信息安全、智慧交通、能源物聯網 等應用領域。 了解詳情 -
FET1028A-C核心板
LS1028A-C核心板基于NXP LS1028A處理器設計,雙核ARM Cortex - A72,主頻最高1.6GHz,板載2GB DDR4 RAM,8GB ROM;原生支持6個Gbit Ethernet,支持TSN的以太網交換機和以太網控制器,可支持融合的IT和OT網絡;支持CAN FD、UART、USB3.0、PCIe3.0、SATA3.0、IIS、IIC、SPI等常用總線接口,并支持一個最大分辨率4K的DP接口。適用于工業路由器、TSN、SD-WAN、5G CPE、邊緣計算網關、IP-PBX等產品,以及工業互聯網、智慧工廠、工業安全、信息安全、智慧交通、能源物聯網等應用領域。 了解詳情