Skip to main content

1.2. 环境搭建

Luban SDK 的开发需要在 Linux 系统中进行,所以首先需要有一台运行着 Linux 系统的计算机。

ArtInChip 推荐的 Linux 发行版为 Ubuntu 20.04 LTS(Long Term Support)版本,其他版本也可行,只是安装软件包的依赖和版本不同。

1.2.1. 关于 Ubuntu 系统

Ubuntu(乌班图)是一个以桌面应用为主的 Linux 操作系统,作为 Linux 发行版中的后起之秀,Ubuntu 在短短几年时间里便迅速成长为从 Linux 初学者到实验室用计算机/务器都适合使用的发行版。

Ubuntu 在中国有非常高的知名度,具有庞大的社区力量支持,和最新最全的开放源代码的自由软件支持,开发者可以方便地获得帮助。

1.2.2. 安装 Ubuntu 系统

Ubuntu 的安装教程在网上有很多可参考,以及相关常见问题也可以通过搜索查找解决方案。

1.2.3. 下载 Luban

Luban SDK 的代码托管于 Gitee 服务器中,为开源代码,可以直接从下面的仓库地址中下载:

git clone https://gitee.com/artinchip/d211.git

1.2.4. 编译环境准备

Luban SDK 的开发环境中,还需要安装一些依赖包,并对几个关键工具有版本要求:

  • GCC 版本 >= 6.4
  • GLIBCXX 版本 >= 3.4.22(在libstd++.so.6库文件中查看该版本号)
  • Python3 版本 >= 3.5

决定 Ubuntu 系统是否能自动完成一键安装的关键条件: 是否有可以访问的软件源。

  • 有软件源,无论是外网的源、还是内网搭建的源,就可以完成一键安装。
  • 没有软件源,就需要手动逐个的下载安装包、执行安装。

1.2.4.1. 一键安装

Luban SDK 提供了一键安装脚本 oneclick.sh,方便用户 最快1分钟搭建好开发环境

有可用软件源的网络环境中,Ubuntu 系统是用 apt-get 工具完成软件安装,“一键安装” 脚本也需要用到此 apt-get 工具。

在命令行中执行一键安装脚本的方法:

cd Luban_SDK_Root_Directory/
./tools/scripts/oneclick.sh quiet

oneclick.sh 会自动检查当前系统的版本、环境,在软件源可以正常访问的情况下,逐个安装 Luban 需要的软件工具,安装成功后会有提示信息:

...
fdt 0.3.2
[OK]

>>> Congratulations! All the package is ready.
>>> Enjoy the LubanOS!

小技巧

执行 oneclick.sh 时的“quiet”参数会隐藏所有需要用户确认的环节,如果去掉“quiet”参数,会在以下几个软件包的安装时提问是否继续:

  • GCC
  • Python3
  • Python3-dev
  • Python3-pip

oneclick.sh 目前已支持的系统有:

  • Ubuntu 14.04、16.04、18.04、20.04、22.04
  • CentOS 7.x、8.x

注解

Ubuntu 14.04、16.04 和 CentOS 7.x 自带的GCC 版本太低, oneclick.sh 会自动编译安装一份GCC 6.4

当然,用户如果需要也可以通过手动执行 apt-get 来逐个安装依赖,方法:

sudo apt-get update
sudo apt-get install build-essential python3 python3-pip
sudo pip install pycrypto
sudo pip install fdt

1.2.4.2. 手动安装

如果使用的 Ubuntu 系统上没有网络环境,则可以离线安装,可以使用 ArtInChip 提供的离线包进行安装,deb 离线包分三类:

  • tools包
  • python包
  • vim 包

1.2.4.2.1. deb 文件安装

1. cd tools
sudo dpkg -i *.deb
2. cd python
sudo dpkg -i *.deb
3. cd vim
sudo dpkg -i vim-tiny_2%3a8.1.2269-1ubuntu5.7_amd64.deb
sudo dpkg -i *.deb

1.2.4.2.2. 依赖包获取下载

但是不同的系统的依赖可能会不一样,如果使用离线包安装依然有依赖缺失的话,可以采用如下方式解决

  • 单独安装某一deb安装包,获取缺失的依赖
  • 在另外一有网络环境的计算机上下载缺失的依赖包
  • 复制所下载的依赖包到本服务器,安装依赖包
aic@aic-virtual-machine:~/work/test$ sudo dpkg -i libgcc-9-dev_9.3.0-17ubuntu1~20.04_amd64.deb
......
dpkg: dependency problems prevent configuration of libgcc-9-dev:amd64:
libgcc-9-dev:amd64 depends on libitm1 (>= 9.3.0-17ubuntu1~20.04); however:
Package libitm1 is not installed.
libgcc-9-dev:amd64 depends on libatomic1 (>= 9.3.0-17ubuntu1~20.04); however:
Package libatomic1 is not installed.
libgcc-9-dev:amd64 depends on libasan5 (>= 9.3.0-17ubuntu1~20.04); however:
Package libasan5 is not installed.
libgcc-9-dev:amd64 depends on liblsan0 (>= 9.3.0-17ubuntu1~20.04); however:
Package liblsan0 is not installed.
libgcc-9-dev:amd64 depends on libtsan0 (>= 9.3.0-17ubuntu1~20.04); however:
Package libtsan0 is not installed.
libgcc-9-dev:amd64 depends on libubsan1 (>= 9.3.0-17ubuntu1~20.04); however:
Package libubsan1 is not installed.
libgcc-9-dev:amd64 depends on libquadmath0 (>= 9.3.0-17ubuntu1~20.04); however:
Package libquadmath0 is not installed.

dpkg: error processing package libgcc-9-dev:amd64 (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
libgcc-9-dev:amd64

aic@aic-virtual-machine:~/work/test$ apt-get download libitm1 libatomic1 libasan5 liblsan0 libtsan0 libubsan1 libquadmath0
Get:1 http://cn.archive.ubuntu.com/ubuntu focal-updates/main amd64 libasan5 amd64 9.3.0-17ubuntu1~20.04 [394 kB]
Get:2 http://cn.archive.ubuntu.com/ubuntu focal-updates/main amd64 libatomic1 amd64 10.3.0-1ubuntu1~20.04 [9,284 B]
Get:3 http://cn.archive.ubuntu.com/ubuntu focal-updates/main amd64 libitm1 amd64 10.3.0-1ubuntu1~20.04 [26.2 kB]
Get:4 http://cn.archive.ubuntu.com/ubuntu focal-updates/main amd64 liblsan0 amd64 10.3.0-1ubuntu1~20.04 [835 kB]
Get:5 http://cn.archive.ubuntu.com/ubuntu focal-updates/main amd64 libquadmath0 amd64 10.3.0-1ubuntu1~20.04 [146 kB]
Get:6 http://cn.archive.ubuntu.com/ubuntu focal-updates/main amd64 libtsan0 amd64 10.3.0-1ubuntu1~20.04 [2,009 kB]
Get:7 http://cn.archive.ubuntu.com/ubuntu focal-updates/main amd64 libubsan1 amd64 10.3.0-1ubuntu1~20.04 [784 kB]
Fetched 4,204 kB in 18s (231 kB/s)

aic@aic-virtual-machine:~/work/test$ cp *.deb /media/aic/SDCARD/

1.2.4.3. Python 相关安装

Python 目录中即包含Python 的deb 安装文件,和普通的deb文件安装类似,如果有依赖,则继续依赖下载的策略;Python 的工具有两种安装方式:

1.2.4.3.1. 编译安装

可以下载源码进行安装,www.pypi.org 上有很多Python 工具,最通用的pip 等,可以通过源码build安装,以pip-22.0.3 为例:

cd pip-22.0.3/
python3 setup.py build
sudo python3 setup.py install

1.2.4.3.2. 压缩包安装

Python 的打包格式有Wheel(.whl) 和Egg(.egg) 两种格式,目的是支持不需要编译的安装过程,它们实际上也是一种压缩文件。 Wheel 文件可以使用pip 直接安装。

sudo pip install pycryptodome-3.14.1-cp27-cp27mu-manylinux2010.whl

1.2.5. Luban 编译

编译环境准备好后,即可进行系统编译

1.2.5.1. 常规编译

make list                              --> 列出当前可用的项目配置
make d211_demo_defconfig --> 应用具体的项目配置
make --> 编译打包

1.2.5.2. 一步直达

source tools/onestep.sh                --> 一步直达命令
lunch d211_demo_defconfig --> 选择 d211_per_spinand_defconfig
m --> 编译打包

1.2.5.3. eMMC 固件

如果开发板使用的是 eMMC (eNand)编译后的固件名称为 d211_demo_v1.0.0.img

Image file is generated: /xxx/d211/luban/output/d211_demo/images/d211_demo_v1.0.0.img

1.2.5.4. SPI NAND 固件

如果开发板使用的是 SPI NAND,则编译后会生成固件的名称为: d211_xxx_page_2k_block_128k_v1.0.0.img

如果开发板的 SPI NAND 的 page size 为 4K 大小的(很少用到),需要在 target/d211/xxx/image_cfg.json 进行配置以编译出 d211_xxx_page_4k_block_256k_v1.0.0.img

"info": { // Header information about image
"platform": "d211",
"product": "demo128_nand",
"version": "1.0.0",
"media": {
"type": "spi-nand",
"device_id": 0,
"array_organization": [
// { "page": "4k", "block": "256k" },
{ "page": "2k", "block": "128k" },
],
}
},