本帖最后由 琳子 于 2020-12-8 14:24 编辑
本章讲述方法,采用硬件平台为 飞凌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. camdroid Choice: 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
|