开发环境搭建

当我们进行嵌入式产品开发时,通常需要搭建一个开发环境,以便进行代码的编写、编译和调试。在搭建开发环境时,需要考虑到不同的开发需求和工具选择。本文将介绍如何搭建一个典型的嵌i'l入式开发环境,包括在 Windows PC 上面安装必要驱动开发工具,以及在 Linux 服务器上搭建 SDK 编译环境和应用程序交叉编译环境

注解

当前SDK只支持在Linux环境下编译和进行二次开发。

1. 开发环境简介

一个典型的嵌入式开发环境通常包括 Linux服务器Windows PC目标硬件板 ,典型开发环境如下图所示。

  • Linux服务器上建立交叉编译环境,为软件开发提供代码、更新下载和进行编译等服务。

  • PC和Linux服务器共享程序,并安装PuTTy或Minicom,通过网络远程登录到Linux服务器,进行交叉编译,及代码的开发调试。

  • PC通过串口和USB与目标硬件板连接,可将编译后的镜像文件烧写到目标硬件板,并调试系统或应用程序。

小技巧

开发环境中使用了Windows PC,实际上很多工作也可以在Linux PC上完成,如使用Minicom代替Putty等,用户可自行选择。

2. Window PC 开发坏境搭建

2.1 通用开发工具安装

2.2 Rockchip USB 驱动安装

请访问:资源下载,找到【DriverAssitant】工具,下载安装。

注解

在windows电脑安装 Rockchip USB 驱动,主要是为了能识别开发板上的 USB 设备,用于固件烧录和ADB调试功能。项目开始前,请务必先安装 Rockchip USB 驱动,否则无法识别到开发板USB设备,无法进行固件烧录和ADB调试。

安装步骤如下:

验证安装成功:

将【XNIUPI-小牛派】主机TYPE-C烧录口连接到电脑,然后上电开机,开机以后长按RST/UP按键 (HDMI接口下方小按键),此时开发板会进入LOADER模式,此时打开Windows电脑的设备管理器,可以看到如下图所示的Rockchip Device,则表示驱动安装成功。安装驱动成功后,即可开始对板卡执行固件烧录、ADB调试等操作。

2.3 烧录工具下载与使用

3. Linux 服务器开发环境搭建

3.1 服务器配置要求

  • 处理器:x86架构 64位处理器

  • 内存:16GB及以上

  • 磁盘空间:512GB以上(除了系统盘,最好有另外单独的大于1T的硬盘用于存放SDK)

  • 操作系统:Ubuntu 22.04 LTS

  • 网络:千兆网卡 :::tip 提示 我们推荐使用Ubuntu 22.04或更高版本的系统进行编译,以下步骤以Ubuntu 22.04为例,并经过验证。如您使用其他Ubuntu版 本,有可能需要自行调整命令。 :::

3.2 安装编译SDK需要的库和工具

使用命令行进行设备开发时,可以通过以下步骤安装编译SDK需要的库和工具。

sudo apt-get update && sudo apt-get install git ssh make gcc libssl-dev \
liblz4-tool expect expect-dev g++ patchelf chrpath gawk texinfo chrpath \
diffstat binfmt-support qemu-user-static live-build bison flex fakeroot \
cmake gcc-multilib g++-multilib unzip device-tree-compiler ncurses-dev \
libgucharmap-2-90-dev bzip2 expat gpgv2 cpp-aarch64-linux-gnu libgmp-dev \
libmpc-dev bc python-is-python3 python2

小技巧

上述命令安装了一系列的工具和库,用于编译和开发Rockchip Linux SDK源代码,具体的安装命令及其功能如下:

  • git:用于管理源代码的版本控制工具。

  • ssh:用于远程登录和管理服务器的安全协议。

  • make:用于自动化构建项目的工具。

  • gcc:GNU Compiler Collection,用于编译C语言程序。

  • libssl-dev:OpenSSL库的开发文件,用于支持SSL/TLS协议。

  • liblz4-tool:LZ4压缩算法的工具,用于压缩和解压缩数据。

  • expect:用于自动化交互的脚本语言。

  • expect-dev:expect库的开发文件。

  • g++:GNU C++ Compiler,用于编译C++程序。

  • patchelf:用于修改ELF格式的可执行文件的工具。

  • chrpath:用于修改ELF格式的可执行文件的运行时路径的工具。

  • gawk:一种文本处理工具,用于处理文本文件。

  • texinfo:用于生成信息文档的工具。

  • chrpath:用于修改ELF格式的可执行文件的运行时路径的工具。

  • diffstat:用于显示文件差异统计信息的工具。

  • binfmt-support:用于支持二进制格式的文件的工具。

  • qemu-user-static:用于在用户空间中运行QEMU虚拟机的工具。

  • live-build:用于创建自定义Linux发行版的工具。

  • bison:用于生成解析器的工具。

  • flex:用于生成词法分析器的工具。

  • fakeroot:用于以root权限运行命令的工具。

  • cmake:用于构建跨平台的软件项目的工具。

  • gcc-multilib:用于编译多平台的C语言程序的工具。

  • g++-multilib:用于编译多平台的C++程序的工具。

  • unzip:用于解压zip格式的文件的工具。

  • device-tree-compiler:用于编译设备树的工具。

  • ncurses-dev:用于开发ncurses库的工具。

  • libgucharmap-2-90-dev:用于开发Gucharmap库的工具。

  • bzip2:用于压缩和解压缩bzip2格式的文件的工具。

  • expat:用于解析XML格式的文件的工具。

  • gpgv2:用于验证GPG签名的工具。

  • cpp-aarch64-linux-gnu:用于编译C++程序的工具。

  • libgmp-dev:用于编译C++程序的工具。

  • libmpc-dev:用于编译C++程序的工具。

  • bc:用于执行基本的数学运算的工具。

  • python-is-python3:用于将python命令指向Python 3的工具。

  • python2:Python 2的解释器。

以上命令使用于Ubuntu 22.04 LTS系统,其他版本请根据安装包名称对应的安装命令进行修改调整,若编译遇到报错,可以视报错信息,安装对应的软件包。其中需要注意以下几点:

  • python要求安装python 3.6及以上版本,此处以python 3.6为例。

  • make要求安装make 4.0及以上版本,此处以make 4.2为例。

  • lz4要求安装lz4 1.7.3及以上版本。

  • 编译Yocto需要VPN网络。

3.2.1 检查和升级主机的python版本

检查和升级主机的python版本方法如下:

$ python3 --version
Python 3.10.6

如果不满⾜python>=3.6版本的要求, 可通过如下⽅式升级:

PYTHON3_VER=3.6.15
echo "wget
https://www.python.org/ftp/python/${PYTHON3_VER}/Python-${PYTHON3_VER}.tgz"
echo "tar xf Python-${PYTHON3_VER}.tgz"
echo "cd Python-${PYTHON3_VER}"
echo "sudo apt-get install libsqlite3-dev"
echo "./configure --enable-optimizations"
echo "sudo make install -j8"

3.2.2 检查和升级主机的make版本

检查和升级主机的make版本⽅法如下:

$ make -v
GNU Make 4.2
Built for x86_64-pc-linux-gnu
  • 升级make 4.2新版本

$ sudo apt update && sudo apt install -y autoconf autopoint
git clone https://gitee.com/mirrors/make.git
cd make
git checkout 4.2
git am $BUILDROOT_DIR/package/make/*.patch
autoreconf -f -i
./configure
make make -j8
sudo install -m 0755 make /usr/bin/make

3.2.3 检查和升级主机的lz4版本

检查和升级主机的lz4 版本⽅法如下:

  • 检查主机lz4 版本

$ lz4 -v
*** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
  • 升级lz4 新版本

git clone https://gitee.com/mirrors/LZ4_old1.git
cd LZ4_old1
make
sudo make install
sudo install -m 0755 lz4 /usr/bin/lz4

3.2.4 检查和升级主机的git版本

  • 检查主机git 版本

$ git -v
git version 2.38.0
  • 升级git 新版本

$ sudo apt update && sudo apt install -y libcurl4-gnutls-dev
git clone https://gitee.com/mirrors/git.git --depth 1 -b v2.38.0
cd git
make git -j8
make install
sudo install -m 0755 git /usr/bin/git

4. 交叉编译工具链介绍

鉴于Rockchip Linux SDK目前只在Linux PC环境下编译,我们也仅提供了Linux下的交叉编译工具链。

prebuilt目录下的工具链是U-Boot和Kernel使用。

具体Rootfs需要用各自对应的工具链,或者使用第三方工具链进行编译。

4.1 U-Boot 及Kernel编译工具链

Linux4.4/4.19 SDK:
prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-Linux5.10 SDK:
prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu

对应版本

Linux4.4/4.19 SDK:
gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05)
Linux5.10 SDK:
gcc version 10.3.1 20210621 (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29))

4.2 Buildroot工具链

若需要编译单个模块或者第三⽅应⽤,需对交叉编译环境进⾏配置。⽐如RK3588,其交叉编译⼯具位于buildroot/output/rockchip\_rk3588/host/usr⽬录下,需要将⼯具的bin/⽬录和aarch64-buildroot-linux-gnu/bin/⽬录设为环境变量,在顶层⽬录执⾏⾃动配置环境变量的脚本:

source buildroot/envsetup.sh

输⼊命令查看:

cd buildroot/output/rockchip_rk3588/host/usr/bin
./aarch64-linux-gcc --version

此时会打印如下信息:

aarch64-linux-gcc.br_real (Buildroot linux-5.10-gen-rkr6) 12.3.0

如果需要其他平台或版本的⼯具链,需⾃⾏编译。 上述环境准备好后,Linux服务器开发环境搭建已完成,可以下载编译源代码了。 具体可参考

buildroot/docs/manual/using-buildroot-toolchain.txt
buildroot/docs/manual/adding-packages.txt

4.3 Debian工具链

使⽤docker机器端,gcc或者 dpkg-buildpackage 进⾏相关编译。

4.4 Yocto工具链

参考如下:

Yocto-wiki

Yocto-docs

5. 虚拟机环境搭建

5.1 主机配置要求

以下为用于安装虚拟机的电脑主机配置要求不做限制,但是最终分配给虚拟机的配置应满足如下条件:

  • 处理器:x86架构 64位处理器 4核处理器及以上

  • 内存:4GB及以上

  • 磁盘空间:512GB以上

  • 操作系统:Ubuntu 22.04 LTS

5.2 下载虚拟机软件

下载安装虚拟机软件:【Virtual-Box】 或者 【VMWare】

【Virtual-Box】安装请参考:https://blog.csdn.net/kaixuansui/article/details/89334859/

5.3 下载虚拟机 Ubuntu 镜像

小技巧

安装好 Ubuntu 虚拟机环境后,建议不要在线升级Ubuntu版本!

Ubuntu 官方镜像

推荐使用Ubuntu 22.04 系统进行编译,你可以从官方地址:Ubuntu22.04官方镜像下载对应的64 位镜像文件。

如果使用Ubuntu官网下载的镜像,安装完成以后可以参考本文Linux物理机开发环境搭建过程搭建开发环境。

XNIUPI 虚拟机 Ubuntu 镜像

同时为了方便用户快速搭建开发环境,我们也提供了已经安装了Linux开发环境的虚拟机Ubuntu镜像,用户也可以直接基于该镜像创建Linux虚拟机。

虚拟机Ubuntu镜像下载地址:Ubuntu 虚拟机镜像(预安装开发环境版本 敬请期待)

5.4 虚拟机环境搭建步骤

【Virtual-Box】创建Linux虚拟机请参考:https://blog.csdn.net/kaixuansui/article/details/89354651

5.5 增强功能

安装增强功能可以实现共享剪切板功能共享文件夹功能。共享粘贴板可在PC和虚拟机之间互相粘贴复制内容。文件夹共享可以在本地主机下创建一个文件夹,然后VirtualBOX将该文件夹映射到虚拟机下指定的文件夹中,这样我们就可以访问该文件夹下的子文件夹以及文件了。这两个功能都能极大地提高我们的开发效率

注意: 在共享文件夹的路径中如果是挂在的 Windows 系统的文件夹,可能无法成功地下载Tina的SDK代码,注意SDK的下载目录不要设置在共享文件夹中。

5.5.1 安装增强功能的方法

方法一: 点击虚拟机界面上面菜单栏的【设备】--【安装增强功能】。然后可以看到在虚拟机的光驱中自动加载了增强iso的文件(VBoxGuestAdditions.iso),点击【Run】运行按钮。接着按虚拟机所指引步骤进行即可。

方法二: 在linux中挂载光驱。

参考链接如下:https://jingyan.baidu.com/article/fdbd42779d9530b89e3f489c.html

5.5.2 实现共享文件夹的方法

在VirtualBox中创建共享文件夹的参考链接如下:http://www.koudaipe.com/funny/1002.html

创建共享文件夹以后,可能由于权限问题无法操作,需要做如下操作:

sudo usermod -aG vboxsf $(whoami)

*注:$(whoami) 替换成您Ubuntu的用户名

6. Docker 环境搭建

为帮助开发者快速完成上⾯复杂的开发环境准备⼯作,我们也提供了交叉编译器Docker镜像,以便客⼾可以快速验证,从而缩短编译环境的构建时间。

使⽤Docker环境前,可参考如下⽂档进⾏操作<SDK>/docs/cn/Linux/Docker/Rockchip_Developer_Guide_Linux_Docker_Deploy_CN. pdf 。 已验证的系统如下:

发行版本 Docker版本 镜像加载 固件编译
ubuntu 22.04 24.0.5 pass pass
ubuntu 21.10 20.10.12 pass pass
ubuntu 21.04 20.10.7 pass pass
ubuntu 18.04 20.10.7 pass pass
fedora35 20.10.12 pass NR (not run)

Docker镜像下载地址:Docker镜像