0
点赞
收藏
分享

微信扫一扫

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章 SDK包的使用​

第四章 SDK包的使用​


ATK-DLRV1126开发板具有高性能低功耗,是一款基于Rockchip RV1126芯片开发的开发板。RV1126是Rockchip推出的一款编解码芯片,CPU为4核ARM Cortex-A7 32位,专用于面向人工智能的机械视觉领域,支持4K编解码,支持8路1080P同时进行编解码,内置2.0TOPS的NPU。像这种专用芯片,芯片厂商都会给出芯片的SDK包进行二次开发,用它来开发有很多好处,比如:不用安装一下特殊的软件和库,自带交叉工具链、文件系统和第三方库,可以直接编译出系统镜像,开发环境搭建比较容易等等。但是开发自由度不够高,更新Ruan件版本很麻烦,代码里有很多私货(芯片厂商自己定义的代码)等等,所以本章节就讲解如何使用和编译SDK包。下图是RV1126芯片框架图,如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_配置文件




4.1 SDK包源码简要

首先建议大家在编译SDK之前,先到正点原子资料网站下载ATK-DLRV1126开发板最新的SDK包,地址为:​​http://www.openedv.com/docs/boards/arm-linux/RV1126%20Linux.html​​,点击下载链接进入下载网站,如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_开发板_02


图4.1.1 ATK-DLRV1126下载链接图

在上图红色框住的为SDK下载链接地址,进入百度云DownLoad完整的SDK包,下完成后如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_文件系统_03


图4.1.2 SDK完整目录图

进入01、程序源码à01、正点原子SDK源码目录,里面有一个atk-rv1126_linux_release_v1.1_20221207.tar.bz2文件,此文件是正点原子维护的RV1126 SDK包,把此包拷贝到Ubuntu系统里面,在Ubuntu下解压出来,进入工程目录有下图的文件目录,如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_开发板_04


4.1.1 SDK包目录

从上图可以看出有很多文件夹,我们讲解一下每个目录或者文件的作用:

  • app : 存放上层应用程序的目录。
  • buildroot SDK包使用的文件系统为buildroot。
  • build.sh :编译用的脚本,使用方法后面会教。
  • device/rockchip :存放每个平台的一些编译和打包固件的脚步和预备文件。
  • docs :存放RK开发指导文件、平台支持列表、工具使用文档、Linux 开发指南等。
  • envsetup.sh :要修改文件系统时候要设置的环境脚本。
  • external : 存放相关的库,包括音频,视频等。
  • kernel kernel源码。
  • makefile :整个SDK包编译的Makefile
  • mkfirmware.sh :固件打包使用的脚本,默认在当前路径下的rockdev目录。
  • prebuilts : 存放交叉编译工具链。
  • rkbin: 存放固件和工具。
  • rkflash.sh : linux下的系统烧录脚本。
  • tools :存放固件和工具的目录。
  • u-boot :U-boot源码目录。
  • rockdev:存放编译输出固件的目录(整个SDK包编译完成后就会创建)

4.1.1 rv1126模块代码目录相关说明

什么叫做模块代码?一个完整的SDK包除了kernel、u-boot、buildroot之外,还需要提供上层的第三方库和APP,第三方库和APP合起来叫做模块代码。像阿尔法开发板或者ATK-CLMP157B开发板只有3座大山(kernel、u-boot和buildroot),没有模块代码,这样开发起来很麻烦。有了模块代码后,我们做产品就很容易了。比如:在rv1126上做人脸识别可以参考rockface模块代码。也可以做监控摄像头可以参考common_algorithmipc-daemonipcweb-backendipcweb-ng等等。一个SDK包包含了很多产品的应用代码。

部分模块代码目录路径

模块功能描述

external/linux-rga

Raster Graphic Acceleration (RGA2)

external/recovery

recovery和Rockchip升级代码

external/rkwifibt

Wi-Fi和BT

external/rk_pcba_test

PCBA测试代码

external/isp2-ipc

图像信号处理服务端

external/mpp

编解码代码

external/rkmedia

Rockchip 多媒体封装接口

external/camera_engine_rkaiq

图像处理算法模块

external/rknpu

NPU驱动

external/rockface

人脸识别代码

external/CallFunIpc

应用进程间通信代码

external/common_algorithm

音视频通用算法库

external/rknn-toolkit

模型转换、推理和性能评估的开发套件

app/libIPCProtocol

基于dbus,提供进程间通信的函数接口

app/mediaserver

提供多媒体服务的主应用(用于IPC应用开发参考或简单功能演 示)

app/ipc-daemon

系统守护服务

app/dbserver

数据库服务

app/netserver

网络服务

app/storage_manager

存储管理服务

app/ipcweb-backend

web后端

app/librkdb

数据库接口

app/ipcweb-ng

web前端,采用Angular 8框架

app/minigui_demo

基于MiniGUI实现一个简单画图demo

4.1.1.1 rv1126模块功能表格

4.1.2 rv1126开发相关文档说明

本小节就列出官方开发文档说明:(默认的路径为:开发板光盘A-基础资料à08、rv1126参考资料)

摄像头的驱动开发文档为:RV1126_RV1109àCameraàRockchip_Driver_Guide_VI_CN_v1.0.8.pdf

后续更新……

4.2 SDK包下的脚本使用

在4.1小节讲解SDK包的源码目录下有4个重要的脚本,本小节就教大家如何使用这些脚本进行编译。

  • build.sh脚本使用瑞芯微官方使用build.sh脚本来控制整个SDK包的编译和打包镜像,可以使用“-h”或者“help”命令来查看支持那些参数。运行以下命令即可查看:
    ./build.sh lunch
    第一运行的时候必须要指定板级的配置信息(瑞芯微很多芯片都是基于此SDK进行开发的,所以要告诉SDK包我们使用什么芯片),运行结果如下:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_开发板_05

4.2.1 板级配置文件选择图

查看build.sh使用帮助,命令如下所示:

./build.sh -h //或者./build.sh help

运行结果如下所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_开发板_06


图4.2.2 帮助命令参数

上图可以build.sh支持很多参数,不是所有参数都可以使用的。在rv1126上比较常用的参数有:uboot、lunch、kernel、all、buildrootrecovery等等。下面我们说下常用的参数,如下表格所示:

build.sh 参数

说明

例子

BoardConfig*.mk

选择板级的配置文件

./build.sh device/rockchip/rv1126_rv1109/BoardConfig-alientek-rv1126.mk

lunch

列出支持的板级配置文件,再选择板级的配置文件

./build.sh lunch

uboot

编译uboot

./build.sh uboot

kernel

编译kernel

./build.sh kernel

modules

编译内核模块

./build.sh modules

rootfs

编译文件系统

./build.sh rootfs

recovery

编译recovery

./build.sh recovery

all

编译整个SDK模块代码包

./build.sh all

cleanall

清除整个SDK

./build.sh cleanall

firmware

打包系统镜像

./build.sh firmware

updateimg

打包update镜像

./build.sh updateimg

app/<pkg>

编译app里面的模块代码

./build.sh app/ipc-daemon

external/<pkg>

编译external里面的模块代码

./build.sh external/rkmedia

4.2.1 build.sh参数表格

  • envsetup.sh 脚本使用envsetup.sh脚本主要的作用是,使能buildroot的配置文件。在RV1126这个芯片里,一共可以选择的配置文件有3种分别为:文件系统的配置文件recovery分区的配置文件(此分区主要是用作升级和复原的文件系统,它也是一个文件系统)libs的配置文件(生成一些库,方便我们写应用层代码做测试,导出文件系统的库文件)。运行命令如下所示:
    ./envsetup.sh
    运行结果如下图所示:

图4.2.3 envsetup的运行结果

Buildroot的输出目录下只能有一个“.config”文件,所以我们配置不同的如果我们要修改文件系统的配置文件,需要先使用./envsetup.sh 选择1这个配置,就会在输出目录下生成“.config”文件,运行结果如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_开发板_07


图4.2.4 选择文件系统的配置

图中红色框的内容“/home/alientek/atk-rv1126/buildroot/output/alientek_rv1126/.config”是配置文件的绝对路径,此时的配置文件只能配置文件系统,不能配置recovery和libs。使能完成后,在源码目录下可以当作buildroot的源码目录,比如我们可以进行文件系统的图形配置文件,运行以下代码即可:

make menuconfig

如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_开发板_08


图4.2.5图形化配置文件

  • mkfirmware.sh 脚本使用mkfirmware.sh脚本主要的作用是,把uboot、kernel、文件系统等等进行打包和生成镜像。使用方法请看4.11小节。
  • rkflash.sh脚本使用

rkflash.sh脚本主要的作用是,在linux系统下进行固件的烧录,使用方法请看3.9小节。

4.3 板级文件说明

BoardConfig-alientek-rv1126.mk是正点原子为ATK-DLRV1126开发板添加的板级信息,在源码目录下device/rockchip/rv1126_rv1109/BoardConfig-alientek-rv1126.mk,此文件包含整个SDK包所需要的配置信息,文件内容如下所示:

示例代码4.3.1 BoardConfig-alientek-rv1126.mk文件内容

1 #!/bin/bash​
2 ​
3 # Target arch​
4 export RK_ARCH=arm​
5 # Uboot defconfig​
6 export RK_UBOOT_DEFCONFIG=alientek_rv1126​
7 # Uboot image format type: fit(flattened image tree)​
8 export RK_UBOOT_FORMAT_TYPE=fit​
9 # Kernel defconfig​
10 export RK_KERNEL_DEFCONFIG=alientek_rv1126_defconfig​
11 # Kernel defconfig fragment​
12 export RK_KERNEL_DEFCONFIG_FRAGMENT=​
13 # Kernel dts​
14 export RK_KERNEL_DTS=rv1126-alientek​
15 # boot image type​
16 export RK_BOOT_IMG=zboot.img​
17 # kernel image path​
18 export RK_KERNEL_IMG=kernel/arch/arm/boot/zImage​
19 # kernel image format type: fit(flattened image tree)​
20 export RK_KERNEL_FIT_ITS=boot.its​
21 # parameter for GPT table​
22 export RK_PARAMETER=parameter-buildroot-fit.txt​
23 # Buildroot config​
24 export RK_CFG_BUILDROOT=alientek_rv1126​
25 # Recovery config​
26 export RK_CFG_RECOVERY=alientek_rv1126_recovery​
27 # Recovery image format type: fit(flattened image tree)​
28 export RK_RECOVERY_FIT_ITS=boot4recovery.its​
29 # ramboot config​
30 export RK_CFG_RAMBOOT=​
31 # Pcba config​
32 export RK_CFG_PCBA=​
33 # Build jobs​
34 export RK_JOBS=2​
35 # target chip​
36 export RK_TARGET_PRODUCT=rv1126_rv1109​
37 # Set rootfs type, including ext2 ext4 squashfs​
38 export RK_ROOTFS_TYPE=ext4​
39 # rootfs image path​
40 export RK_ROOTFS_IMG=rockdev/rootfs.${RK_ROOTFS_TYPE}​
41 # Set ramboot image type​
42 export RK_RAMBOOT_TYPE=​
43 # Set oem partition type, including ext2 squashfs​
44 export RK_OEM_FS_TYPE=ext2​
45 # Set userdata partition type, including ext2, fat​
46 export RK_USERDATA_FS_TYPE=ext2​
47 #OEM config​
48 export RK_OEM_DIR=oem_ipc​
49 # OEM build on buildroot​
50 export RK_OEM_BUILDIN_BUILDROOT=YES​
51 #userdata config, if not define this, system will format by RK_USERDATA_FS_TYPE​
52 export RK_USERDATA_DIR=userdata_normal​
53 #misc image​
54 export RK_MISC=wipe_all-misc.img​
55 #choose enable distro module​
56 export RK_DISTRO_MODULE=​
57 # Define pre-build script for this board​
58 export RK_BOARD_PRE_BUILD_SCRIPT=app-build.sh​
59 # Define package-file for update.img​
60 export RK_PACKAGE_FILE=rv1126_rv1109-package-file

4行:开发板的架构为ARM

第6行:Uboot的配置文件为alientek_rv1126_defconfig

第8行:Uboot的镜像格式为fit

第10行:kernel的配置文件为alientek_rv1126_defconfig

第14行:kernel的设备树为rv1126-alientek.dts。

第16行:内核的镜像类型为zboot.img(此文件包含zImage、设备树和logo)。

18行:内核镜像文件为zImage

20行:kernel镜像的加载位置配置文件为boot.its

第22行:开发板的分区文件,emmc会按照此分区文件进行分区。

第24行:buildroot的默认配置文件为alientek_rv1126_defconfig

第26行:recovery的默认配置文件为alientek_rv1126_recovery_defconfig

第28行:recovery镜像的加载位置配置文件为boot4recovery.its

第34行:以2进程进行编译。

第36行:指定芯片为rv1126_rv1109

第38行,文件系统的格式为ext4,只读文件系统可以设置为spuashfs格式。

第40行,文件系统的路径保存到rockdev/rootfs.ext4

第44行,oem分区的格式类型为ext2,只读oem可以设置为spuashfs。

第46行,userdata分区的格式类型为ext2

第48行,oem的配置文件夹为oem_ipc,在device/rockchip/oem目录下。

第50行,在buildroot上创建oem。

第52行,userdata的配置文件夹为userdata_normal,在device/rockchip/userdata/目录下。

第54行,misc分区使用img文件为wipe_all-misc.img

第58行,模块编译的先后顺序,由app-build.sh文件控制。

第60行,打包的配置文件为rv1126_rv1109-package-file

从上面的配置文件看出来,RK官方都是使用XXXX.mk文件,如果我们要基于原厂的SDK包进行开发,首先要先配置此文件。

4.4 全自动编译

编译前必须看3.1小节,重点是第51页安装软件。

第一次编译的时候需要下载很多压缩包,有些压缩包下载不了的,所以笔者把下载好的压缩包打包成dl.tar.gz,这样大家编译的时候不用下载了。此文件在开发板光盘A-基础资料à01、程序源码à02、buildroot下载源码包àbl.tar.gz,此压缩包拷贝到Ubuntu系统下,这边笔者拷贝到家目录。在源码目录下运行此命令进行创建dl目录:

mkdir buildroot/dl/ -p

运行结果如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_配置文件_09


图4.4.1 创建dl目录

创建完成后,把dl.tar.gz解压到buildroot/dl目录下,如下命令所示:

tar -axvf ~/dl.tar.gz -C buildroot/dl/

运行结果如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_文件系统_10


图4.4.2解压dl.tar.gz文件

RK官方提供了一按键编译功能,使用一条命令即可编译出镜像文件,在官方的源码目录下运行以下命令即可:

./build.sh lunch //选择1

./build.sh

编译成功后运行结果如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_开发板_11


图4.4.1 全自动编译


4.5 U-Boot编译和配置

4.5.1 uboot的编译

RK官方提供了很方便的编译方法,直接运行以下./build.sh uboot命令可以编译uboot。运行命令如下所示:

./build.sh uboot

运行结果如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_配置文件_12


4.5.1.1 编译uboot图

编译完成后,会在u-boot目录下生成uboot.img文件和rv1126_spl_loader_v1.08.108.bin文件,uboot.img文件就是我们要烧录的img镜像,rv1126_spl_loader_v1.08.108.bin是启动引导uboot的文件,就是在第3.7.2章节里的MiniLoaderAll.bin文件。查看结果如下所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_文件系统_13


图4.5.1.2 查看编译后的Uboot目录

4.5.2 uboot和SPL文件单独烧录

把这两个文件拷贝到Windows下,打开RKDevTool工具,导入配置选项“ATK-DLRV1126出厂系统配置.cfg”到软件里面,ATK-DLRV1126开发板进入LOADER模式(不能进入MASKROM)。在方框里面对“1”和“3”勾选上, Loader分区配置rv1126_spl_loader_v1.08.108.bin;Uboot分区配置uboot.img。配置结果如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_开发板_14


图4.5.2.1 上位机单独烧录uboot图

点击执行即可烧录。烧录完成后系统会自动重启,看看打印信息就知道有没有编译成功了,如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_配置文件_15


图4.5.2.2 新烧录的uboot启动信息

图4.5.2.2中的红色框里打印日期为“2022-11-15 18:42:58”。

4.5.3 uboot的配置

如果想要配置自己的uboot,可以运行以下命令进行操作,在SDK源码目录下:

cd u-boot //跳转到uboot目录下

make alientek_rv1126_defconfig //选择要修改Uboot配置文件,从板级文件知道

make menuconfig //进入图形界面配置

运行结果如下所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_开发板_16


图4.5.3 menuconfig图形配置

从图4.5.3中可以看出RK官方是使用2017.09月份的uboot进行修改,我们就可以配置自己的Uboot了,配置完运行以下命令进行保存配置文件。

make savedefconfig //把.config 保存为defconfig

cp defconfig configs/alientek_rv1126_defconfig //更新修改好的配置文件到alientek_rv1126_defconfig

./make.sh uboot //编译uboot

配置完成后我们可以直接用build.sh脚本进行编译了,就会生成我们想要的uboot.img文件和rv1126_spl_loader_v1.08.108.bin。可以把这几条命令写成脚本,就方便我们测试了。

4.6 kernel编译和配置

4.6.1 kernel的编译

编译kernel和uboot一样命令很简单,运行以下命令即可编译:

./build.sh kernel

运行此命令结果如下所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_文件系统_17


图4.6.1.1编译kernel图

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_文件系统_18


图4.6.1.2 设备树的电源域配置

图4.6.2中警告是build.sh打印出来的提醒我们注意设备树的电源域(图4.6.1.2)和硬件要一致,如果电压不一致可能会烧CPU,千万、千万、千万不要修改电源域的配置

编译完成后在“kernel”目录下生成zboot.img(配置文件里面决定生成为zboot.img)。可以跳转到内核里面,运行“ls”命令查看,结果如下所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_配置文件_19


图4.6.1.3 kernel文件夹目录

4.6.2 kernel的烧录

和单独烧录uboot系统一样,先把zboot.img文件拷贝到Windows系统里面,ATK-DLRV1126开发板进入LOADER模式,打开烧录软件,在方框里面对“6”勾选上,Boot分区配置zboot.img。配置结果如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_配置文件_20


图4.6.2.1 上位机烧录kernel配置图

点击运行即可进行烧录。烧录成功会自动重启,我们查看打印信息内核有没有替换成功,如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_配置文件_21


图4.6.2.2 内核烧录成功打印信息

4.6.3 kernel 的配置

如果想修改内核,也可以运行以下命令进行修改:

cd kernel/ //跳转到kernel

make ARCH=arm alientek_rv1126_defconfig //选择要修改的kernel配置文件

make ARCH=arm menuconfig //进入图形界面配置

运行结果如下所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_文件系统_22


图4.6.3.1 kernel menuconfig配置图形界面

从图4.6.3.1中可以看出RK官方是使用4.19.111版本的kernel进行修改,我们就可以配置自己的kernel了,配置完运行以下命令进行保存配置文件。

make ARCH=arm savedefconfig //把.config保存为defconfig

cp defconfig arch/arm/configs/alientek_rv1126_defconfig //更新修改好的配置文件到alientek_rv1126_defconfig

cd .. //跳转到源码目录

./build.sh kernel //编译内核

配置完成后我们可以直接用build.sh kernel脚本进行编译了,就会生成我们想要的zboot.img文件。可以把这几条命令写成脚本,就方便我们测试了。

4.6.4 logo的修改

在源码目录下,进入内核目录,运行以下命令:

ls

运行结果如下所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_文件系统_23


图4.6.4.1 查看kernel源码目录内容

在图4.6.4.1中红色框住的两个bmp文件就是启动的logo。logo.bmp为uboot的logo;logo_kernel.bmp为内核的logo。如果要替换自己的logo替换这两个文件即可。然后重新编译内核。注意:两个文件的8位的bmp格式的图片。

4.7 recovery编译和配置

Recovery不是必须要的功能,板级配置了此功能,所以我们也需要编译。

4.7.1 recovery编译

编译recovery的命令也是很简单的,命令如下图所示:

./build.sh recovery

运行此命令结果如下所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_开发板_24


图4.7.1.1 编译recovery图

如果编译不过通常是网络问题,这边笔者把要下载的软件包放到:开发板光盘A-基础资料à01、程序源码à02、buildroot源码包àdl.tar.bz2,把此文件解压到buildroot/dl目录(如果没有此目录可以自行创建)。编译完成就会生成buildroot/output/alientek_rv1126_recovery/images/recovery.img文件。运行以下命令可以查看文件有么有生成:

ls buildroot/output/alientek_rv1126_recovery/images/recovery.img

运行结果如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_文件系统_25


图4.7.1.1 查看recovery.img文件的生成

4.7.2 recovery的烧录

先把recovery.img文件拷贝到Windows系统里面,ATK-DLRV1126开发板进入LOADER模式,打开烧录软件,在方框里面对“7”勾选上,Recovery分区配置recovery.img。配置如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_配置文件_26


图4.7.2.1 recovery烧录配置

4.7.3 recovery的配置

在SDK包的源码目录下,运行以下命令即可配置recovery:

source envsetup.sh alientek_rv1126_recovery //配置recovery的板级信息

make menuconfig //进入图形界面配置

运行结果如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_文件系统_27


图4.7.3.1 配置recovery图

从图中可以看出recovery也是一个文件系统,只是此系统RK官方做了修改,是用buildroot 2018.02做的。配置完成后我们可以运行以下代码就行保存:

make savedefconfig //保存到buildroot/configs/alientek_rv1126_recovery_defconfig

./build.sh recovery //重新编译recovery

保存成功后,可以直接运行./build.sh recovery进行编译。

4.8 rootfs编译和配置

4.8.1 rootfs的编译

编译文件系统,还是一条命令解决,命令如下图所示:

./build.sh rootfs

编译结果如下所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_配置文件_28


图4.8.1.1 编译rootfs图

编译完成就会在源码目录下创建一个“rockdev”文件夹,跳转到此目录下查看究竟生成了那些文件,查看结果如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_开发板_29


图4.8.1.2 查看rockdev目录

上图可以看出生成了“demo.img”、“oem.img”和“rootfs.ext4”,rootfs.ext4其实就是文件系统rootfs.img。rootfs.ext4文件就是一个软连接“../buildroot/output/rockchip_rv1126_rv1109/images/rootfs.ext2”文件。

4.8.2 rootfs的烧录

先把rootfs.ext4、oem.img和demo.img文件拷贝到Windows系统里面,ATK-DLRV1126开发板进入LOADER模式,打开烧录软件,在方框里面对“5”、“8”和“10”勾选上,在配置我们要烧录的文件,rootfs分区配置rootfs.ext4;oem分区配置oem.img;demo分区配置demo.img。配置如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_开发板_30


图4.7.2.1 文件系统相关的配置

点击执行即可烧录rootfs、oem和demo。

4.8.3 rootfs的配置

  • buildroot配置在SDK包源码目录下,运行以下命令进行配置buildroot:
    source envsetup.sh alientek_rv1126 //配置buildroot对应defconfig
    make menuconfig //进入图形化界面
    运行结果如下所示:

4.8.3.1 buildroot配置图

配置完成好保存。运行以下命令进行保存和重新编译(注意:buildroot有时候不能生成一些配置选项,要运行./build.sh cleanall 命令清除,在编译)

make savedefconfig //保存配置文件到buildroot/configs/alientek_rv1126_defconfig

./build.sh rootfs

  • busybox配置

在SDK包源码目录下,运行以下命令进行配置busybox:

source envsetup.sh alientek_rv1126 //配置buildroot对应defconfig

make busybox-menuconfig //进入图形化界面

运行结果如下所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_配置文件_31


图4.8.3.2 busybox配置图

配置完成后,放回最上层,如图4.8.3.2中所示,选择“save Configuration to an Alternate File”进行保存到“.config”文件。运行以下命令进行保存刚刚修改的配置。

make busybox-update-config

将修改保存到配置文件 board/rockchip/common/base/busybox.config。重新编译文件系统即可。

4.9 编译第三方库或者APP

整个SDK包里面包含了很多第三方库和APP,如果想单独编译这些可以运行以下命令即可,运行以下命令即可:

./build.sh external/mpp app/mediaserver

./build.sh rootfs

编译完成后可以重新烧录rootfs.img

4.10 编译BSP包

我们可以编译出只包含音视频编解码库、NPU库以及头文件。注意:BSP包不包含文件系统的。

source envsetup.sh alientek_rv1126_libs

make -j12

编译BSP生成的目录buildroot/output/alientek_rv1126_libs/BSP

4.11 固件打包

在上几章节中我们生成了很多的img文件,每次都要在不同的目录下拷贝很麻烦,官方提供了一个脚本,运行脚本命令如下所示(在SDK源码目录下运行)

source envsetup.sh alientek_rv1126 //选择环境变量alientek_rv1126

./mkfirmware.sh

运行结果如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_文件系统_32


图4.11.1 固件打包

打包成功会在源码目录下新建一个“rockdev”目录,把需要烧录的文件打包进里面。我们可以把这些文件通过FTP拷贝到对应的Windows目录下进行烧录。也可以使用rkflash.sh脚本在Ubuntu进行烧录。到这里SDK已经编译完成了,我们就跳转到“rockdev”目录下查看生成了那些文件,运行“ls -l”查看文件,如下图所示:

《DFZU2EG_4EV MPSoC之嵌入式Linux开发指南》第四章  SDK包的使用​_配置文件_33


图4.11.2 rockdev目录文件

可以看出很多文件都是通过软连接,简单的讲解每个文件的作用:

boot.img:里面包含了设备树、kernel和logo。注:里面有多个设备树文件。

demo.img:正点原子官方出厂demo。

MiniLoaderAll.bin:此文件负责初始化DDR,引导Uboot。相当于SPL或者TF-A

misc.img:常用来作为系统升级时或者恢复出厂设置时使用。

oem.img:提供给厂商用的分区文件,像RK把他们自己库都放到这里。

parameter.txt:分区相关的文件。

recovery.img:升级相关的文件系统。

rootfs.img:buildroot的文件系统。

uboot.img:里面包含uboot和设备树。

update.img:整个SDK的img。

userdata.img:用户分区。


举报

相关推荐

0 条评论