您已经对嵌入式开发非常了解的话,可以按照自己的需求来搭建环境。如果和本手册环境不一样而产生报错,您可以从国内一些知名 Linux 论坛和网站搜索相关的信息来解决。本册介绍的环境经过飞凌的测试,如果对嵌入式开发不是非常熟悉的朋友,希望您按照飞凌提供的方法来搭建环境。
注意:飞凌默认提供的开发环境中已经默认安装交叉编译工具链及 Qtcreator 桌面应用程序,可以直接跳转到第二部分,无需重新安装。
版本说明 操作系统:Ubuntu18.0464 位版 交叉工具链:aarch64-poky-linux-gcc
飞凌 OKMX8MQ-linux-sdk 包括两部分,第一部分为编译环境包,里面包含了交叉编译器和 sysroot,第二部分为源码包,包括 Linux 内核、文件系统、测试程序源码以及一些工具等。
编译之前,请执行一下命令安装必要的工具包。
$ sudo apt-get update
$ sudo apt-get install openssh-server vim git fakeroot make
automake autoconf libtool libssl-dev bc
dosfstools mtools parted iproute2 gcc kmod
安装编译环境
编译环境是我们开发过程中的基础,首先我们来安装编译环境。
创建工作目录$ mkdir -p /home/forlinx/imx8mq
并将用户资料:
路径:OKMX8MQ-C(Linux)用户资料 工具 交叉编译工具 fsl-imx-xwayland-glibc-x86_64-meta-toolchain-qt5-aarch64-toolchain-5.4-zeus.sh
拷贝到虚拟机 /home/forlinx/imx8mq 目录
$ cd /home/forlinx/imx8mq
$./fsl-imx-xwayland-glibc-x86_64-meta-toolchain-qt5-aarch64-toolchain-5.4-zeus.sh
将安装路径设置保持默认,敲回车。
输入“Y”进行确认,等待安装完成。
安装完成后执行
$. /opt/fsl-imx-xwayland/5.4-zeus/environment-setup-aarch64-poky-linux
设置环境变量。
并输入
$ aarch64-poky-linux-gcc -v
检查安装是否成功。出现如下信息代表安装成功。
注意:每当重启虚拟机或者打开新的 shell 窗口都需要重新执行设置环境变量。
安装源码包
源码包中包含了飞凌提供的 OKMX8MQ 平台的需要用到的源代码,包括 Linux 内核源码、测试程序源码、文件系统等,您可以在此基础上进行二次开发。
将用户资料:
路径:OKMX8MQ-C(Linux)用户资料 Linux 源码 OK8MQ-linux-sdk.tar.bz2
拷贝到虚拟机 /home/forlinx/imx8mq 目录
$ cd /home/forlinx/imx8mq
$ tar xvf OK8MQ-linux-sdk.tar.bz2
编译测试
进入源码目录
$ cd /home/forlinx/imx8mq/OK8MQ-linux-sdk
❶ 全编译测试
通过设置环境变量选择编译 2GB 内存镜像或 4GB 内存镜像
2GB 内存:
$ . environment-setup-sourcetree
4GB 内存:
$ . environment-4gddr-setup-sourcetree
然后,编译:
$ make
编译完成后,将在 images 生成镜像文件。
❷ 单独编译内核
编译:$ make linux
注意:编译时,系统会自动拷贝配置文件 arch/arm64/configs/imx_v8_defconfig 覆盖内核根目录的 .config 文件。
清除:$ make linux_clean
清除编译 linux 内核生成的文件
❸ 单独编译命令行测试程序
编译:$ make cmd-examples
安装:$ make cmd-examples_install
执行完会将命令行测试程序安装到文件系统 /usr/bin/cmd 目录
清除:$ make cmd-examples_clean
❹ 单独编译 Qt 测试程序
编译:$makeqt-examples
安装:$ make qt-examples_install
执行完会将 qt 测试程序安装到文件系统 /home/forlinx/qt B 目录
清除:$ make qt-examples_clean
Qt 开发环境搭建及使用
飞凌提供的 SDK 中提供了 Qt5.13.2 的完整开发环境(包含 Qt Quick)。
❶ 手动编译
设置编译环境变量:
$. /opt/fsl-imx-xwayland/5.4-zeus/environment-setup-aarch64-poky-linux
以飞凌提供的 Qt 官方串口测试程序为例,演示命令行 Qt 程序编译方法:
$ cd /home/forlinx/imx8mq/appsrc/qt/
$ qmake
$ make
❷ Qt creator 环境搭建
注意:飞凌默认提供的开发环境中已经默认安装交叉编译工具链及 Qt creator 桌面应用程序,可以直接跳转到下一环节,无需重新安装。
路径:OKMX8MQ-C(Linux)用户资料 工具 qt-creator-opensource-linux-x86_64-4.7.0.run
将 qt-creator-opensource-linux-x86_64-4.1.0.run 拷贝至当前用户家目录下的任意目录下,执行:
$ ./qt-creator-opensource-linux-x86_64-4.7.0.run
将会弹出如下界面,点击“Next”进入下一步:
在如下界面中,点击“Skip”进入下一步(若虚拟机压缩):
在如下界面中,点击“Next”进入下一步:
在如下界面中,点击“Browse…”选择 Qtcreator 的安装路径,选择完成后,点击“Next”进入下一步:
在如下界面中,选中第一项,点击“Next”进入下一步:
保持默认设置,点击“Next”:
点击 Install 安装:
安装完成后,显示如下界面,取消选项“Launch Qt Creator”的勾选,点击“Finish”完成 Qtcreator 的安装步骤:
执行 :
$ cd /home/forlinx/qtcreator-4.7.0/bin/
$ ./qtcreator
启动 Qt creator 程序,点击 Tools->options 选项
进入到 Options 界面,点击左侧“Kits”,然后点击中部上方的“Compilers”选项卡,点击右侧“Add->GCC->C++”,如图所示:
弹出如下窗口,Compiler path 选项点 Browser 在 SDK 包中找到 /opt/fsl-imx-xwayland/5.4-zeus/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/ 下找到“aarch64-poky-linux-g++”,选中后点击 Open,并将 Name 修改为“G++”。
按照同样的方法添加 GCC 编译器,点击右侧“Add->GCC->C”,如图所示:
在 SDK 包中找到 /opt/fsl-imx-xwayland/5.4-zeus/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc/ 下找到“aarch64-poky-linux-gcc”,选中后点击 Open,并将 Name 修改为“GCC”。
点击 Debuggers 选项卡,点击 Add 弹出如下界面:
弹出如下窗口,在 SDK 包中找到 /opt/fsl-imx-xwayland/5.4-zeus/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux 下找到“aarch64-poky-linux-gdb”,选中后点击 Open,并将 Name 修改为“debuggers”。
点击 Qt Versions 选项卡,点击 Add:
在 /opt/fsl-imx-wayland/4.14-sumo/sysroots/x86_64-pokysdk-linux/usr/bin 的目录下找到 qmake,选中后点击 Open,添加后显示如下,点击 Apply。
点击 Kits 选项卡,点击右侧 Add,添加一个新的 Kits,按照下图的内容进行修改点击 Apply。
❸ Qt creator 开发示例
执行
$ cd /home/forlinx/qtcreator-4.7.0/bin/
$ ./qtcreator
启动 Qt creator 程序,进入到 qtcreator 界面,点击“New Project”新建一个工程:
选择“Application”->“Qt Widgets Application”,然后点击右下角的“Choose”:
在如下界面中为新建的工程修改名字为“HelloWorld”,选择安装路径选择 /home/forlinx,然后点击“Next”:
在如下界面中,选择之前已添加过的“8mq”作为当前工程的 kit,然后点击“Next”:
在如下界面中,修改类名“Class name”为“helloworld”,将基类“Base class”选择为 QMainWindow,然后点击“Next”:
在如下界面中,点击“Finish”,完成工程的新建:
新建工程创建完成,即可显示如下窗口:
当程序编写完成后,点击左下角的锤子图标,即可进行交叉编译,将编译好的可执行程序 HelloWorld 拷贝到开发板,即可进行应用的测试。
使用 UUU 工具烧写镜像
UUU 是一个命令行工具,可以用于在 Linux 或者 Windows 下烧写镜像到 OKMX8MQ 开发板,下面分别介绍 Linux 和 Windows 下 UUU 工具的使用。
❶ Linux 下 UUU 工具的使用
路径:OKMX8MQ-C(Linux)用户资料 Linux 工具 uuu
将下载好的用户资料中的可执行文件 uuu 拷贝到 /usr/bin/ 目录下并添加可执行权限。将 OTG 线插入 Linux 主机的 USB 接口中。将拨码开关设置为 OTG 启动,启动开发板。
切换到 images 目录
$ cd /home/forlinx/imx8mq/OK8MQ-linux-sdk/images
烧写完整镜像(u-boot、内核和文件系统)到 eMMC:
$ sudo uuu -b emmc_all flash_sd_emmc.bin rootfs.sdcard
uuu 其他指令使用示例:
单独烧写 u-boot 到 eMMC:
$ sudo uuu -b emmc flash_sd_emmc.bin
注意:烧写 uboot 的命令不能清除环境变量,要恢复默认环境变量在 uboot 命令行输入。
注意:2GB 和 4GB 内存烧写的方法相同,将按照核心板的内存大小编译对应的的镜像
❷ Windows 下 UUU 工具的使用
路径:OKMX8MQ-C(Linux)用户资料 Linux 工具 uuu.exe
将用户资料中的 uuu.exe 拷贝到 C:WindowsSystem32 目录。将 OTG 线插入 Windows 主机的 USB 接口中。
将对应的镜像(2GB 内存或 4GB 内存)rootfs.sdcard 拷贝到 D 盘 uuu 目录,在 Windows 下运行 cmd 程序,进入镜像文件所在的目录,输入如下命令即可烧录完整镜像:
D:uuu> uuu.exe -b emmc_all flash_sd_emmc.bin rootfs.sdcard
uuu 其他指令使用示例:
单独烧写 u-boot 到 eMMC:
D:uuu> uuu.exe -b emmc flash_sd_emmc.bin
注意 1:
烧写 uboot 的命令不能清除环境变量,要恢复默认环境变量在 uboot 命令行输入:
$ env default –a
$ savenv
注意 2:第一次在 windows 平台烧写时由于 windows 没有安装相应的驱动程序可能会出现下图的失败情况:
一般情况下 windows 可以自动搜索驱动并安装,等待驱动安装完成重新执行烧写命令即可,如果出现驱动安装失败的情况,请按照下列步骤手动安装驱动。
将用户资料工具目录的 latest_usb_driver_windows.zip 拷贝到桌面并解压。打开 windows 设备管理器。
在“USB download gadget”上点击鼠标右键选择“更新驱动程序软件”。
选择“浏览计算机以查找驱动程序软件”,找到刚才在桌面解压的驱动程序文件夹。
点击“下一步”
选择“始终安装此驱动程序软件”,等待安装完成。
烧写 TF 卡的制作与使用
❶ 制作 TF 烧写卡
OKMX8MQ 平台支持 TF 卡烧写,首先需要制作用于烧写的 TF 卡,请使用 8G 及以上容量的正品 TF 卡来测试。
将 TF 卡插入 PC 机并在虚拟机中打开,将 TF 卡烧录工具 sdfuse.tar.bz2 复制到虚拟机中:
$ cp. /sdfuse.tar.bz2 /home/forlinx/imx8mq/
将编译过程中产生的 u-boot 镜像拷贝到当前目录,并进入到目录中:
$ tar -jxvf sdfuse.tar.bz2
$ cd sdfuse
开始制作烧写 TF 卡
$ sudo ./mksdcard8mq.sh
选择 TF 卡设备,这里以“1”为例。
输入“y”进行确认。
制作完成。
❷ 拷贝烧写镜像到 TF 烧写卡
将烧写镜像 rootfs.sdcard 文件拷贝到 TF 卡的根目录中。
下边列举出烧录的文件含义:
文件 |
说明 |
config.ini |
烧写配置文件(默认烧写工具已经添加) |
update.itb |
烧写工具(默认烧写工具已经添加) |
env.ini |
将额外的环境变量写入 uboot(可选) |
rootfs.sdcard |
镜像包(必选,需客户自行拷贝,拷贝时注意内存配置是 2GB 还是 4GB) |
注意:env.ini 编写方法见附录 2
❸ TF 卡烧写测试
关闭开发板电源,将 TF 卡插入 TF 卡座中,并将启动拨码设置到 TF 卡启动状态。打开电源开关,开发板将自动启动进入烧写程序,可以在 uboot 选择显示:
Press SPACE to abort autoboot in 1 seconds
## forlinx params set menu ...
--------------------------
0:reboot
1:exit to shell
3:MIPI7-dcss
4:HDMI
--------------------------
可以选择 2 或 4,分别显示在 7 寸 mipi 或者 hdmi 显示器上,选择完成后,以后再进行烧写都会将烧写结果显示在所选择的显示上。
开始烧写后,观察写进度请留意 LCD 上的打印信息,界面会提示烧写完成。
也可以通过观察底板上的 LED 灯来确认烧写进度,开始烧写时 LED1-4 循环闪烁,烧写完成后 LED1-4 同步闪烁。