【RP-RV1126】SDK编译常用记录
文章目录
- 一、单独编译
- 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编译常用记录相关推荐
- RV1126 SDK编译错误及解决记录
RV1126 SDK编译错误及解决记录 1:错误: you need to install 'unbuffer' (from package expect or expect-dev) log sav ...
- rv1126 SDK简单编译
rv1126 SDK简单编译 在工程的根目录下执行命令"source envsetup.sh" 会出现很多选项, 选择 **rockchip_rv1126_rv1109_spi_n ...
- RK3568开发笔记(四):在虚拟机上使用SDK编译制作uboot、kernel和buildroot镜像
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/125844240 红胖子网络科技博文大全:开发技术集合( ...
- RK3568开发笔记(五):在虚拟机上使用SDK编译制作uboot、kernel和ubuntu镜像
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127783966 红胖子网络科技博文大全:开发技术集合( ...
- win10--vs2015--libjpeg--64位库的编译过程记录
win10--vs2015--libjpeg--64位库的编译过程记录 1. 下载源代码: http://libjpeg.sourceforge.net/ 或者 http://www.ij ...
- firefly AIO-RK3399J Linux SDK编译报错解决
Firefly AIO-RK3399J Linux SDK编译报错解决 Zhang-Zhen 2020-09-30 22:01:04 收藏 分类专栏: RK3399工作记录 文章标签: linux ...
- 详解DNS的常用记录(下):DNS系列之三
详解DNS常用记录(下) 在上篇博文中我们介绍了DNS服务器中几种不可或缺的记录,包括A记录,NS记录和SOA记录.本篇博文中我们将继续为大家介绍DNS ...
- 详解DNS的常用记录(上):DNS系列之二
详解DNS的常用记录(上) 在上篇博文中,我们介绍了DNS服务器的体系结构,从中我们了解到如果我们希望注册一个域名,那么必须经过顶级域名服务器或其下级的域名服务器为我们申请的域名进行委派,把解析权委派 ...
- 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 ...
最新文章
- linux查看当前的工作目录,Linux-查看当前工作目录(pwd)
- postgresql在线备份与恢复(三)
- 15年第六届蓝桥杯第九题_(矩阵快速幂优化的动态规划)
- 使用VS2013编译Lua5.3.2
- StatusCodeError: 400 - “{\“code\“:40000,\“error\“:\“错误 Error: 登录用户不是该小程序的开发者
- MVC.Net: jqueryval错误
- iptables的备份
- STM32 IIC实验中关于AT24Cxx的读写
- html如何生成条形码,使用jsbarcode生成条形码
- namecheap关闭域名自动续费的方法步骤
- 斐波那契常见规律(总结)
- MacBook M1芯片 安装Centos8 教程(无界面安装)
- word标题和文字直接的空格
- 生成一个点开跳出情人节快乐和鲜花的python代码文件
- 自相关法基音提取的matlab程序,自相关函数法基音检测matlab程序
- 头歌 数据结构与算法答案 善用目录
- SDK无埋点技术在百分点的探索和实践
- AL遮天传 DL-深度学习模型的训练技巧
- dht11 temperature humidity sensor v2
- BPR:面向隐偏好数据的贝叶斯个性化排序学习模型
热门文章
- [转载]Android Wi-Fi 设置country code的调用流程(博通芯片为base)
- 固态盘 分区克隆实现 升级
- java文本框选中事件_Java文本框上的ActionEvent事件
- Android软键盘输入详解
- 医疗行业大数据应用案例【智库2861】
- java 润乾报表打印4.5_润乾报表中常见的打印类问题的总结| 润乾软件 | 学步园...
- jQuery应用-图片突出显示
- Win server2019 搭建wds网络部署服务器
- CSS仿微信头像右上角消息数字提示
- java阴阳师抽卡概率_阴阳师的抽卡活动概率究竟是真是假?