一.环境搭建

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

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-toolubuntu16.04之上的系统,还需运行:
sudo apt-get install lib32gcc-7-dev g++-7 libstdc++-7-dev

二.目录说明

buildroot:Linux平台上一个构建嵌入式Linux系统的框架,即根文件系统,这个过于庞杂,且待后面分解app:存放上层应用程序,这里我们猫眼主要用到了mediaserver这个appexternal:
相关库。这里我们开发中需要关注的是
rk_pcba_test 产测主应用,编译时make pcba-rebuild
rkmedia ,音视频编解码相关库,aec的回声消除降噪在此处亦有实现
rkwifibt,蓝牙wifi相关配置脚本,这里我们着重关注下tb_start_wifi.sh即可 ,这个脚本用于配置wifi网络kernel:kernel代码。device/rockchip:
存放每个平台的一些编译和打包固件的脚本和预备文件。这里我们需要关注下分区文件parameter-tb.txt ,
以及板载文件BoardConfig-R0950.mkdocs:
存放开发指导文件、平台支持列表、工具使用文档、Linux 开发指南等。prebuilts:存放交叉编译工具链。rkbin:存放固件和工具
。
rockdev:存放编译输出固件。tools:存放一些常用工具。比如烧录攻击RKDevToolu-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解读

RV1109 Linux SDK入门指南相关推荐

  1. aws python库_适用于Alexa的新AWS Python SDK入门指南

    aws python库 by Ralu Bolovan 由Ralu Bolovan 适用于Alexa的新AWS Python SDK入门指南 (A Beginner's guide to the ne ...

  2. Google 桌面 Linux 版 入门指南 Ubuntu 特刊

    昨天 Goolge 桌面 Linux 版正式发布 介绍得太简约,作为 Google 中国团队研发的如此 万德福 的软件,不用力顶怎么行啊! 背景: Google 桌面搜索 Linux 版 是由 Goo ...

  3. linux的wps文件怎么看,WPS Office for linux快速入门指南

    目录 第1章WPS Office for Linux产品介绍..................... - 3 -1.1WPS Office for Linux特点 ................. ...

  4. docker ubuntu镜像_Docker 入门指南 | Linux 中国

    该教程包含了如何创建一个新的 Docker 容器,如何运行该容器,如何从现有的 Docker 容器中创建自己的 Docker 镜像等 Docker 的一些基础知识.操作.-- Sk 在我们的上一个教程 ...

  5. Linux平台上DPDK入门指南

    目录 1. 简介 1.1. 文档地图 2. 系统要求 2.1. X86 上预先设置 BIOS 2.2. 编译DPDK 2.3. 运行DPDK应用程序 2.3.1. 系统软件 2.3.2. 在 Linu ...

  6. Linux系统初学者指南,Linux系统新手入门指南(二)

    在上篇文章中介绍过Linux系统给我们带来的是一片开源的天地,大部分的服务器都是Linux的.本篇文章是针对Linux系统的新手,为新手们准备的入门指南,希望看完本篇文章能让大家无障碍的操作Linux ...

  7. Linux平台上DPDK入门指南(二)

    4. 编译和运行简单应用程序 本章介绍如何在DPDK环境下编译和运行应用程序.还指出应用程序的存储位置. 注意:此过程的部分操作也可以使用脚本来完成. 4.1. 编译一个简单应用程序 一个DPDK目标 ...

  8. 【红帽入门指南】第二期:Linux的基本使用

    在上一期,我们为大家分享了如何在 VMware 的虚拟机软件上创建一个包含2个CPU.2GB内存和20G硬盘的空白虚拟机.并详述了如何在该虚拟机中安装RHEL 8.0,以及设置系统语言.键盘布局.磁盘 ...

  9. linux下使用geant4指南,四步轻松安装Geant4 (Linux篇) | 入门

    最近开始为订阅号"Geant4不完全学习指南"写一些文章. 正文开始. 四步轻松安装Geant4 (Linux篇) | 入门 软件版本:Ubuntu16.04,Geant4.10. ...

最新文章

  1. futuretask使用_JDK源码分析-FutureTask
  2. 留念,第一次在C中调用lua成功!
  3. 研究javascript中的this
  4. [原创] 腾讯RTX二次开发相关的一些注意事项
  5. linux 下的dd,Linux中的dd命令
  6. 16.4 配置Tomcat监听80端口 16.5/16.6/16.7 配置Tomcat虚拟主机16.8 Tomcat日志
  7. python中字符串文件如何打开_python-字符串·文件·集合操作
  8. java客户端操作elasticsearch7.3.2版本
  9. iframe常用属性知识
  10. 狂人日记学习 之七 三列浮动中间列宽度自适应
  11. ae导出gif插件_AE脚本-快速输出GIF动图格式插件脚本 GifGun 1.7.7 Win/Mac 支持AE CC 2019...
  12. nanomsg接口函数以及功能列举大全
  13. 回顾15个月的工作经历
  14. 纵享丝滑滑动切换的周月日历,水滴效果,可高度定制,仿小米日历
  15. 第七颗头骨 忘魂花 凤凰
  16. 智力过河游戏c语言,Flash AS代码实现智力过河小游戏
  17. 按照日期:蓝桥杯真题、洛谷题单、力扣题单汇总
  18. Android中的多点触摸
  19. iOS Quartz2D 渐变图形 CGGradient CGShading
  20. 从执行顺序看for循环(深入理解)

热门文章

  1. 【Computer Organization笔记13】指令流水中的结构冲突和数据冲突
  2. [MyBatis]诡异的Invalid bound statement (not found)错误
  3. mysql查找配置文件的顺序
  4. java io密集型任务_IO密集型的线程池大小设置
  5. TCP/IP模型的简单解释
  6. C#按Esc后退出对话框
  7. 让MySQL支持InnoDB
  8. java连接SqlServer2000类,比较完整,比较强大
  9. 一个简单的微服务项目带你上手spring cloud 全家桶
  10. 采药问题 c语言程序,采药问题(动态规划)