RV1109 Linux SDK入门指南

一.环境搭建

编译环境搭建所依赖的软件包以及安装命令如下:

sudo apt-get install repo git-core gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools  \
device-tree-compiler gcc-aarch64-linux-gnu mtools parted libudev-dev  \
libusb-1.0-0-dev python-linaro-image-tools linaro-image-tools autoconf autotools-dev  \
libsigsegv2 m4 intltool libdrm-dev curl sed make binutils build-essential gcc  \
g++ bash patch gzip gawk bzip2 perl tar cpio python unzip rsync file bc wget  \
libncurses5 libqt4-dev libglib2.0-dev libgtk2.0-dev libglade2-dev cvs git  \
mercurial rsync openssh-client subversion asciidoc w3m dblatex graphviz python-matplotlib \
libssl-dev expect fakeroot cmake flex bison  lzop liblz4-tool
 
ubuntu16.04之上的系统,还需运行:
sudo apt-get install lib32gcc-7-dev g++-7 libstdc++-7-dev

二.目录说明

buildroot:Linux平台上一个构建嵌入式Linux系统的框架,即根文件系统,这个过于庞杂,且待后面分解

app:存放上层应用程序,这里我们猫眼主要用到了mediaserver这个app

external:
相关库。这里我们开发中需要关注的是
rk_pcba_test 产测主应用,编译时make pcba-rebuild
rkmedia ,音视频编解码相关库,aec的回声消除降噪在此处亦有实现
rkwifibt,蓝牙wifi相关配置脚本,这里我们着重关注下tb_start_wifi.sh即可 ,这个脚本用于配置wifi网络

kernel:kernel代码。

device/rockchip:
存放每个平台的一些编译和打包固件的脚本和预备文件。这里我们需要关注下分区文件parameter-tb.txt ,
以及板载文件BoardConfig-R0950.mk

docs:
存放开发指导文件、平台支持列表、工具使用文档、Linux 开发指南等。


prebuilts:存放交叉编译工具链。

rkbin:存放固件和工具
。
rockdev:存放编译输出固件。

tools:存放一些常用工具。比如烧录攻击RKDevTool

u-boot:U-Boot代码。

三.模块代码

部分模块代码目录路径 模块功能描述
external/recovery recovery
external/rkwifibt Wi-Fi和BT
external/libdrm DRM接口
external/rk_pcba_test PCBA测试代码
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后端

四.SDK编译

4.1 切换板级配置

运行 su 取得最高权限,切换板级配置命令,选择BoarConfig-R0950.mk这个板卡配置,

 ./build.sh lunch

在这里插入图片描述
注:
当然我们也可以自定义自己的板级配置,只需在device/rockchip/rv1126_rv1109/中仿例创建一个.mk即可

4.2 全自动编译

  • 方式一

#只编译模块代码(u-Boot,kernel,Rootfs,Recovery)/build.sh all
#将生成的固件拷贝到rockdev中./mkfirmware.sh

  • 方式二

./build.sh

在./build.sh all基础上

  1. 增加固件打包 ./mkfirmware.sh
  2. update.img打包
  3. 复制rockdev目录下的固件到IMAGE/***_RELEASE_TEST/IMAGES目录
  4. 保存各个模块的补丁到IMAGE/***_RELEASE_TEST/PATCHES目录

注:./build.sh 和 ./build.sh all save 命令一样 ,
./build.sh cleanall是全清编译所生成的文件

4.3 rootfs编译

1.先于SDK根目录查看Board Config对应的rootfs是哪个配置./build.sh - h rootfs
在这里插入图片描述
2. source envsetup.sh rockchip_rv1126_r0950
3. ./build.sh ramboot

注:我们同样可以自定义一个自己的rootfs配置,只需在./buildroot/configs/ 中创建即可

4.4 App以及库文件编译

a.make menuconfig 命令用于配置文件系统,选择需要的模块,最后保存退出
例如:
ipc-daemon的配置是BR2_PACKAGE_IPC_DAEMON
进入menuconfig后,按“/"进入查找模式,输入BR2_PACKAGE_IPC_DAEMON ,输入对应数字,Y键激活想要编译的模块

b.make savedefconfig 命令保存配置到rootfs配置文件 ,

c. 查看对应模块的makefile文件名
例如:buildroot/package/rockchip/ipc-daemon/ipc-daemon.mk
make ipc-daemon-dirclean & make ipc-daemon-rebuild

d.此外还需要重编ramboot ,才能生效
./build.sh ramboot

SDK根目录app和external下的工程都是buildroot的package包,编译方法相同。

更多详情请参考:SDK解读

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值