A40i &T3 全原始碼編譯-ARM Linux核心在PC Linux的編譯方法

ningmengzier發表於2020-12-29

本章講述方法,採用硬體平臺為 飛凌OKA40i開發板、OKT3開發板,已經驗證成功,其它平臺板卡,請參考使用。

 

全原始碼編譯

注意:全原始碼編譯消耗時間過長,不推薦使用。

 

1、編譯

在進行本章實驗之前,預設已經搭建好交叉編譯器環境,即交叉編譯器安裝成功。

本節介紹ARM Linux核心在PC Linux的編譯方法。

交叉編譯器路徑:lichee/out/sun8iw11p1/linux/common/buildroot/host/opt/ext-toolchain/bin。

配置交叉編譯環境:

# source /root/workspace/allwinner/A40i/bsp/lichee/env.sh

注意:使用build.sh編譯原始碼不需要配置交叉編譯環境,指令碼已經配置好。

 

1.1 製作img燒寫映象

 

 

注意:boot核心與檔案系統一起編譯。

步驟1:配置

# cd /root/workspace/allwinner/A40i/bsp/lichee/

#./build.sh config

Welcome to mkscript setup progress

All available chips:

0. sun8iw11p1

Choice: 0

All available platforms:

0. android

1. dragonboard

2. linux

3. camdroidChoice: 2

All available kernel:

0. linux-3.10

Choice: 0

All available boards:

0. OKA40i_C

1. OKT3_C

2. a40i-p3

Choice: 0

All available buildroot:

0. buildroot

1. buildroot-201611

Choice: 1

select buildroot-201611

All available float:

0. gnueabi

1. gnueabihf

Choice: 1

select gnueabihf

All available qt version:

0. 5.9.0

Choice: 0

select 5.9.0

create misc_config gnueabihf

All available lcd resolutions:

0. 480x272

1. 800x480

2. 800x600

3. 1024x600

4. 1024x600mipi

5. 1280x800

6. 800x480_v1

7. 800x600_v1

8. 1024x600_v1

9. 1024x600mipi_v1

10. 1280x800_v1

Choice: 3

注意:

當編譯T3時,選擇OKT3_C;

使用LVDS屏時:

如使用為V1.2版本核心板,選擇5. 1280x800;

如使用V1.1核心板,選擇10.1280x800_v1。

快捷辦法:直接修改.buildconfig export LICHEE_RESOLUTION=1080p使用hdmi獨立顯示方法。

步驟2:編譯

# cd /root/workspace/allwinner/A40i/bsp/lichee/

#./build.sh

步驟3:編譯Qt (可選)

釋放Qt OpenGLlib到交叉編譯器位置,檔案儲存位置(編譯過程報找不到GLESv2)。

1 使用者資料\Linux\linux\工具\sysroot.tar.gz

# cd /root/workspace/allwinner/A40i/bsp/lichee/out/sun8iw11p1/linux/common/buildroot/host/usr/arm-buildroot-linux-gnueabihf

# tar xvf sysroot.tar.gz

#最終生成sysroot替換沒有Mali庫的sysroot。

注意:如果出現路徑錯誤,請把/root/workspace/allwinner/A40i/bsp/lichee/buildroot-201611/dl/qt-everywhere-opensource-src-5.9.0 刪除,重新釋放壓縮包,並且複製/root/workspace/allwinner/A40i/bsp/lichee/buildroot-201611/dl/setenvs.sh到新釋放的qt-everywhere-opensource-src-5.9.0目錄中去。

#cd /root/workspace/allwinner/A40i/bsp/lichee/buildroot-201611/dl/qt-everywhere-opensource-src-5.9.0

# source setenvs.sh #虛擬機器編譯的話setenv.sh 97行修改成 -j 1 表示並行編譯的現成數量,否則當機

# makeconfig

# makeall

# makeinstall

# cd /root/workspace/allwinner/A40i/bsp/lichee/

# rm -fr `find ./linux-3.10 -name “*.o” ` #編譯前要刪除linux-3.10/*.o

# ./build.sh

注意:編譯過程核心報錯,有兩種解決辦法:

1 cd /root/workspace/allwinner/A40i/bsp/lichee/

rm -fr `find ./ linux-3.10 -name “*.o” `

2 cd /root/workspace/allwinner/A40i/bsp/lichee/

cd linux-3.10

make distclean

步驟4:打包

# cd /root/workspace/allwinner/A40i/bsp/lichee/

#./build.sh pack

/root/workspace/allwinner/A40i/bsp/lichee/tools/pack/sun8iw11p1_linux_OKA40i_C_uart0-1024x600.img

生成的燒寫映象。

 

 

注意:客戶可根據自身要求選做,操作結束需要重新編譯,打包。

Ø 命令行模式程式新增

在lichee/buildroot-201611/target/user_rootfs_apps/cmd/subs 複製一個資料夾改名字

複製rtc helloworld

# cp -fr rtc helloworld

# cd helloworld

修改檔名字

#mv rtc.c helloworld.c

修改Makefile

# vi Makefile

修改後

TARGET = helloworld

@$(CC) -o $(TARGET) helloworld.c

配置參與編譯列表

cd lichee/buildroot-201611/target/user_rootfs_apps/cmd/configs

vi cmd_defconfig

新增

helloworld

qt5 gui模式程式新增

在lichee/buildroot-201611/target/user_rootfs_apps/qt5/subs 複製一個資料夾改名字

# cp -fr hello_gui helloworld

# cd helloworld

修改檔名字

#mv hello_gui.pro helloworld.pro

修改qt5工程檔案

TARGET= helloworld

注意:要新增庫的路徑

LIBS += -L../../../../../../tools/pack/chips/sun8iw11p1/hal/gpu/fbdev/lib/ -lGLESv2

修改Makefile

# vi Makefile

修改後

TARGET = helloworld

配置參與編譯列表

cd lichee/buildroot-201611/target/user_rootfs_apps/qt5/configs

vi qt5_defconfig

新增

helloworld

硬體編碼解碼程式所在路徑

lichee/buildroot-201611/target/user_rootfs_misc

點此瞭解飛凌嵌入式A40i核心板>>

相關文章