完成上述准备工作后,就可以安装repo了,DEY项目托管在github上,采用repo工具来管理软件包的升级和更新。而repo是谷歌开发的git管理工具,因此repo的官方安装方法需要翻墙。目前国内已有repo镜像可以直接使用,你可以国内源来获取可用的repo。此外,Ubuntu 22.04等发行版已经提供repo包,您可以直接用apt的方式安装。
如果无法翻墙,也可以用国内源或系统发行版官方源的方式安装,点击展开查看详情
如果无法翻墙,也可以用国内源或系统发行版官方源的方式安装,点击展开查看详情
Ubuntu 22.04 或其它提供官方repo下载的发行版,可以直接使用官方源安装,如:
apt install repo
如果发行版不带repo,又无法科学上网,可使用清华源的方式安装repo
$ 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了
</hidden>
接下来就可以去下载DEY,
请在普通用户权限下操作,将来DEY只需用登录用户的权限,注意把命令中的robin换成您电脑的用户名:
新建一个DEY源码目录
进一步操作前,需要退出root,因为yocto的项目编译不推荐用root,而是用你的用户名,在上面创建dey安装目录时我们已经把该目录提定给自己登录系统时的用户。
如果您还是root的终端,请先执行退出root权限的会话终端,切换到普通用户的会话窗口。
<code>
exit
安装前,先根据所需的DEY版本准备一个安装目录
$ sudo install -o robin -g robin -d /usr/local/dey-4.0
(请用您的用户名替代robin)
(或者,我们在同一台电脑上要安装不同版本的dey,也可以多一级目录,甚至可以指定小版本号以明确您 同步的是哪个版本,比如dey 3.0的代号gatesgarth,最后一次更新是dey-3.2-r3.1。
$ sudo install -o robin -g robin -d /usr/local/dey/dey-3.2-r3.1
)
上面命令中,我们新建了一个dey-4.0的目录,DEY有不同的版本支持不同的内核版本和硬件平台,您可以到
https://github.com/digi-embedded/dey-manifest/ 查看当前所支持的分支和tags列出的版本号,最新的DEY 4.0版本代号kirkstone。
$ git config --global user.email "you@xxx.com" (用您常用的邮箱或是您在github上帐号所用的邮箱替代)
$ git config --global user.name "youname" (取一个自己的用户名)
$ cd /usr/local/dey-4.0
$ repo init -u https://github.com/digi-embedded/dey-manifest.git -b kirkstone
$ repo sync --no-repo-verify 或是 repo sync -j4 --no-repo-verify
上述命令每次官方有更新时,repo sync能保持和官方同步。大部分场景,您是用这种方法和官方保持一致。在一些深度定制的特殊情况,您不再参考Digi的开发板主要器件和用料,而要在某一版本号上继续开发BSP额外的分支,不和官方一致的情况下,您也可以用指定的版本号,以便回溯,比如DEY2.6的代号是thud,它最后一次更新后版本号是DEY2.6-r3.1,下面这个命令将只同步您到DEY2.6-r3.1版本
$ repo init -u https://github.com/digi-embedded/dey-manifest.git -b refs/tags/2.6-r3.1
$ repo sync -j4 --no-repo-verify
(如果您的电脑是双核的,请用-j2或是不用-j4这个参数,或是只用repo sync命令)
注意,官方的版本代号永远都指向DEY-m.n的最新版本,您如果在后续使用中,用repo sync更新DEY安装目录,在DEY的安装目录下的source/meta-digi/README.md里,可以查到最后更新对应的版本信息,从而您可以知道当前使用的DEY版本号。我们建议您在做系统开发时,可以在项目文件夹前使用该版本号,或是在备份镜像时,备份到对应的版本号文件夹下,这样您就不需要从启动信息中了解所用镜像的版本号。
在同一台电脑上可以安装多个版本,对于不同的大版本号(dey2.0/2.2/2.4/2.6等),一般可安装在不同的目录下以方便编译测试不同的版本。Digi会维护每个已经发行的版本(包括小版本号和大版本号),所以如果您在已经在某个版本上成熟开发应用,也无需使用最新的大版本。
CC28平台只支持早期的DEY1.6版本,如果需要安装该版本,则对应的安装URL有所不同,请参考下述命令。
$ sudo install -o robin -g robin -d /usr/local/dey1.6
$ repo init -u https://github.com/digidotcom/dey-manifest.git -b refs/tags/1.6.9
$ repo sync -j4 --no-repo-verify
我们推荐您使用repo工具来安装DEY,这样您能比较方便地获取最新的DEY版本。如果访问国内repo源不便时,又不能通过翻墙下载repo的时候,您也可以参照下面方法安装指定的DEY版本。
压缩包解压直接安装
请到下面链接下载指定版本的压缩包
DEY 2.6下载:http://dey-mirror.eccee.com/dey-2.6r22.tar.bz2
解压安装能让您快速安装和编译测试DEY,但它没有和官方的发布保持更新,所以为了取得更新版本和更好的管理维护,建议用repo的方式来安装。
下载好DEY压缩包文件后,用下面命令解压到/usr/local文件夹中
cd /usr/local/
sudo tar -jxvf dey-2.6r22.tar.bz2 -C /usr/local
sudo chown -R myuserid:myuserid /usr/local/dey-2.6 注意这里的myuserid替换成你的用户名
这样就安装好了DEY 2.6-r2.2。
为了正常编译,您还需下载编译过程生成的downloads目录,并解压到你的项目文件夹,以便不翻墙能编译通过。这个downloads压缩包近9G,分为两个压缩文件:x00,x01。
x00下载: http://dey-mirror.eccee.com/x00
x01下载:http://dey-mirror.eccee.com/x01
请在Linux主机上保存,然后用下面命令合并
cat x* > dey26-cc6ul-downlods.tar.gz
tar zxvf dey26-cc6ul-downloads.tar.gz
请到下面链接下载指定版本的压缩包
DEY 2.4下载:http://dey-mirror.eccee.com/dey2.4r2.tar.bz2
解压安装能让您快速安装和编译测试DEY,但它没有和官方的发布保持更新,所以为了取得更新版本和更好的管理维护,建议用repo的方式来安装。
下载好DEY压缩包文件后,用下面命令解压到/usr/local文件夹中
cd /usr/local/
sudo tar -jxvf dey2.4r2.tar.bz2 -C /usr/local
sudo chown -R myuserid:myuserid /usr/local/dey-2.4 注意这里的myuserid替换成你的用户名
这样就安装好了DEY 2.4r2。
为了正常编译,您还需下载编译过程生成的downloads目录,并解压到你的项目文件夹,以便不翻墙能编译通过。这个downloads压缩包近11G。
本地编译所需downloads压缩包下载: http://dey-mirror.eccee.com/dey24r2downloads.tar.bz2
请在Linux主机上保存,然后用下面命令合并
tar jxvf dey24r2downloads.tar.bz2
注意这个downloads的位置默认在你的项目文件夹内,你也可以在项目配置中更改为上一级目录,如果您在配置文件conf/local.conf中更改了下载文件夹位置 ,需要保证解开的downloads与之相符。
docker安装
略
Git安装
还有一种方式是用ECCEEgit来安装DEY。在国内repo工具无法下载的时候,git下载成为一个获取最新DEY的渠道。ECCEE git服务器是免费安全的企业版本控制管理平台,通过ECCEE git服务,您可以为企业搭建一个私密的git服务器,它和github的区别在于,github只能托管免费开源的代码,私密的需要付费并且费用很贵,而Eccee git目前能接受免费的私密git服务托管,为您企业内部的团队协作和版本控制提供简单和高效的平台。详细用法请参考ecceegit介绍。
您只需注册Ecceegit服务,就可以直接用git来colone一个DEY本地库。
DEY 2.6的地址为: ssh:git@gitlab.eccee.com:11022/digirobin/dey-2.6.git
以dey 2.2为例,完整的步骤请参考下述命令:
<code>
在你的用户名下,下面的robin请改为你的用户ID
sudo install -o robin -g robin -d /usr/local/dey
cd /usr/local/dey
git clone http://gitlab.eccee.com:11080/digirobin/dey-2.6.git
或是,如果您有相应的Ecceegit帐号,用SSH检出
git clone ssh:git@gitlab.eccee.com:11022/digirobin/dey-2.6.git
相应地,当创建项目时,请source这个对应路径/usr/local/dey/dey2.6/mkproject.sh
</code>
安装好 DEY的开发平台,就可以创建项目了
在meta-digi-arm中定义的可用平台包括:
* ConnectCore 6 SBC, ccimx6sbc (支持DEY1.6,2.0,2.2以上的版本)
* ConnectCore 6UL SBC, ccim6ulsbc (支持DEY2.2以上的版本)
* ConnectCard for i.MX28, ccardimx28js (支持DEY1.6)
初始化项目和环境变量配置,可以用 mkproject.sh脚本,另外bitbake 不能用root编译,所以如果你是 root,还需要切换用户。
确保从root状态退出,然后
#mkdir -p /home/robin/dey-workspace/ccimx6ulsbc (请把robin改成你的Linux系统的用户名)
#cd /home/robin/dey-workspace/ccimx6ulsbc
#source /usr/local/dey2.6/mkproject.sh -l (列出该版本支持的平台)
#source /usr/local/dey2.6/mkproject.sh -p ccimx6ulsbc
(如果你的安装目录有多级,比如是/usr/local/dey/dey-morty时,相应地是source这个dey-morty路径的mkproject.sh)
上面命令会跳出license agreement,用任意键阅读完,按y接受license agreement,相关脚本就开始初始化项目,并生成conf目录和配置文件
bblayers.conf:可用的配置层在这里配置
local.conf:仅对本项目有用的本地可配置的变量在这里定义
mkproject.sh脚本会在当前的终端窗口中配置好编译环境。它也在项目根目录中创建一个 dey-setup-environment脚本,重启动或是关闭session后可以通过source它来在新窗口中为已经存在的项目设置编译环境。
新建好项目或是在终端中source已有项目的dey-setup-environment脚本后,就会提示您可以直接编译项目的镜像了。
注意,当DEY版本有更新,如果你要用新版本,则在更新完sync后,需要擦除 tmp和 sstate-cache目录,以便用新版本重新编译。
DEY默认的配置就足以编译生成适合开发套件上运行的镜像,首次试用,您也可以跳过本步骤,直接参考下一小节编译项目并生成镜像来编译生成可烧入cc6ul的固件。不过建议还是要更改一下local.conf的默认下载目录和指定一下国内源码镜像源,以便不同项目在编译时可以用之前bitbake编译时已经下载的源。
要进行编译选项设置和文件系统定制,可以通过修改conf/local.conf来配置项目,包括:
DEY在编译时会从互联网下载所需对应版本的软件包,主要是linux和bsp的源码包,默认是下载到项目文件夹下的downloads目录。当你有多个项目时,重复下载相同的软件包会占用太多的硬盘空间,建议更改默认的下载位置。默认是#DL_DIR ?= “${TOPDIR}/downloads”,这里需要去掉注释,指向项目文件夹的上级目录的downloads。这样不同的项目都可以用之前下载的软件包,减少编译时间和硬盘占用的空间。
DL_DIR ?= "${TOPDIR}/../downloads"
由于编译时会从互联网下载软件包,一些上游软件源托管在谷歌服务器等国内被墙的站点,当源码无法获取时,会导致编译失败。如果没有翻墙的条件,那么为项目指定一个软件包的镜像下载站点是个不错的选择。你可以指定为本机的目录,也可以是网络的镜像源。Digi中国为客户提供一个国内镜像网址:dey-mirror.eccee.com,可以配置在local.conf中直接使用。
您也可以下载整个源码压缩包,解压到上面到默认下载位置,对于DL_DIR指定目录中已经存在的软件包,编译器会自动略过而无需下载。
通常地,首次编译,您需要通过镜像源来在编译过程中生成downloads内的软件包。我们在后面也会提供另一种无需编译的方法,那就是直接下载打包好的downloads压缩包。
要指定软件包镜像源,在conf/local.conf中指定下面这些参数,以DEY 2.6为例:
SOURCE_MIRROR_URL ?= "http://dey-mirror.eccee.com:1080/bitbake-downloads"
INHERIT += "own-mirrors"
DEY允许您通过conf/local.conf文件为目标镜像配置默认的网络参数,也就是定制目标系统中的/etc/network/interfaces文件。
默认的配置如下:
ETH0_STATIC_IP ?= "192.168.42.30”
ETH1_STATIC_IP ?= "192.168.44.30" (if applicable)
WLAN0_STATIC_IP ?= "192.168.43.30" (if applicable)
对于有线网络,指定静态IP相关配置如下:
ETHn_STATIC_IP = "<ip address>"
ETHn_STATIC_NETMASK = "<netmask>"
ETHn_STATIC_GATEWAY = "<gateway ip address>"
ETHn_STATIC_DNS = "<dns server ip address>"
其中,n为0或1,取决于您的平台支持的网口个数。
同样地,对于无线网络指定静态IP:
WLAN0_STATIC_IP = "<ip address>"
WLAN0_STATIC_NETMASK = "<netmask>"
WLAN0_STATIC_GATEWAY = "<gateway ip address>"
WLAN0_STATIC_DNS = "<dns server ip address>"
如果是启用DHCP,则用下面配置
ETHn_MODE = "dhcp"
WLAN0_MODE = "dhcp"
比如要添加strace,注意下面软件包名称前有空格
IMAGE_INSTALL_append = " strace"
DEY引入一些特性来简化系统定制,可以启用或关闭相关的特性来实现特定的功能组,这会批量添加所需功能的软件包。
EXTRA_IMAGE_FEATURES = "<feature-name>"
相关特性列表:
* dey-audio: Adds audio support to a platform.
* dey-gstreamer: Adds the gstreamer framework to a platform.
* dey-network: Adds network applications and tools. You can configure some of the network applications in your conf/local.conf by doing:
* dey-wireless: Includes wireless applications and drivers.
* dey-bluetooth: Adds Bluetooth support.
* dey-debug: Adds DEY debugging applications as memwatch and fbtest.
* dey-examples: Adds DEY example applications.
* dey-qt: Adds QT support. This feature is added by default in dey-image-graphical images.
文件系统定制进阶,可以参考DEY文件系统定制
当需要进一步定制系统时,建议创建一个新的layer, DEY中包含一个meta-custom的layer作为例子。您的meta-custom可以:
*包含新的recipes,比如添加新的应用程序或新文件到文件系统中
*修改其它layer中现有的recipes,这可以通过添加一个.bbappend的recipe.也可以用来修改现有文件系统中的文件。
*创建新的目标镜像
*创建新的设备配置
*为您平台提供默认的内核配置或配置片段
参考资料
Yocto项目组有很好的系统开发相关文档供参考:
* Yocto Project Board Support Package (BSP) Developer's Guide
* Yocto Project Linux Kernel Development Manual
* Yocto Project Development Manual
* Yocto Project Reference Manual
要编译DEY镜像,在您的项目文件夹内使用下面bitbake命令
CC6或CC6UL用下面命令编译
bitbake dey-image-qt
而CC28在DEY1.6中的编译镜像命令是
bitbake dey-image-graphical
默认地,这将编译一个基于X11视窗并带QT库支持的镜像。编译时间根据电脑配置不同而略有不同,使用较新的高配置电脑,编译时间仍可能长达6个小时以上。因此,建议您在执行这个命令时做好让电脑整夜编译的准备。
如果只需要编译基于framebuffer并带QT库支持的镜像,需要在配置文件conf/local.conf中添加一条:
DISTRO_FEATURES_remove = "x11"
同样的命令执行编译过程,这将会生成一个不带X11视窗系统的镜像。
如果连LCD液晶屏显示都不需要,可以编译一个不带屏显支持的固件镜像:
bitbake core-image-base
编译好的镜像可以在项目文件夹下/tmp/deploy/images/ccimx6sbc中找到,这个目录包括编译生成以下这些文件:
您可以用Uboot命令把镜像写入eMMC或SD卡,从内置的flash或是外置的SD卡启动,请参考Uboot使用手册或DEY固件更新-核心板刷写新固件的操作指南。
编译过程中,DEY会根据配置文件去网上自动下载所需的软件包,在项目文件夹下有一个downloads目录,里面是编译过程自动下载的一些软件和库。
如果编译不成功,通常是因为网速原因或是因为不能翻墙导至下载不到一些软件包,可以从下面不翻墙编译方法中提供的网盘上下载downloads目录的压缩文件dey24r1downloads.tgz解压到项目文件夹中,重新执行bitbake命令即可。
直接下载downloads压缩包
通过指定DEY所需软件包国内镜像源,客户无需翻墙就能编译DEY镜像。
碰到国内镜像源下在维护无法访问时,而所需一些软件包托管在被GFW封杀的境外服务器上,则会导致编译不成功。这时,如果您无法翻墙,可以从网盘上下载downloads目录的压缩文件并解压到项目文件夹中,再进行编译即可。
DEY 3.0编译后生成的downloads目录的压缩包可从下面地址下载:
http://dey-mirror.eccee.com:1080/bitbake-downloads/dey3-with-tc/
如果您使用peyoot/PVPN进行翻墙后编译,那么事先用这个downloads放置在配置文件指定的目录下,可以省去许多包的下载过程,节约时间和速度。
不联网编译DEY
DEY编译时需要联网,以便下载所需的源码包,甚至有脚本会检则是否连网,把它作为能正常编译的前提条件。
为了在不联网时也能进行编译,需要一些技巧。
我们在本机建立一个源码下载的镜像源,然后在项目中配置好,以便无需互联网接入也可以编译镜像。在local.conf中配置好本地源镜像,
SOURCE_MIRROR_URL ?= "file:///home/you/dey-workspace/your-download-dir/" (请填实际的下载目录名)
INHERIT += "own-mirrors"
BB_GENERATE_MIRROR_TARBALLS = "1"
先编译一次,然后在local.conf中加上
BB_NO_NETWORK = "1"
这样,这个项目无需联网也能正常编译了。
由于许多开源上游软件的版本号是自动检测的,因此在编译过程还会有联网动作检查版本,不联网编译需要一些技巧来避免这个过程的联网动作失败导致编译不能通过。
如果您还没阅读如何定制文件系统,请先阅读本章节,它会指导您如何添加软件包,移除软件包,甚至查询当前配置中可添加的软件包有哪些,以及如何添加第三方Layer来扩展更多可集成到文件系统中的软件包等。
dey-all-in-one是Digi中国区推出的开源项目,它是一个集成式的DEY系统开发环境,将DEY源码和DEY客户项目集成在一起,可以支持DEY2.6,DEY3.0,支持在本地同步开发多个DEY项目,并用git的方式有效地进行版本控制和管理,极大简化编译结果的发布过程。
建议在初步了解DEY系统开发过程和方法后,利用dey-all-in-one来作为统一的开发平台。