开发环境搭建
当我们进行嵌入式产品开发时,通常需要搭建一个开发环境,以便进行代码的编写、编译和调试。在搭建开发环境时,需要考虑到不同的开发需求和工具选择。本文将介绍如何搭建一个典型的嵌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工具链
参考如下:
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镜像