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" },
        ],
    }
},