这是本文档旧的修订版!
DEY应用程序开发
您可以使用Digi IDE(基于Eclipse定制的IDE)或是QT Creator来进行应用程序开发。下面示例中用到Digi的交叉编译工具,如果您用的DEY版本和示例命令不一致,请按Digi官方FTP中对应版本的SDK进行替换。我们建议您使用最新的DEY版本和它对应的安装包。
使用Eclipse Digi应用开发环境
您可以使用基于Eclipse的Digi IDE和相关插件来为您的硬件平台开创建和编译应用程序。
下载并安装IDE软件
您可以用下面任一种方法安装Digi应用程序开发环境:
- Digi应用程序开发环境安装包,它包括Eclipse和所有需要用到的插件,包括Digi插件以及JRE 8。
- 如果您之前已经在用Eclipse开发软件,那么只需安装Digi插件即可。
Digi应用程序开发环境提供了一个预配置好的Eclipse开发环境,使用该开发环境,您可以:
- 下载和安装不同Digi硬件平台所需的DEY工具链
- 创建新的C/C++项目
- 拷贝现有的DEY例程
- 使用DEY工具链交叉编译C/C++项目和例程
- 在您的开发板远程启动和调试应用程序
注意,为了保障开发顺利进行,您用于开发的主机应安装有64位的Linux操作系统(Ubuntu 18.04及其以上),多核和4G的RAM,并且可用磁盘空间大于30G。
1、下载安装包:https://ftp1.digi.com/support/digiembeddedyocto/eclipse/eclipse-dey-3.0-r2.run
(如官网FTP有更新版本,请尽量使用最新版本的IDE)
2、安装过程中,您需要有足够权限,因此先运行:
$ sudo install -o <your-user> -g <your-group> -d /opt/eclipse 上面的用户名或用户组一般为您登录的用户名
3、下载完成后,需要先更改属性赋予该*.run文件可执行权限,然后双击*.run运行安装程序,按提示一步步完成安装。您也可以在命令行下执行
$ chmod +x eclipse-dey-3.0-r2.run $ ./eclipse-dey-3.0-r2.run
安装新的交叉编译工具链
Digi提供了一个预编译的SDK,它带有了匹配预编译镜像所需的交叉编译工具链和库文件等。安装好的工具链包括一些文件和目录:环境设置脚本,配置文件,主机和目标板rootfs等。
- 安装Digi工具链
默认地,首次启动开发环境,会提示您需要配置工具链,虽然你可以从IDE菜单中安装工具链,但由于通过eclipse下载工具链很慢,国内一般建议手工下载SDK安装,eclipse可以认出手工安装的工具链。
请参考下面手工方式安装工具链:
$ sudo install -o <your-user> -g <your-group> -d /opt/dey $ sudo chmod +x ./dey-glibc-x86_64-dey-image-qt-XXXX-<arch-platform>-toolchain-<version>.sh (请根据自己需求选择对应平台的工具链) $ ./dey-glibc-x86_64-dey-image-qt-XXXX-<arch-platform>-toolchain-<version>.sh
你也可以从菜单中找到工具链的安装配置页面:Window>Preferences中的DEY Toolchains。
点击“Download new toolchains…”按钮会自动搜索以下载对应平台的交叉工具链。
每个平台都有fb和视窗(x11或xwayland)两种工具链,分别对应 Framebuffer和视窗的两种显示方式。图形窗口管理器是在Framebuffer之上的视窗架构,Framebuffer更简单,更省内存,而视窗显示服务器架构可利用的开源桌面软件资源较丰富,但编译出来的程序也更大,并且基于视窗sdk的程序只能在带有桌面显示支持的镜像上运行。如果你的设备不带显示屏,下载个fb版本的工具链就够了。
下载安装好工具链后,选中一个作为默认的工具链,并应用它。
连接到核心板
Eclipse带有一个终端插件,让您可以从内置终端连接到远程设备上以方便调试。如果没找到终端窗口,可以从菜单上找到Window> Show View> Other>Terminal中打开。在终端视图中,点击Open a Terminal按钮新建一个终端窗口,您可以选择任一种远程协议来连接到目标板上。通常地,用SSH最为方便,速度也最快。请根据目标板的IP地址配置好远程终端。
创建C/C++项目
上面已经配置好了工具链,并连接好目标板,接下来就可以创建项目并编译了。您可以创建一个全新的空白项目,也可以创建一个DEY例程项目。DEY的例程项目一般是用来简单测试一下各种接口的功能。
创建好项目后,会默认使用之前配置好的交叉编译工具链。我们可以创建一个Hello World的项目。用工具链编译,然后就可以在板子上运行了。
定制编译选项
- 更改项目编译所用的工具链
项目的右键菜单中,选中Properties,工具链的选择在DEY Toolchains配置项中。
- 更改C/C++的编译选项
项目的右键菜单中,选中Properties,在C/C++ Build>Settings配置项中,可以配置各种常用的编译选项,比如添加头文件路径,添加库,添加宏定义,设置优化级别和编译级别等。
- 更改Autotools项目设置
同样地,在项目的右键菜单中,选中Properties,在Autotools>Configure Settings可进行各项配置。
- 更改编译配置
默认地,一个项目有多种编译配置,比如debug或是release等,您可以通过项目的右键菜单中,选 Build Configurations > Set Active中进行选择或管理。
编译项目
从项目的右键菜单中选中Build project来进行编译。编译过程中,输出信息会显示在Console窗口中。
运行或调试项目
编译成功后,您可以远程运行或是调试它。在工具栏按钮中,有个当前目标板连接的下拉菜单,如果你还没有连接到任何目标板,请点击“New Connection“,根据向导,建立一个新的连接。创建好后,点击边上的连接按钮连接到目标板上。
连接好后,可以通过项目的右键菜单Run As > DEY C/C++ Remote Application或是Debug As > DEY C/C++ Remote Application来运行或是调试程序。
使用QT Creator开发应用程序
本章节将介绍如何在Linux环境下使用QT Creator来进行DEY应用程序开发。注意,您的电脑至少需要有4G RAM和10G以上的硬盘空间才能正常使用QT Creator进行开发。
下载并安装QT Creator软件
1.安装QT Creator
请从QT的官网https://download.qt.io/official_releases/qtcreator/下载最新版本的QT Creator。
下载完成后,赋予可执行权限并运行安装程序。
~> chmod +x qt-creator-opensource-linux-x86_64-X.Y.Z.run
~> ./qt-creator-opensource-linux-x86_64-X.Y.Z.run
2.安装DEY交叉编译工具链
安装完成后,请先不要运行。我们还需要下载并安装支持QT的DEY工具链,您也可以使用自行编译的工具链。请从Digi的官方FTP中下载对应版本的SDK安装包来安装。当前的最新版本是3.0-r2,手工下载安装,请到Digi官网下载下载后安装。
~> wget https://ftp1.digi.com/support/digiembeddedyocto/3.0/r2/sdk/ccimx6ulsbc/x11/dey-glibc-x86_64-dey-image-qt-x11-cortexa7t2hf-neon-ccimx6ulsbc-toolchain-3.0-r2.sh ~> chmod +x dey-glibc-x86_64-dey-image-qt-x11-cortexa7t2hf-neon-ccimx6ulsbc-toolchain-3.0-r2.sh ~> ./dey-glibc-x86_64-dey-image-qt-x11-cortexa7t2hf-neon-ccimx6ulsbc-toolchain-3.0-r2.sh
~> wget ftp://ftp1.digi.com/support/digiembeddedyocto/3.0/r2/sdk/ccimx8mn-dvk/xwayland/dey-glibc-x86_64-dey-image-qt-xwayland-aarch64-ccimx8mn-dvk-toolchain-3.0-r2.sh ~> chmod +x dey-glibc-x86_64-dey-image-qt-xwayland-aarch64-ccimx8mn-dvk-toolchain-3.0-r2.sh ~> ./dey-glibc-x86_64-dey-image-qt-xwayland-aarch64-ccimx8mn-dvk-toolchain-3.0-r2.sh
3.从配置好工具链的Shell中启动QT Creator 打开一个新的Shell窗口,进入到工具链的安装目录,然后运行工具链的环境变量设置脚本:
~> . environment-setup-<arch>-dey-linux-gnueabi
到QT Creator的安装路径中的bin目录下,执行QT Creator的启动脚本来启动QT Creator:
~> ./qtcreator.sh &
配置QT Creator
在用QT Creator创建第一个应用程序前,您需要配置好对Digi平台的DEY工具链的支持。 1.创建一个新的设备配置 点击Tools>Options,从左侧列表中选择Devices,在右侧面板中点击”Add“,一个新的对话框会列出所有可用的设备类型。选中”Generic Linux Device“并点击” Start Wizard“来开始配置向导。在向导中输入配置名称,设备IP和用户名密码等(默认为root,密码为空),完成向导。 2.配置DEY编译器 点击Tools>Options,从左侧列表中选择Build & Run,在右侧面板中选择Qt Versions,点击”Add“添加一个新的DEY编译器。浏览文件系统,找到工具链安装目录下qmake程序。通常它位于:
<工具链安装目录>/sysroots/x86_64-deysdk-linux/usr/bin/qt5/qmake
点击Apply保存。
3.配置DEY的C/C++编译器 点击Tools>Options,从左侧列表中选择Build & Run,在右侧面板中选择Compilers,点击Add添加并从下拉列表中选择GCC>C,在名称中输入用于识别对应平台DEY所用GCC,如<platform>_DEY_GCC,点击Browse来查找设置编译器的路径,请选中工具链下的arm-dey-linux-gnueabi-gcc程序。它一般位于:
<工具链安装目录>/sysroots/x86_64-deysdk-linux/usr/bin/arm-dey-linux-gnueabi/arm-dey-linux-gnueabi-gcc
点击Apply保存配置。 用上面同样的方法添加<platform>_DEY_G++C++编译器并保存,对应的二进制文件程序一般位于:
<工具链安装目录>/sysroots/x86_64-deysdk-linux/usr/bin/arm-dey-linux-gnueabi/arm-dey-linux-gnueabi-g++
设置DEY调试器
点击Tools>Options,从左侧列表中选择Build & Run,在右侧面板中选择Debuggers,用Add按钮来添加一个新的调试器,在对话框中输入名称<PLATFORM>_DEY_GDB,点击Browse来查找调试器路径,一般在工具链的安装目录下的arm-dey-linux-gnueabi-gdb程序。通常它位于
<工具链安装目录>/sysroots/x86_64-deysdk-linux/usr/bin/arm-dey-linux-gnueabi/arm-dey-linux-gnueabi-gdb
保存并应用。
创建开发套件配置
点击Tools>Options,从左侧列表中选择Build & Run,在右侧面板中选择Kits,用Add按钮添加一个新的开发套件配置。输入配置名称,如<PLATFORM>_DEY,在Device type中选择Generic Linux Device,并在设备中选择之前配置好的设备。点击Browse来查找Sysroot,您需要选择工具链中的<arch>-dey-linux-gnueabi目录,一般它位于:
<工具链安装目录>/sysroots/<arch>-dey-linux-gnueabi/
在C Complier和C++ Complier和Debugger中,分别选中之前配置好的C和C++ DEY编译器和调试器。
在Qt Version中,选择之前配置好的QT DEY Complier。
在Qt mkspec中填入工具链中的 Qt mkspec路径,一般它位于:
<工具链安装目录>/sysroots/<arch>-dey-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++
点击Make Default来使它成为默认配置,然后点击OK保存并关闭配置对话框。
创建一个Hello World的Qt快速程序
1.创建应用程序
菜单File > New File or Project,从左侧的Projects下选择Application,选中Qt Quick Application - Empty. 点击Choose来开启项目创建向导。
在配置向导中,选中之前创建的DEY编译器和套件,完成向导。
我们将向项目main.qml添加如下的简单代码,然后保存
Text { anchors.centerIn: parent text: "Hello, World!" }
2.编译运行应用程序
编译过程中的信息会显示在Compile Output终端窗口中。编译完成后,需配置一下应用程序的运行环境。
点击Projects图标,在左侧Build & Run下选择Run,右边面板就会显示当前的运行配置。我们需要配置Run Environment,点击它的Details,在Base environment for this run configuration中选择Clean Environment,以确保程序运行时使用干净的环境配置。
接下来需要添加一个新的环境变量让应用程序启动时选择正确的显示器。点击环境变量列表右边的Add,名称设置为DISPLAY,值设置为:0.0
点击左侧工具栏的Run图标,程序会自动传到目标板并运行,显示一个有Hello World字样的窗口。
3.调试运用程序 从Tools > Options菜单项中选择Debugger,在右侧面板中选择GDB,在Additional Startup Commands框中填入:
handle SIGILL pass nostop noprint
,然后点击OK关闭窗口。(注意,该项仅需配置一次,以后的调试无需重复配置。)
双击main.cpp,打开后右击下面这一行:
return app.exec();
选择Set Breakpoint at Line 17以便在显示Hello world之前设置一个断点。在左侧工具条中,点击Start Debugger按钮来开始调试。程序会停在断点处。
用终端命令行开发应用程序
您也可以使用命令行的方式来编译Hello world应用程序,并在您的板子上运行。之前的IDE章节已经安装好了DEY的工具链,如果你没有安装,可以从官方的FTP中下载对应平台的SDK并安装它。 当前的最新版本是2.6-r3,请安装您核心模块和之上运行的DEY版本对应的SDK,以CC6ul为例
~> wget ftp://ftp1.digi.com/support/digiembeddedyocto/2.6/r3/sdk/ccimx6ulsbc/x11/cc6ulsbc/dey-glibc-x86_64-dey-image-qt-x11-cortexa7t2hf-neon-toolchain-2.6-r3.sh \\ 或用浏览器下载上面地址链接,或是用国内镜像http://dey-mirror.eccee.com/sdk/cc6ulsbc/dey-glibc-x86_64-dey-image-qt-x11-cortexa7t2hf-neon-toolchain-2.6-r3.sh ~> chmod +x dey-glibc-x86_64-dey-image-qt-x11-cortexa7t2hf-neon-toolchain-2.6-r3.sh ~> ./dey-glibc-x86_64-dey-image-qt-x11-cortexa7t2hf-neon-toolchain-2.6-r3.sh
创建并编译Hello world应用程序
~> mkdir hello_world ~> cd hello_world ~> touch hello-world.c 在hello-world.c中输入正面代码: #include <stdio.h> #include <unistd.h> int main(int argc, char *argv[]){ int i; for (i = 1; i <= 10; i++) { printf("%d - Hello world!\n", i); sleep(1); } return 0; }
用命令行的方式需手工创建Makefile:
~> touch Makefile 输入以下内容: BINARY := hello-world CFLAGS += -Wall -O0 .PHONY: all all: $(BINARY) $(BINARY): hello-world.o .PHONY: clean clean: rm -f *.o $(BINARY)
编译之前,请先配置好该session的环境变量,Source一下工具链中的环境设置脚本
~>source /opt/dey/2.6-r3/ccimx6ulsbc/environment-setup-cortexa7t2hf-neon-dey-linux-gnueabi
然后可以直接make了,如果您编译的是Qt应用程序,则应该使用qmake:
make
这样就编译出hello_world的应用程序了。
您可以用scp协议将应用程序传到目标板,然后在终端窗口里远程运行它。 SCP命令行传送文件示例:
~> scp hello-world root@192.168.42.30:/home/root/
更多信息,请参考官方文档中的应用程序开发