提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
一、交叉编译
1. 安装通用 ARM 交叉编译工具链
2. 安装 Poky 交叉编译工具链
二、编译出厂源码
1. U-boot
2. 内核和模块
3. 编译出厂 Qt GUI 综合 Demo
前言
搭建编译环境
提示:以下是本篇文章正文内容,下面案例可供参考
一、交叉编译
下面选择的 Poky 编译器是 Yocto 项目编译出的。
1. 安装通用 ARM 交叉编译工具链
该部分在裸机开发就安装好了,这里再写一遍。
Linaro GCC 编译器下载地址如下: https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/
选择下载 arm-linux-guneabihf,下载地址如下:
Linaro Releases
下完后,通过 FileZilla 传到 ubuntu 里,自行创建 linux/tool 文件夹。
然后,创建目录:
sudo mkdir /usr/local/arm
将交叉编译器复制到该目录下
sudo cp gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm/ -f
然后进入该目录,解压工具
sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz
修改环境变量
sudo vi /etc/profile
在最后面输入
export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
然后重启客户机,到此交叉编译器安装成功。
可能有些环境缺失必要的依赖库:
sudo apt-get install lsb-core lib32stdc++6
最后,我们查看是否安装成功
2. 安装 Poky 交叉编译工具链
将 fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh 拷贝到 Ubuntu 中。并给予权限,最后安装。
chmod u+x fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh
执行脚本时,连续2次回车确认,然后再输入用户密码即可。脚本默认是安装到 /opt 下。
使能环境
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
使用 arm-poky-linux-gnueabi-gcc -v 指令可以查看 gcc 版本,表明环境变量已经生效。
要使用此编译器编译内核和 U-boot 还需要安装以下软件
sudo apt-get update // 先更新软列表(本地数据库)
sudo apt-get install lzop // 安装 lzop 工具,用于生成压缩或解压镜像
sudo apt-get install libncurses* // 安装 ncurese 相关库,U-boot 或者内核菜单显示时需要
二、编译出厂源码
1. U-boot
创建目录,并将 U-boot 源码解压到该目录下
mkdir -p IMX6/uboot-imx-2016.03-2.1.0
tar xf uboot-imx-2016.03-2.1.0-g0ae7e33-v1.7.tar.bz2 -C IMX6/uboot-imx-2016.03-2.1.0/
cd IMX6/uboot-imx-2016.03-2.1.0
ls
执行 bulid.sh 即可编译 U-boot 源码。
编译完成后查看当前目录下的 tmp 文件夹编译的文件目标,*imx 是已经添加头部信息的 U-boot 镜像,可直接使用 dd 指令烧写到 TF 卡和开发板上的 eMMC 储存设备。
2. 内核和模块
mkdir -p IMX6/linux-imx-4.1.15-2.1.0
tar xf linux-imx-4.1.15-2.1.0-g3dc0a4b-v2.7.tar.xz -C IMX6/linux-imx-4.1.15-2.1.0/
cd IMX6/linux-imx-4.1.15-2.1.0
ls
解压完,运行 build.sh
3. 编译出厂 Qt GUI 综合 Demo
将 QDesktop 拷贝到 Ubuntu 家目录下。
进入到 QDesktop 目录下,
使能交叉编译环境
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
执行 qmake,生成 Makefile,然后 make -j 16。编译过和中有报警告,可忽略。编译完成如下图,编译得到的 QDesktop 文件,同时拷贝 QDestkop 和 src 文件夹,可以直接拷贝到出厂系统下直接执行./QDestkop 即可。
三、拷贝文件
准备一个示例,例如,控制 LED 的程序。
使能交叉编译环境后,qmake,make。拷贝可执行文件和 src 文件夹(如果有)到 U盘里。
用MobaXterm连接开发板时,注意串口驱动要安装CH340。
将U盘插入开发板,用指令 df 查看挂载
/dev/sda1为U盘的挂载节点,挂载目录为/run/media/sda1。
拷贝该文件到 /home/root 下
安全弹出 U盘,请用 sync 命令,来同步数据,然后退出挂载。
原来桌面的 GUI 系统,可以通过设置中退出桌面,然后就能实验 led 灯了。