=====DEY应用程序开发=====
DEY应用程序是指可以运行在Digi ConnectCore目标板上的嵌入式Linux应用程序。您可以使用Makefile或是任一种IDE,包括Digi IDE(基于Eclipse定制的IDE)或是QT Creator,VSCode等来进行应用程序开发。Digi提供SDK来安装开发应用程序所需的交叉编译工具链,您需要根据您的ConnectCore硬件平台下载相应的SDK安装。
Digi官方提供完备的应用程序英文文档,本中文文档为精简版,当您碰到问题,请访问[[https://www.digi.com/resources/documentation/digidocs/embedded/|官方的文档入口]],选择对应的ConnectCore硬件平台后,进入Digi Embedded Yocto文档,在左侧菜单中选择Application Development章节,查看相关的内容。
====Linux开发主机的准备工作====
您需要在Linux主机上安装相应的SDK和IDE,以进行应用程序开发。下面以全新安装的Ubuntu 22.04为例,进行开发前的准备工作,包括各种依赖包和语言环境的安装。
您可以直接安装Ubuntu 22.04的Desktop版本,您也可以用Server版,通过安装简单的桌面环境,来进行更轻量化的安装,要在Ubuntu Server环境下进行开发主机的准备工作,参考下面的安装过程:
1、安装桌面环境,中文语言支持和必要的依赖包
sudo apt update
sudo apt install --no-install-recommends ubuntu-desktop
sudo apt install language-pack-zh-hans
sudo apt install language-pack-gnome-zh-hans fonts-arphic-ukai fonts-noto-cjk ibus-libpinyin fonts-noto-cjk-extra fonts-arphic-uming
sudo apt install ibus ibus-pinyin file build-essential gdb gdb-multiarch
2、安装IDE
您可以使用任一种IDE进行相关的应用程序开发,安装完IDE后,请不要直接运行它,而是关闭安装程序并退出shell,等安装完SDK后,从运行SDK的环境脚本的shell中启动IDE,以便自动配置好IDE的开发环境。
* 安装 vscode和浏览器edge
VScode支持各种开发语言和调试工具,要使用vscode可参考如下,如果您使用其它IDE,可略过此步。
sudo apt update
sudo apt upgrade
sudo reboot
sudo apt install software-properties-common apt-transport-https wget
wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
sudo apt update
sudo apt install code
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main"
sudo apt install microsoft-edge-stable
* 安装QT Creator
要使用QT Creator作为IDE,可以参考如下:
注意:安装QT时,不同的发行版本可能需要一些依赖包,有QT Creator无法安装时,可运行下面一些依赖包安装:
普通ubuntu桌面版本,可能只需要libxcb-xinerama0,xubuntu则需要libxcb-icccm4
sudo apt install libxcb-xinerama0 libxcb-icccm4
如果仍有问题,可运行下面更多的依赖包安装
sudo apt install libxcb-xinerama0 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xkb1 libxkbcommon-x11-0 libxcb-icccm4
wget https://mirrors.aliyun.com/qt/archive/qtcreator/9.0/9.0.2/qt-creator-opensource-linux-x86_64-9.0.2.run
sudo chmod +x ./qt-creator-opensource-linux-x86_64-9.0.2.run
qt-creator-opensource-linux-x86_64-9.0.2.run
安装过程需要注册QT,安装完最后一步请去掉那个启动QT Creator的勾选框,先别启动,我们需要安装Digi SDK后才启动。一般要关闭安装时所用的Shell,建议重新启动一下操作系统,以便系统重新加载各种服务,以完成对桌面环境和IDE的支持。
* 使用基于Eclipse的Digi ADE
您也可以使用Digi提供的IDE来为您的ConnectCore硬件平台开创建和编译应用程序。Digi Application Development Environment简称DADE,是一个集成式开发环境,用户只需安装一次,就可以在IDE中自动配置好相关插件,并且IDE中集成有例程和开发文档供用户参考。您可以直接下载Digi应用程序开发环境安装包,它包括Eclipse和所有需要用到的各种插件。如果您之前已经在用Eclipse开发软件,也可以只安装Digi相关的插件,更多详情请参考Digi官方文档。
下面我们以ConnectCore 93的程序开发为例来演示完整安装ADE的过程:
1.下载Digi ADE安装包:https://ftp1.digi.com/support/digiembeddedyocto/eclipse,会自动跳转下载最新的安装包,一般是一个40003033_版本号.run文件,以40003033_H.run为例。
2. 安装过程中,您需要有足够权限,因此先运行:
$ sudo install -o $USER -g $USER -d /opt/eclipse
上面的$USER也可以用您登陆的用户名替代。
3.下载完成后,需要先更改属性赋予该*.run文件可执行权限,然后在桌面上双击*.run运行安装程序,按提示一步步完成安装。您也可以在命令行下执行
$ sudo chmod +x 40003033_H.run
$ ./40003033_H.run
安装完成后,请关闭这个Shell,以便后面的其它IDE安装或运行不受本次配置的环境变量的影响。
====下载和安装Digi ConnectCore相关平台的SDK====
SDK提供了应用程序开发所需的交叉编译工具链,安装好SDK后,您可以使用终端的方式,或是IDE的方式来开发应用程序。下面示例中用到Digi的交叉编译工具,如果您用的DEY版本和示例命令不一致,请到[[https://ftp1.digi.com/support/digiembeddedyocto/|Digi官方FTP]]中选择对应版本的SDK进行替换。我们建议您使用最新的DEY版本和它对应的安装包。
如果碰到网络问题,从官网下载很慢,可以尝试备用的下载地址:http://dey-mirror.eccee.com:1080/digiembeddedyocto/soft/,请根据你的平台选择正确的sdk。
除了下载预编译好的SDK安装外,您也可以在编译系统固件镜像时,使用-c populate_sdk来编译生成SDK安装包。\\
下面以ConectCore 93核心模块的的SDK为例来说明SDK安装过程和在程序开发及IDE配置中如何使用相关的交叉编译工具链:\\
1. 下载[[https://ftp1.digi.com/support/digiembeddedyocto/4.0/r7/sdk/ccimx93-dvk/xwayland/dey-glibc-x86_64-dey-image-qt-xwayland-cortexa55-ccimx93-dvk-toolchain-4.0-r7.sh|Connectcore 93的DEY-4.0-r7 SDK]] \\
如果您使用其它常用平台,请相应选择下载:\\
[[https://ftp1.digi.com/support/digiembeddedyocto/4.0/r7/sdk/ccmp13-dvk/fb/dey-glibc-x86_64-core-image-base-cortexa7t2hf-neon-vfpv4-ccmp13-dvk-toolchain-4.0-r7.sh |ConnectCore MP133 DEY-4.0-r7 SDK ]] \\
[[https://ftp1.digi.com/support/digiembeddedyocto/4.0/r7/sdk/ccmp15-dvk/wayland/dey-glibc-x86_64-dey-image-qt-wayland-cortexa7t2hf-neon-vfpv4-ccmp15-dvk-toolchain-4.0-r7.sh|ConnectCore MP157 DEY-4.0-r7 SDK]] \\
[[https://ftp1.digi.com/support/digiembeddedyocto/4.0/r7/sdk/ccimx8mn-dvk/xwayland/dey-glibc-x86_64-dey-image-qt-xwayland-cortexa53-crypto-ccimx8mn-dvk-toolchain-4.0-r7.sh|ConnectCore 8m nano DEY-4.0-r7 SDK]] \\
[[https://ftp1.digi.com/support/digiembeddedyocto/4.0/r7/sdk/ccimx8x-sbc-pro/xwayland/dey-glibc-x86_64-dey-image-qt-xwayland-cortexa35-ccimx8x-sbc-pro-toolchain-4.0-r7.sh|ConnectCore 8x DEY-4.0-r7 SDK]]
2. 安装 \\
不同SOM平台请使用您下载的SDK文件名来替换
chmod +x ./dey-glibc-x86_64-dey-image-qt-xwayland-cortexa55-ccimx93-dvk-toolchain-4.0-r7.sh
./dey-glibc-x86_64-dey-image-qt-xwayland-cortexa55-ccimx93-dvk-toolchain-4.0-r7.sh
根据提示,一般只需一直回车,即可安装好SDK\\
安装好后,SDK您可以根据您所用的IDE来开发和编译DEY应用程序。
====使用Digi ADE开发应用程序====
我们在第一步已经安装好对应平台的SDK,首次运行Digi ADE,我们需要配置好它。如果向导没有引导您配置项目的工具链,你也可以从菜单中找到工具链的安装配置页面:Window>Preferences中的DEY Toolchains。如果您的硬件平台的SDK没在安装好,或是你需要增加一种平台的SDK,可以点击“Download new toolchains...”按钮会自动搜索以下载对应平台的交叉工具链。但Eclipse并不是一种高效的下载工具,通常建议您独立下载SDK并安装后供IDE配置和使用。Digi ADE支持安装多个不同SOM的SDK,您只需选中一个当前所需的SDK作为默认的工具链,并应用它。
{{digi:arm-embedded:linux:dey:dey-toolchains-config.png?400|}}
===连接到核心板===
Digi ADE带有一个connection连接插件,让您可以从内置终端连接到远程设备上以方便调试。Connections的配置按钮在主界面上如下所示,按下按钮来新建一个连接,然后选中Generic Connection来根据向导一步一步添加设备的连接:
{{:digi:arm-embedded:linux:dey:pasted:20240109-231743.png}}
点击Browse按钮查看网络内的设备,如果没在列表中,可以用ADD按钮通过开发板的IP地址添加,
{{:digi:arm-embedded:linux:dey:pasted:20240109-232205.png}}
最终添加好一个ConnectCore 93的开发板的连接配置如下:
{{:digi:arm-embedded:linux:dey:pasted:20240109-232424.png}}
点击Finish完成添加。
===创建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窗口中。
===运行或调试项目===
编译成功后,您可以远程运行或是调试它。在工具栏按钮中,有个当前目标板连接的下拉菜单,如果之前连接到开发板的步骤已经建立好连接,就可以直接使用。
连接好后,可以通过项目的右键菜单Run As > DEY C/C++ Remote Application或是Debug As > DEY C/C++ Remote Application来运行或是调试程序。
====使用QT Creator开发应用程序====
本章节将介绍如何在Linux环境下使用QT Creator来进行DEY应用程序开发。注意,您的电脑至少需要有4G RAM和100G以上的硬盘空间才能正常使用QT Creator进行开发。QT开发在应用程序开发的官方文档中有专门的章节。\\
注意:安装QT时,不同的发行版本可能需要一些依赖包,有QT无法安装时,可运行下面一些依赖包安装:\\
普通ubuntu桌面版本,可能只需要libxcb-xinerama0,xubuntu则需要libxcb-icccm4 \\
sudo apt install libxcb-xinerama0 libxcb-icccm4 \\
如果仍有问题,可运行下面更多的依赖包安装 \\
sudo apt install libxcb-xinerama0 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xkb1 libxkbcommon-x11-0 libxcb-icccm4 \\
===下载并安装QT Creator软件===
下载安装QT creator 9.0.2版本 \\
请在桌面环境中的终端安装,不要远程ssh登陆安装,因为需要桌面交互才能完成安装。\\
wget https://download.qt.io/official_releases/qtcreator/9.0/9.0.2/qt-creator-opensource-linux-x86_64-9.0.2.run \\
或用国内镜像:\\
wget http://dey-mirror.eccee.com:1080/digiembeddedyocto/soft/qt-creator-opensource-linux-x86_64-9.0.2.run \\
chmod +x qt-creator-opensource-linux-x86_64-X.Y.Z.run \\
./qt-creator-opensource-linux-x86_64-X.Y.Z.run \\
安装过程需要注册QT,安装完最后一步请去掉那个启动QT Creator的勾选框,先别启动,我们需要安装Digi SDK后才启动。 \\
===安装SDK===
一般建议先安装SDK再到IDE中配置,我们之前已经演示过SDK的安装,如果您是先安装QT Creator,则启动之前,需要先安装SDK,在安装完SDK之后,请关闭该Shell, 然后重新打开一人新的shell终端来运行环境配置和启动IDE。\\
进入sdk安装目录,运行环境配置
cd /opt/dey/4.0-r7/ccimx93-dvk
. environment-setup-cortexa55-dey-linux
然后进入/home/robin/qt-crator/bin目录,运行Qt-creator
cd ~/qtcreator-9.0.2/bin/
./qtcreator.sh &
===创建一个新设备配置===
请在开发板console中配置好网络,并用ip addr查好IP地址,确保开发板和电脑可相互ping通。\\
然后从菜单中选择edit>preferences>devices>add一个remote linux device,
{{:digi:arm-embedded:linux:dey:pasted:20240109-233929.png}}
建议还是生成密钥对,然后部署到板子上,按提示操作即可,点Test,测试通过即可。如果不用密钥登陆,请在添加好后,把Authentication Type改为default即密码登陆,也可以一样验证通过。
===设置DEY编译器===
由于运行了环境配置,所以会自动检测生成的部分配置选项,也可以按官方文档手动一步步再设置一遍。\\
菜单edit>preferences>kits>QT versions选中dey那个qmake,并应用。\\
{{:digi:arm-embedded:linux:dey:pasted:20240109-234331.png}}
同样地,在compliers,debuggers选项卡,都按文档一样设置,在左侧菜单中选中CMake,按文档的方法配置CMake。\\
===创建并配置新的kit配置===
给新的kit配置取个名,如cc93kit,选remote linux device,注意sysroot和Qt mkspec由于是手动输入路径,容易输错,此时kit就变得不可用了,所以一定要小心,不要输错,特别是别少了根路径。
文档总是对的,如果有错,一定是自己不小心!配置好如下所示:
{{:digi:arm-embedded:linux:dey:pasted:20240109-234702.png}}
配置完成后,就可以照文档来编译一个Hello World,效果如下:
{{:digi:arm-embedded:linux:dey:pasted:20240109-234755.png}}
====用终端命令行开发应用程序====
安装好SDK后,您也可以使用命令行的方式来编译Hello world应用程序,并在您的板子上运行。
===创建并编译Hello world应用程序===
~> mkdir hello_world
~> cd hello_world
~> touch hello-world.c
在hello-world.c中输入正面代码:
#include
#include
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/4.0-r4/ccimx93-dvk/environment-setup-cortexa55-dey-linux
然后可以直接make了,如果您编译的是Qt应用程序,则应该使用qmake:
make
这样就编译出hello_world的应用程序了。
您可以用scp协议将应用程序传到目标板,然后在终端窗口里远程运行它。
SCP命令行传送文件示例:
~> scp hello-world root@192.168.42.30:/home/root/