DEY-ALL-IN-ONE是Digi中国区推出的开源项目。旨在帮助新用户快速掌握基于Digi ConnectCore开发套件的DEY嵌入式系统开发和版本控制管理技巧。本项目适合用Digi开发套件或工控主板(单板机),以及基于Digi单板机设计的用户项目,通过本项目,用户可以在不深入了解yocto的基础上,学会快速的系统开发技巧,了解设备树和内核配置在项目文件夹中的位置,并学习设备树驱动的修改和定制rootfs的方法。

DEY-ALL-IN-ONE目前支持imx6ul,imx8m nano,imx8x三大主流平台。下载安装好DEY-ALL-IN-ONE,您就已经安装好多平台多版本的DEY系统开发环境。

一、安装DEY-ALL-IN-ONE

您需要准备一台干净的Linux机器并安装有桌面系统,以Ubuntu 18.04为例,首先预安装Yocto必要的软件包:

sudo apt update
sudo apt install curl gawk wget git-core diffstat unzip texinfo gcc-multilib g++-multilib build-essential \
                 chrpath socat cpio python python3 python3-pip python3-pexpect \
                 libsdl1.2-dev xterm libncurses5-dev libncursesw5-dev lzop 

为了更高效地并行开发多个项目,您需要用git版本控制的方法来管理项目。如果公司没有配备git服务器,并且出于安全考虑也不愿意使用开放源码的github或gitee等码云服务,那么您还可以使用免费私密的Eccee Git服务,进一步操作前,请先注册个帐号。 (注:代码托管到服务器上并非必要,本地也可以用git管理多个版本,只是出于安全考虑最好将成熟的代码版本存放在服务器上,以便本地修改出错时及时恢复可用版本。 先配置一下本地git的全局用户名和邮箱

git config --global user.name "your name"
git config --global user.email "your email"

下载DEY-ALL-IN-ONE

cd
git clone http://gitlab.eccee.com:11080/digirobin/dey-all-in-one

首次使用DEY-ALL-IN-ONE,您还需要把DEY版本和官方同步,这里用到repo工具是Google提供的,如果您无法翻墙,可以使用国内的repo镜像。

如果您在root终端里,请先退出,将来使用repo也无需用root权限,普通用户就可以
  下载repo并移到PATH包含的路径
$ curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
$ chmod +x repo
$ sudo mv repo /usr/local/bin/
指定REPO_URL为国内源
$ nano ~/.bashrc
  在该文件末尾加上一行
  export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
  然后CTRL+O保存后,按CTRL+X退出,执行下面命令使之生效
$ source ~/.bashrc
  这样,以后在登录用户下,就可以直接使用repo了

用repo下载官方的DEY版本,您可以安装多个DEY版本,也可以只安装最新的版本(当前为3.0),以DEY3.0为例

cd
cd dey-all-in-one/dey-3.0
repo init -u https://github.com/digi-embedded/dey-manifest.git -b zeus
repo sync --no-repo-verify

DEY 2.6安装

DEY 2.6安装

如果您需要在DEY 2.6下开发,那么请进入dey-all-in-one中的dey-2.6目录,并和官网同步

cd
cd dey-all-in-one/dey-2.6
repo init -u https://github.com/digi-embedded/dey-manifest.git -b thud
repo sync --no-repo-verify

创建新项目并编译,以cc8x为例

git reset --hard
cd
cd cc8x/3.0/
source ../../dey-3.0/mkproject.sh -p ccimx8x-sbc-pro
git reset --hard
bitbake dey-image-qt
<code>

注意上面中的git reset --hard, 在和官网同步DEY时,会覆盖dey-all-in-one中的改动,两个git reset --hard均是为了复原dey-all-in-one中的变动。第一个是为了让创建项目的脚本支持自定义的meta-custom,这当中有向rootfs添加自定义文件的例子。第二个是为了把本地配置变动conf/local.conf等也复原。
由于编译时有时会用编译生成的文件覆盖变动,所以有一个版本控制的源码托管平台很重要,只有这样才能实现多平台多版本的开发。
  • 拉取现有项目源码进行编译

为了方便dey-all-in-one的脚本识别和执行发布,当您创建分支时,请以cc6ul,cc8mn,cc8x作为前缀。我们以cc8x-fusion10分支为例。默认的镜像由于支持最新的LCD开发套件(友达光电工业屏),有些用户手上有上一代的Fusion 10“屏,可以通过修改设备树来实现更换不同显示屏的支持。

git pull origin cc8x-fusion10:cc8x-fusion10
cd 
cd cc8x/3.0/
source dey-setup-environment
git reset --hard
bitbake -C compile virtual/kernel
bitbake dey-image-qt
  • 发布编译结果

不论是新项目,还是拉取项目分支编译,最终需要把编译结果拷出来,以供卡刷或是tftp网络升级固件使用。dey-all-in-one利用脚本快速将所需的固件拷贝到release目录下,或是拷贝到tftp服务器的根目录中,以方便用户使用。 Digi中国区也可以利用该脚本将最新的官方固件编译结果发布到dey-mirror服务器上以供国内用户快速下载和测试。

使用方法:

$ ./copyrelease.sh
然后根据提示选择平台和版本,镜像名称等,最终根据选择内容将结果拷本到release目录中不同平台的对应路径下。