文章目录

  • 一、单独编译
    • 1.1 单独配置编译kernel
    • 1.2 单独编译配置Buildroot
    • 1.3 单独编译rkmedia
      • 1.3.1 添加自己的rkmedia代码文件
  • 二、问题解决记录
    • 编译出来的文件系统体积过大无法打包成img文件
      • 分区大小怎么看
      • 修改分区大小
  • 三、名词解释
    • Rockchip提供的主要软件包
    • Rockchip平台中的几个概念和他们之间的关系
    • 摄像头视频数据的流程
    • 设备分区
    • Linux设备常用缩略语

荣品的RV1126。

目录名 解释
buildroot 定制根文件系统。
app 存放上层应用程序。
external 相关库,包括音频、视频等。
kernel kernel代码。
device/rockchip 存放每个平台的一些编译和打包固件的脚本和预备文件。
docs 存放开发指导文件、平台支持列表、工具使用文档、Linux 开发指南等。
prebuilts 存放交叉编译工具链。
rkbin 存放固件和工具。
rockdev 存放编译输出固件。
tools 存放一些常用工具。
u-boot U-Boot代码。

荣品开发板SDK,编译步骤:
以下进入SDK根目录下进行

./build.sh lunch
32 # 32. pro-rv1126.mk
source envsetup.sh
93 # 93. rockchip_rv1126_rv1109_facial_gate

./build.sh lunch其实是在目录SDK/device/rockchip/rv1126_rv1109里面选择一个BoardConfig,里面定义了uboot和kernel的编译defconfig。
source envsetup.sh其实是选择buildroot的编译defconfig文件,他会进入SDK/buildroot/configs/目录列出里面rockchip的defconfig文件,这里选择93就会在buildroot的编译的时候根据rockchip_rv1126_rv1109_facial_gate_defconfig的配置来构建文件系统。。、

一、单独编译

如果执行 build.sh 运行完成后没有在 rockdev/ 目录下生成镜像文件,请执行:

./build.sh firmware;./build.sh updateimg

1.1 单独配置编译kernel

设备树目录:pro-rv1126 kernel/arch/arm/boot/dts/pro-rv1126.dts

$ cd kernel/
$ make ARCH=arm menuconfig
$ make ARCH=arm savedefconfig
$ cp defconfig arch/arm/configs/rv1126_defconfig
$ cd ..
$ ./build.sh kernel && ./build.sh firmware

生成镜像路径: rockdev/
生成镜像:boot.img

1.2 单独编译配置Buildroot

$ source envsetup.sh rockchip_rv1126_rv1109_facial_gate
$ make ARCH=arm menuconfig
$ make ARCH=arm savedefconfig
$ ./build.sh buildroot && ./build.sh firmware

编译完 buildroot 完成后会自动编译 rootfs
生成镜像路径: rockdev/
生成镜像:rootfs.img

默认 buildroot config 文件路径:buildroot/configs/rockchip_rv1126_rv1109_facial_gate_defconfig
编译出来的文件系统路径:buildroot/output/rockchip_rv1126_rv1109_facial_gate/target/

1.3 单独编译rkmedia

先编译buildroot

$ source envsetup.sh rockchip_rv1126_rv1109_facial_gate
$ make ARCH=arm menuconfig
$ make ARCH=arm savedefconfig
$ ./build.sh buildroot && ./build.sh firmware

然后再在SDK根目录运行:./build.sh external/rkmedia

  • 源码目录:SDK/external/rkmedia/example/
  • 编译完成后的输出目录是(脚本会拷贝一个一模一样的目录到/build):SDK/buildroot/output/rockchip_rv1126_rv1109_facial_gate/build/rkmedia/examples/

1.3.1 添加自己的rkmedia代码文件

我想添加一个自己的代码文件rkmedia_test.c到rkmedia然后编译的步骤:

  • 在目录SDK/external/rkmedia/example/添加一个文件rkmedia_test.c
  • 在该文件中添加编译相关的字段SDK/external/rkmedia/examples/CMakeLists.txt
    #--------------------------
    #  rkmedia_test
    #--------------------------
    add_executable(rkmedia_test rkmedia_test.c ${COMMON_SRC})
    add_dependencies(rkmedia_test easymedia)
    target_link_libraries(rkmedia_test easymedia)
    target_include_directories(rkmedia_test PRIVATE ${CMAKE_SOURCE_DIR}/include)
    install(TARGETS rkmedia_test RUNTIME DESTINATION "bin")
    
  • 然后在根目录编译:./build.sh external/rkmedia
  • 编译完成后的输出目录:SDK/buildroot/output/rockchip_rv1126_rv1109_facial_gate/build/rkmedia/examples/,这个目录下会拷贝一个rkmedia_test.c以及rkmedia_test可执行文件
  • 修改自己的代码然后编译,直接在目录SDK/buildroot/output/rockchip_rv1126_rv1109_facial_gate/build/rkmedia/examples/中修改自己的.c文件,然后在SDK/buildroot/output/rockchip_rv1126_rv1109_facial_gate/build/rkmedia/examples/目录里面运行make命令就可以了!
  • 注意,在SDK/buildroot/output/rockchip_rv1126_rv1109_facial_gate/build/rkmedia/examples/目录中修改的代码不会保存到源码工程中即:./build.sh external/rkmedia/example,如果此时来一个全局编译,你代码将会被拷贝成最原始的那一份。

二、问题解决记录

编译出来的文件系统体积过大无法打包成img文件

打包命令是:./build.sh firmware

倒数第四行:error: rootfs image size exceed parameter!

修改文件:/sdk/device/rockchip/rv1126_rv1109/parameter-facial-gate.txt

FIRMWARE_VER: 8.1
MACHINE_MODEL: RV1126
MACHINE_ID: 007
MANUFACTURER: RV1126
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00010000@0x00008000(boot),0x00010000@0x00018000(recovery),0x00010000@0x00028000(backup),0x00200000@0x00038000(rootfs),0x00040000@0x00238000(oem),-@0x00278000(userdata:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

分区大小怎么看

上面所描述的就是整个emmc中分区的排布方式,烧写工具和启动程序会按照该表进行烧录和引导。他的格式是:

分区大小 @ 所在地址 (分区名)

其中大小和地址都是以块为单位(1块=512byte),换算成MByte可以用以下公式:

MByte = N * 512 / 1024 / 1024

例如我们看uboot这行,他的分区大小是0x2000, 也就是 8192块 * 512字节每块 / 1024 / 1024 = 4MByte ,所以uboot分区大小就是4M,而他所在的位置也是在emmc 4M的位置。

修改分区大小

而我们的rootfs分区是大小是:0x200000,也就是2097152 x 512 / 1024 / 1024 = 1024正好是1GiB。
现在我把它分配成2GiB:

FIRMWARE_VER: 8.1
MACHINE_MODEL: RV1126
MACHINE_ID: 007
MANUFACTURER: RV1126
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00010000@0x00008000(boot),0x00010000@0x00018000(recovery),0x00010000@0x00028000(backup),0x00400000@0x00038000(rootfs),0x00040000@0x00438000(oem),-@0x00478000(userdata:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

很简单吧!
好了编译没有问题!

三、名词解释

Rockchip提供的主要软件包

部分模块代码目录路径 模块功能描述
external/recovery recovery
external/rkwifibt Wi-Fi和BT
external/libdrm DRM接口
external/rk_pcba_test external/rk_pcba_test
external/isp2-ipc 图像信号处理服务端
external/mpp 编解码代码
external/rkmedia Rockchip多媒体封装接口
external/rkupdate Rockchip升级代码
external/camera_engine_rkaiq 图像处理算法模块
external/rknpu NPU驱动
external/rockface 人脸识别代码
external/CallFunIpc 应用进程间通信代码
external/common_algorithm 音视频通用算法库
external/rknn-toolkit 模型转换、推理和性能评估的开发套件
app/libIPCProtocol 基于dbus,提供进程间通信的函数接口
app/mediaserver 提供多媒体服务的主应用
app/ipc-daemon 系统守护服务
app/dbserver 数据库服务
app/netserver 网络服务
app/storage_manager 存储管理服务
app/ipcweb-backend web后端
app/librkdb 数据库接口
app/ipcweb-ng web前端,采用Angular 8框架

Rockchip平台中的几个概念和他们之间的关系

概念 说明
rkmedia RK平台上将音视频编解码缩放,网络推流本地录像,AI识别等集成在一起的一个库
easymedia 就是上面的rkmedia编译生成的库,可以认为是一个东西
mpp RK平台上的硬件编解码组件
RGA RK平台上独有的一个组件,用来进行2D图像的格式转换,缩放,合成等,底层由硬件IP实现
RKNN RK平台上NPU相关组件和工具,底层由硬件IP NPU支持,可用来加载用户指定的模型,并高速运算
ISP 负责处理sensor出来的原始图像
ISPP 负责处理对图像进行降噪等处理
AIQ 负责从sensor搬运数据到ISP,从ISP搬运数据到ISPP等,还负责从ISP读取统计数据并进行曝光控制策略等

摄像头视频数据的流程

SENSOR---->ISP---->ISPP-------------------------->APP|_________|                            ||                                      |AIQ                                    ||----------|---------|MPP        RGA       RKNN

设备分区

分区 对应文件 说明
loader rockdev/Miniloader 由u-boot下rkbin等文件合成,一级引导,负责初始化DDR等,一般不需要改变
parameter rockdev/parameter.txt 从device/rockchip/rv1126_rv1109拷贝过来或者软链接过来,这里面主要保存着CMDLINE参数,包含分区信息,rootfs挂载信息等,传给内核,如果需要改变分区布局的话,可以修改这个文件
u-boot rockdev/u-boot.bin 由u-boot目录拷贝而来或者软链接过来
boot/kenel rockdev/boot.img 由kernel目录下zboot.img软链接过来
misc rockdev/misc.img 记录系统状态辅助完成升级流程等,非必须
recovery rockdev/recovery.img 负责系统升级等,非必须
rootfs rockdev/rootfs.img 由buildroot下面软链接过来,根文件系统
oem rockdev/oem.img 来自buildroot或者device/rockchip,主要放有些RK原厂的库,脚本和可执行文件
userdata rockdev/userdata.img 用来存放用户数据,非必须

Linux设备常用缩略语

缩略语 英文全称 解释
ARM Advanced RISC Machine 高级精简指令集计算机
CAN Controller Area Network 控制器局域网络
CEC Consumer Electronics Control 消费电子控制
CIF Camera Input Format 相机并行接口
CPU Central processing unit 中央处理器
CSI Camera Serial Interface 相机串行接口
DC/DC Direct current-Direct current converter 直流/直流变换器
DDR Double Data Rate 双倍速率同步动态随机存储器
DP DisplayPort 显示接口
DSI Display Serial Interface 显示串行接口
EBC E-book controller 电子书控制器
eDP Embedded DisplayPort 嵌入式数码音视讯传输接口
eMMC Embedded Multi Media Card 内嵌式多媒体存储卡
ESD Electro-Static discharge 静电释放
ESR Equivalent Series Resistance 等效电阻
Flash_VOL_SEL Flash voltage selection eMMC/Nand Flash IO电压选择
FSPI Flexible Serial Peripheral Interface 灵活串行外设接口
GPU Graphics Processing Unit 图形处理单元
HDMI High Definition Multimedia Interface 高清晰度多媒体接口
HPD Hot Plug Detect 热插拔检测
I2C Inter-Integrated Circuit 内部整合电路(两线式串行通讯总线)
I2S Inter-IC Sound 集成电路内置音频总线
ISP Image Signal Processing 图像信号处理
JTAG Joint Test Action Group 联合测试行为组织定义的一种国际标准测试协议(
LDO Low Drop Out Linear Regulator 低压差线性稳压器
LCDC LCD Controller LCD 控制器并行接口
LCM LCD Module LCD显示模组
LVDS Low-Voltage Differential Signaling 低电压差分信号
MAC Media Access Control 以太网媒体接入控制器
MIPI Mobile Industry Processor Interface 移动产业处理器接口
NPU Neural network Processing Unit 神经网络处理器
PCB Printed Circuit Board 印制电路板
PCIe Peripheral Component Interconnect-express 外设组件互联标准
PCM Pulse Code Modulation 脉冲编码调制
PDM Pulse density modulation 脉冲密度调制
PLL Phase-locked loop 锁相环
PMIC Power Management IC 电源管理芯片
PMU Power Management Unit 电源管理单元
PWM Pulse width modulation 脉冲宽度调制
QSGMII Quad Serial Gigabit Media Independent Interface 四串行千兆媒体独立接口
RGB RGB color mode is a color standard in industry RGB色彩模式, 是工业界的一种颜色标准
GMAC Gigabit Media Access Controller 千兆媒体访问控制器
RGMII Reduced Gigabit Media Independent Interface 简化千兆媒体独立接口
RMII Reduced Media Independent Interface 简化媒体独立接口
SARADC successive approximation register Analog to digital converter 逐次逼近寄存器型模数转换器
SATA Serial Advanced Technology Attachment 串行高级技术附件
SCR Smart Card Reader 智能卡读卡器
SD Card Secure Digital Memory Card 安全数码卡
SDIO Secure Digital Input and Output Card 安全数字输入输出卡
SDMMC Secure Digital Multi Media Card 安全数字多媒体存储卡
SGMII Serial Gigabit Media Independent Interface 串行千兆媒体独立接口
SPDIF Sony/Philips Digital Interface Format SONY、 PHILIPS数字音频接口
SPI Serial Peripheral Interface 串行外设接口
SubLVDS Sub- Low-Voltage Differential Signaling 低摆幅差分信号技术
TF Card Micro SD Card(Trans-flash Card) 外置记忆卡
TSADC Temperature sensing A / D converter 温度感应模数转换器
UART Universal Asynchronous Receiver / Transmitter 通用异步收发传输器
VOP Video Output Processor 视频输出处理器
VPU Video Processing Unit 视频处理器
USB2.0 Universal Serial Bus 2.0 通用串行总线
USB3.0 Universal Serial Bus 3.0 通用串行总线

【RP-RV1126】SDK编译常用记录相关推荐

  1. RV1126 SDK编译错误及解决记录

    RV1126 SDK编译错误及解决记录 1:错误: you need to install 'unbuffer' (from package expect or expect-dev) log sav ...

  2. rv1126 SDK简单编译

    rv1126 SDK简单编译 在工程的根目录下执行命令"source envsetup.sh" 会出现很多选项, 选择 **rockchip_rv1126_rv1109_spi_n ...

  3. RK3568开发笔记(四):在虚拟机上使用SDK编译制作uboot、kernel和buildroot镜像

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/125844240 红胖子网络科技博文大全:开发技术集合( ...

  4. RK3568开发笔记(五):在虚拟机上使用SDK编译制作uboot、kernel和ubuntu镜像

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127783966 红胖子网络科技博文大全:开发技术集合( ...

  5. win10--vs2015--libjpeg--64位库的编译过程记录

    win10--vs2015--libjpeg--64位库的编译过程记录 1. 下载源代码:   http://libjpeg.sourceforge.net/    或者  http://www.ij ...

  6. firefly AIO-RK3399J Linux SDK编译报错解决

    Firefly AIO-RK3399J Linux SDK编译报错解决 Zhang-Zhen 2020-09-30 22:01:04  收藏 分类专栏: RK3399工作记录 文章标签: linux  ...

  7. 详解DNS的常用记录(下):DNS系列之三

                            详解DNS常用记录(下) 在上篇博文中我们介绍了DNS服务器中几种不可或缺的记录,包括A记录,NS记录和SOA记录.本篇博文中我们将继续为大家介绍DNS ...

  8. 详解DNS的常用记录(上):DNS系列之二

    详解DNS的常用记录(上) 在上篇博文中,我们介绍了DNS服务器的体系结构,从中我们了解到如果我们希望注册一个域名,那么必须经过顶级域名服务器或其下级的域名服务器为我们申请的域名进行委派,把解析权委派 ...

  9. hi3519av100 2.0版本sdk编译提示 cannot find uuid library required for mkfs.ubifs

    hi3516cv500 sdk 编译提示 cannot find uuid library required for mkfs.ubifs 0.最好先更新一下系统软件列表:apt-get update ...

最新文章

  1. linux查看当前的工作目录,Linux-查看当前工作目录(pwd)
  2. postgresql在线备份与恢复(三)
  3. 15年第六届蓝桥杯第九题_(矩阵快速幂优化的动态规划)
  4. 使用VS2013编译Lua5.3.2
  5. StatusCodeError: 400 - “{\“code\“:40000,\“error\“:\“错误 Error: 登录用户不是该小程序的开发者
  6. MVC.Net: jqueryval错误
  7. iptables的备份
  8. STM32 IIC实验中关于AT24Cxx的读写
  9. html如何生成条形码,使用jsbarcode生成条形码
  10. namecheap关闭域名自动续费的方法步骤
  11. 斐波那契常见规律(总结)
  12. MacBook M1芯片 安装Centos8 教程(无界面安装)
  13. word标题和文字直接的空格
  14. 生成一个点开跳出情人节快乐和鲜花的python代码文件
  15. 自相关法基音提取的matlab程序,自相关函数法基音检测matlab程序
  16. 头歌 数据结构与算法答案 善用目录
  17. SDK无埋点技术在百分点的探索和实践
  18. AL遮天传 DL-深度学习模型的训练技巧
  19. dht11 temperature humidity sensor v2
  20. BPR:面向隐偏好数据的贝叶斯个性化排序学习模型

热门文章

  1. [转载]Android Wi-Fi 设置country code的调用流程(博通芯片为base)
  2. 固态盘 分区克隆实现 升级
  3. java文本框选中事件_Java文本框上的ActionEvent事件
  4. Android软键盘输入详解
  5. 医疗行业大数据应用案例【智库2861】
  6. java 润乾报表打印4.5_润乾报表中常见的打印类问题的总结| 润乾软件 | 学步园...
  7. jQuery应用-图片突出显示
  8. Win server2019 搭建wds网络部署服务器
  9. CSS仿微信头像右上角消息数字提示
  10. java阴阳师抽卡概率_阴阳师的抽卡活动概率究竟是真是假?