=====DEY应用程序开发===== 您可以使用Makefile或是Digi IDE(基于Eclipse定制的IDE)或是QT Creator来进行应用程序开发。Digi提供SDK来安装开发应用程序所需的交叉编译工具链,您需要根据您的ConnectCore硬件平台下载相应的SDK安装。 Digi官方提供完备的应用程序英文文档,本中文文档为精简版,当您碰到问题,请访问[[https://www.digi.com/resources/documentation/digidocs/embedded/|官方的文档入口]],选择对应的ConnectCore硬件平台后,进入Digi Embedded Yocto文档,在左侧菜单中选择Application Development章节,查看相关的内容。 ====下载和安装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/r4/sdk/ccimx93-dvk/xwayland/dey-glibc-x86_64-dey-image-qt-xwayland-cortexa55-ccimx93-dvk-toolchain-4.0-r4.sh|Connectcore 93的DEY-4.0-r4 SDK]] \\ 如果您使用其它常用平台,请相应选择下载:\\ [[https://ftp1.digi.com/support/digiembeddedyocto/4.0/r4/sdk/ccmp13-dvk/fb/dey-glibc-x86_64-core-image-base-cortexa7t2hf-neon-vfpv4-ccmp13-dvk-toolchain-4.0-r4.sh |ConnectCore MP133 DEY-4.0-r4 SDK ]] \\ [[https://ftp1.digi.com/support/digiembeddedyocto/4.0/r4/sdk/ccmp15-dvk/wayland/dey-glibc-x86_64-dey-image-qt-wayland-cortexa7t2hf-neon-vfpv4-ccmp15-dvk-toolchain-4.0-r4.sh|ConnectCore MP157 DEY-4.0-r4 SDK]] \\ [[https://ftp1.digi.com/support/digiembeddedyocto/4.0/r4/sdk/ccimx8mn-dvk/xwayland/dey-glibc-x86_64-dey-image-qt-xwayland-cortexa53-crypto-ccimx8mn-dvk-toolchain-4.0-r4.sh|ConnectCore 8m nano DEY-4.0-r4 SDK]] \\ [[https://ftp1.digi.com/support/digiembeddedyocto/4.0/r4/sdk/ccimx8x-sbc-pro/xwayland/dey-glibc-x86_64-dey-image-qt-xwayland-cortexa35-ccimx8x-sbc-pro-toolchain-4.0-r4.sh|ConnectCore 8x DEY-4.0-r4 SDK]] 2. 安装 \\ 不同SOM平台请使用您下载的SDK文件名来替换 chmod +x ./dey-glibc-x86_64-dey-image-qt-xwayland-cortexa55-ccimx93-dvk-toolchain-4.0-r4.sh ./dey-glibc-x86_64-dey-image-qt-xwayland-cortexa55-ccimx93-dvk-toolchain-4.0-r4.sh 根据提示,一般只需一直回车,即可安装好SDK\\ 3.根据项目大小和使用习惯开发应用程序 \\ 您可以使用IDE,也可以直接使用终端和Makefile来编译程序,请从右侧菜单选择您所需的开发方式。 ====使用基于Eclipse的Digi官方IDE应用开发环境Digi ADE=== 您可以使用Digi提供的IDE来为您的ConnectCore硬件平台开创建和编译应用程序。Digi Application Development Environment简称DADE,是一个集成式开发环境,用户只需安装一次,就可以在IDE中自动配置好相关插件,并且IDE中集成有例程和开发文档供用户参考。使用该开发环境,您可以: * 下载和安装不同Digi硬件平台所需的DEY工具链 * 创建新的C/C++项目 * 拷贝现有的DEY例程 * 使用DEY工具链交叉编译C/C++项目和例程 * 在您的开发板远程启动和调试应用程序 注意,为了保障开发顺利进行,您用于开发的主机应安装有64位的Linux桌面操作系统(Ubuntu 20.04及其以上),多核和8G以上的RAM,并且可用磁盘空间至少大于100G。 ===下载并安装IDE软件=== 您可以用下面任一种方法安装Digi ADE应用程序开发环境: * Digi应用程序开发环境安装包,它包括Eclipse和所有需要用到的各种插件 * 如果您之前已经在用Eclipse开发软件,那么只需安装Digi插件即可,详情请参考官方文档。 下面我们以ConnectCore 93的程序开发为例: 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安装或运行不受本次配置的环境变量的影响。 ===安装配置平台的交叉编译工具链=== 我们在第一步已经安装好对应平台的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|}} ===连接到核心板=== Eclipse带有一个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-r4/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/