搜索
bottom↓
回复: 0

《I.MX6U用户快速体验》第四章 ATK I.MX6U交叉编译

[复制链接]

出0入234汤圆

发表于 2021-5-31 11:52:52 | 显示全部楼层 |阅读模式
本帖最后由 正点原子 于 2021-5-31 12:06 编辑

1)实验平台:正点原子i.MX6ULL Linux阿尔法开发板
2)  章节摘自【正点原子】《I.MX6U用户快速体验》
3)购买链接:https://item.taobao.com/item.htm?&id=603672744434
4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/arm-linux/zdyz-i.mx6ull.html
5)正点原子官方B站:https://space.bilibili.com/394620890
6)正点原子linux技术交流群:820906224
O1CN01abYcZO23XsL4ETed4_!!230947266.png

原子哥在线教育平台.jpg

152443zfu1nrzhhhh6wuc8.png

第四章 ATK I.MX6U交叉编译



搭建交叉编译环境是学习Linux很重要的一步,正点原子提供两种交叉编译工具链。这两种交叉编译工具链解释如下图。这两种编译器都有各自的作用,我们只要在相应的实验里使用指定的交叉编译工具链即可,切勿混着用。


第四章 ATK I122.png

图4 1 资料提供的两种交叉编译工具链


很多用户容易将上面两种交叉编译工具搞混。我们只需要知道上面的第二种通用的交叉编译器去学习【正点原子】I.MX6U嵌入式Linux驱动开发指南这本教程。第一种Poky编译器是Yocto项目编译出的,常用于编译开发板光盘A-基础资料->1、例程源码->3、正点原子Uboot和Linux出厂源码及快速编译Qt应用程序到开发板上运行。
4.1 安装通用ARM交叉编译工具链
详细请看【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.x.pdf的第4.3小节,这里不再重复写了。学习教程时需要再看,我们继续往下看其他部分。
4.2 安装Poky交叉编译工具链
把开发板光盘A-基础资料->5、开发工具->1、交叉编译器->fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh拷贝到Ubuntu虚拟机
如下图本文已经把交叉编译工具拷贝到了Ubuntu虚拟机。


第四章 ATK I603.png


图4.2 1 拷贝sdk工具包到ubuntu系统里


执行下面的指令修改脚本的权限,修改权限后可以看到此脚本颜色显示改变,说明修改成功。

  1. chmod u+x fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh
复制代码



直接执行脚本安装交叉编译工具,连续敲下两次回车键确认,再输入用户密码即可。本次安装的目录为脚本所指定的默认安装的目录,后面的内核编译环境的交叉编译都是按这个安装目录去操作,所以建议用户也是默认安装到/opt/fsl-imx-x11/4.1.15-2.1.0这个默认目录。



第四章 ATK I929.png

图4.2 2 安装sdk工具到默认的目录


使用方法也十分简单,根据上面打印出来的提示,直接使能环境变量就可以了。但是在不同终端或者切换用户时需要重新使能环境变量方可使用。
  1. source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
复制代码





第四章 ATK I1107.png

图4.2 3 使能环境变量


使能环境变量后可以使用env指令查看生效的环境变量,下图为部分截图,可以看出使能了这个环境变量后gcc已经配置好编译时所用的参数,如硬浮点参数-mfpu=neon -mfloat-abi=hard。使用硬浮点交叉编译,可以使用CPU自带FPU。下图为环境变量部分截图。
env


第四章 ATK I1262.png

图4.2 4 查看使能后的环境变量


使用arm-poky-linux-gnueabi-gcc -v指令可以查看gcc版本,表明环境变量已经生效。
  1. arm-poky-linux-gnueabi-gcc --version
复制代码


第四章 ATK I1374.png

图4.2 5 查看gcc版本信息


要使用此编译器编译内核和U-boot还需要安装以下软件。
  1. sudo apt-get update                // 先更新软列表
  2. sudo apt-get install lzop        // 安装lzop工具,用于生成压缩或解压镜像
  3. sudo apt-get install libncurses* // 安装ncurese相关库,U-boot或者内核菜单显示时需要
复制代码



4.3 编译出厂源码U-boot
将开发板光盘A-基础资料->1、例程源码->3、正点原子Uboot和Linux出厂源码->uboot-imx-2016.03-2.1.0-gxxxxxx-vxx.tar.bz(x代表未版本,可能为.xz格式或者.bz2格式) U-boot源码解压到Ubuntu拷贝到虚拟机Ubuntu家目录(当前用户目录)下,使用tar指令解压。
先在家目录创建一个IMX6/uboot-imx-2016.03-2.1.0目录,并将U-boot源码解压到此目录。
  1. mkdir -p IMX6/uboot-imx-2016.03-2.1.0
  2. tar xf uboot-imx-2016.03-2.1.0-gd3f0479-v1.4.tar.xz -C IMX6/uboot-imx-2016.03-2.1.0/
  3. cd IMX6/uboot-imx-2016.03-2.1.0
  4. ls
复制代码


第四章 ATK I1969.png


图4.3 1 拷贝U-boot源码到Ubtuntu虚拟机

在编译U-boot之前,前提需要先安装4.2小节的Poky交叉编译工具链。
我们在Linux源码里写了一个脚本,脚本里已经配置好deconfig文件,和编译的目标文件。我们直接执行build.sh,即可编译U-boot源码。编译的目标文件会在当前U-boot源码顶层目录下的tmp文件夹里。
build.sh                // 开始编译出厂U-boot源码,生成u-boot.imx,第一级启动引导文件。
复制代码


第四章 ATK I2259.png


图4.3 2 执行build.sh脚本,编译U-boot源码


编译完成后查看当前目录下的tmp文件夹编译的文件目标,*imx是已经添加头部信息的U-boot镜像,可直接使用dd指令烧写到TF卡和开发板上的eMMC储存设备,详细请参考【正点原子】I.MX6U 开发板文件拷贝及固件更新参考手册V1.x.pdf;*bin是未添加状信息的U-boot镜像,需要使用【正点原子】I.MX6U嵌入式Linux驱动开发指南里所说的imxdownload工具烧写。



第四章 ATK I2510.png

图4.3 3 编译完成并查看编译的目标文件


4.4 编译出厂源码内核及模块
将开发板光盘A-基础资料->1、例程源码->3、正点原子Uboot和Linux出厂源码->linux-imx-4.1.15-2.1.0-gxxxxxx-vxx.tar.xz(x代表未知版本,可能为.xz格式或者.bz2格式)Linux源码拷贝到Ubuntu拷贝到虚拟机Ubuntu家目录(当前用户目录)下,使用tar指令解压。
首先在家目录下创建IMX6/linux-imx-4.1.15-2.1.0目录,我们将Linux源码解压到此目录下。
  1. mkdir -p IMX6/linux-imx-4.1.15-2.1.0
  2. tar xf linux-imx-4.1.15-2.1.0-gb78e551-v1.4.tar.xz -C IMX6/linux-imx-4.1.15-2.1.0/
  3. cd IMX6/linux-imx-4.1.15-2.1.0
  4. ls
复制代码






第四章 ATK I2949.png

图4.4 1解压Linux源码后查看内核源码目录下的文件


在编译内核之前,前提需要先安装4.2小节的Poky交叉编译工具链。
我们在Linux源码里写了一个脚本,脚本里已经配置好deconfig文件,和编译的目标文件。我们直接执行build.sh,即可编译Linux源码。编译的目标文件会在当前Linux源码顶层目录下的tmp文件夹里。
  1. build.sh                // 开始编译出厂Linux源码,包括zImage,dtb和modules。
复制代码






第四章 ATK I3230.png

图4.4 2 执行build.sh编译Linux源码


编译完成,及查看tmp目录下的编译目标文件,如下图,包含很多dtb文件(设备树),及Linux内核zImage,还有modules.tar.bz2(内核模块)。



第四章 ATK I3363.png

图4.4 3 编译完成及查看编译后的目标文件


更新内核的方法请参考【正点原子】I.MX6U 开发板文件拷贝及固件更新参考手册V1.x.pdf文档。
4.6 编译出厂Qt GUI综合Demo
在编译出厂Qt GUI之前,前提需要先安装4.2小节的Poky交叉编译工具链。
拷贝开发板光盘A-基础资料->1、例程源码->9、Qt综合例程源码下的QDestkop文件夹到Ubuntu虚拟机。如下图,编者已经拷贝到虚拟机家目录(用户目录)下,查看QDesktop目录下的文件如下。



第四章 ATK I3663.png

图4.6 1 拷贝QDesktop工程到Ubuntu虚拟机


使能第4.2小节的交叉编译环境变量。

  1. source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
复制代码





第四章 ATK I3865.png

图4.6 2 使能交叉编译环境变量


执行qmake,生成Makefile,用于编译。
  1. qmake
复制代码





第四章 ATK I3939.png


图4.6 3 生成Makefile用于编译


执行make,开始编译Qt综合Demo。
make -j 16        // -j 16是允许最大同时16条编译任务同时执行,16一般取分配虚拟机的核心数的2倍


编译过和中有报警告,可忽略。编译完成如下图,编译得到的QDesktop文件,可以直接拷贝到出厂系统下直接执行./QDestkop即可。

第四章 ATK I4131.png


图4.6 4 编译成功,生成QDesktop可执行文件


在开发板运行后的桌面如下,Qt Demo的用法都在每个App里右上角的“关于”页面可查看。


第四章 ATK I4230.png

图4.6 5 出厂GUI第一屏演示


4.7 编译一个简单的c文件
在编译出厂Qt GUI之前,前提需要先安装4.2小节的Poky交叉编译工具链。
本文新建一个test文件夹,在test文件夹下编辑一个main.c文件,使用vi/vim指令,复制下面的内容。程序功能是打印一句“hello world!”,拷贝以下内容到vi/vim编辑器窗口里。按i进入插入模式,右键进行粘贴内容,粘贴成功后按ESC键退出编辑模式,然后输入:wq保存并退出。
  1. mkdir test
  2. cd test
  3. vi main.c
  4. 在main.c复制粘贴下面的内容。
  5. #include <stdio.h>
  6. int main(void)
  7. {
  8.         printf("hello world!\n");
  9.         return 0;
  10. }
复制代码

如果您在上文已经使能过环境变量就不用再执行下面这一步了。
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi


编译main.c文件,指令解释
(1)$CC :$是取值符号,取终端的环境变量CC的值.
(2)main.c :c文件
(3)-o :参数-o,后面加编译的目标文件
$CC main.c -o main
或者写成下面这样来编译main.c文件也是可以的,实际是把$CC的值换成了如下,下面为一条指令,由于PDF格式问题,建议分段复制。
  1. arm-poky-linux-gnueabi-gcc  -march=armv7ve -mfpu=neon  -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=$SDKTARGETSYSROOT main.c -o main
复制代码




第四章 ATK I5022.png


图4.7 1 编译main.c


编译好的main文件,直接拷贝到出厂系统里,在串口终端执行./main,结果是串口打印一句“hello world!”。

回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 21:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表