RK3588开发笔记(二):基于方案商提供sdk搭建引入mpp和sdk的宿主机交叉编译Qt5.12.10环境

若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/133915614

红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…

瑞芯微开发专栏

上一篇:《RK3588开发笔记(一):基于方案商提供的宿主机交叉编译Qt5.12.10》
下一篇:敬请期待…


前言

  上一篇项目已经构建好了Qt,板子接入mipi屏幕也跑起来了,Qt也能正常运行了,现在需要接入定制开发的sdk,sdk中使用了硬解码等资源涉及到bsp的mpp,所以下一步就是引入mpp和sdk到Qt开发环境中,从而Qt中可以调用sdk接口进行进一步的应用结合开发了。


注意

  本文公开了Qt开发嵌入式主板应用的实际过程,提供给读者学习参考,基本流程一致(但是有经验的开发板方案商一般会直接提供基于SDK的Qt基础环境Demo的虚拟机),本次算是额外走了一次过程,记录下,仅供参考。
  本文所有资料不对外提供,遵守基本的职业道德是一切的根本,重在学习熟悉解决问题的过程。


说明

  固件并没有更新,bsp的支持包是以库的形式提供,所以当作库即可。
  在这里插入图片描述


Qt融入SDK

步骤一:分析sdk构成

  这部分需要与方案商核对,当然也存在服务老厂这种,一开始就提供了完整的环境和文档,本次合作的方案商对于兼容Qt这块未弄,所以需要我们自己手动来操作。
  Sdk采用的是CMake的Makefile传统bsp开发模式:
  在这里插入图片描述

  只是纯纯的sdk部分打包,这个问题也是做linux开发大部分非资深容易出现的,就是给东西永远是少东西的(最好的方式,就是自己跑一遍,避免过于的额外沟通)。
  在这里插入图片描述

  然后沟通后,我们需要包含以下的库(其中.a是静态库,.so是动态库):
  在这里插入图片描述

步骤二:进入libcomn.a通用库,简单测试通过

  在这里插入图片描述

  在这里插入图片描述

  运行起来,可能是libcomn.a包含后,没有变成复杂
  在这里插入图片描述

  成功了。

步骤三:sdk引入单独模块化

  这是我司模块化开发的统一标准:
  在这里插入图片描述

步骤四:引入所有的库

  逐一引入到sdkManager.pri,有部分库需要做处理,正常引入的就是include和lib,不拿出来了,下面单独弄出来是需要调整修改的:

opencv库

  opencv的库,有几个版本,我们是aarch64,所以单独纠正逻辑:
  在这里插入图片描述

mpp(支持bsp开发)

  下面是mpp的库,是bsp,但是出现2个.0,.1,沟通是两个版本bsp,只能说运行的时候,哪一个能跑就用哪一个,错了就换一个:
  在这里插入图片描述

ffmpeg库

  下面是ffmpeg4.0的库,这里大概率是符号连接,可能复制打包sdk的时候引用连接断了,这里直接使用文件大的进入:
  在这里插入图片描述

sdkManager.pri

  完成后的sdkManager.pri:
  在这里插入图片描述

  在这里插入图片描述
  在这里插入图片描述

INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD# comn
INCLUDEPATH += $$PWD/sdk/comn/include
LIBS += -L$$PWD/sdk/comn/lib \-lcomn# xzsDevice
INCLUDEPATH += $$PWD/sdk/xzsDevice/include
LIBS += -L$$PWD/sdk/xzsDevice/lib \-lrtsp_util \-lXzsDevice# sqlite3
INCLUDEPATH += $$PWD/sdk/sqlite3/include
LIBS += -L$$PWD/sdk/sqlite3/lib \-lsqlite3# Rockit
INCLUDEPATH += $$PWD/sdk/Rockit/include
LIBS += -L$$PWD/sdk/Rockit/lib \-lasound \-ldrm \-lgraphic_lsf \-ljpeg \-lmali \-lpanoStitchApp \-lrga \-lrkaiq \-lrkgfx_avs \-lrknn_api \-lRkSwCac \-lrockchip_mpp \-lrockit \-lturbojpeg# opencv
INCLUDEPATH += $$PWD/sdk/opencv/opencv-linux-aarch64/include
LIBS += -L$$PWD/sdk/opencv/opencv-linux-aarch64/lib \-llibjpeg-turbo \-lopencv_calib3d \-lopencv_core \-lopencv_dnn \-lopencv_features2d \-lopencv_imgcodecs \-lopencv_imgproc \-lopencv_video# mpp
INCLUDEPATH += $$PWD/sdk/mpp/include
LIBS += -L$$PWD/sdk/mpp/Linux/aarch64/lib \-lrockchip_mpp# MediaStore
INCLUDEPATH += $$PWD/sdk/MediaStore/include
LIBS += -L$$PWD/sdk/MediaStore/lib \-lMediaStore \-lMediaStoreClient \-lsqlite3# MediaReader
INCLUDEPATH += $$PWD/sdk/MediaReader/include
LIBS += -L$$PWD/sdk/MediaReader/lib \-lMediaReader# jsoncpp-1.9.5
INCLUDEPATH += $$PWD/sdk/jsoncpp-1.9.5/include
LIBS += -L$$PWD/sdk/jsoncpp-1.9.5/lib \-ljsoncpp# HiDevice
INCLUDEPATH += $$PWD/sdk/HiDevice/include
LIBS += -L$$PWD/sdk/HiDevice/lib \-lHiDevice# ffmpeg-4.0
INCLUDEPATH += $$PWD/sdk/ffmpeg-4.0/include
LIBS += -L$$PWD/sdk/ffmpeg-4.0/lib \-lavcodec-58 \-lavdevice-58 \-lavfilter-7 \-lavformat-58 \-lavutil-56 \-lpostproc-55 \-lswresample-3 \-lswscale-5HEADERS += \$$PWD/sdkManager.h

步骤五:编译引入所有化境的空Demo

  编译验证库是否都引入成功:
  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  这里沟通可能时之前mpp的版本不对,替换下版本:
  在这里插入图片描述

  测试了不行 看判断 .so和.so.1两个生成的时间是一样的 ,.so.0是空0大小,经过与方案商沟通,后面给他编译的单独库给过来,大概率是版本控制没做好,引入是肯定引入成功了,第二天再解决。
  第二天重新给了所有的直接依赖的库单独打包:
  在这里插入图片描述

  重新引入,头文件用之前的,库文件用新的,逐步添加:
  在这里插入图片描述

  测试还是不行,调试库,确实没有这个函数:
  在这里插入图片描述

  协调方案上,提供我司模块化的纯引入基础函数的testSdkDemo,让方案商调通(这部分在传统开发中,一般是方案商自行testSdk验证下Qt基础环境,以确认开发的sdk能正确引入Qt,参考市面上的其他开发板方案商)。


结论

  至此,由于将我司Qt测试的纯SDK给到方案商,那么方案商调通好,就可以了,其他sdk可以参考本文添加,当前使用了ffmpeg库进行了播放器展示,确认是ok的,本文结束。


上一篇:《RK3588开发笔记(一):基于方案商提供的宿主机交叉编译Qt5.12.10》
下一篇:敬请期待…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/140410.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【周末闲谈】VR新视界,“眼”见未来

个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言,模仿还是超越? ✨第二周 畅想AR 文章目录 系列目录前言虚拟现实(VR)技术虚拟现实技术的原理虚拟现实技术发…

如何绕过api的防重放做安全测试

一、问题引入:api接口测试,会检测请求头中的nonce参数的值,每次请求的值必须不同,否则发包失败 笔者在进行api接口的测试时(因为菜没有工具,只能另辟蹊跷),使用postmanxray进行安全测…

Excel文件带有密码的只读模式,如何设置?

Excel带有密码的除了打开密码和工作表保护以外,其实还有一种可以设置密码的方法,今天给大家分享如何设置带有密码的只读模式。 打开excel文件,将文件进行【另存为】设置,然后停留在保存路径的界面中,我们点击下面的工…

计算机网络第2章-CDN(4)

视频流和内容分发网 HTTP流和DASH 在HTTP流中,视频只是存储在HTTP服务器中作为一个普通的文件,每个文件有有一个特定的URL。当用户要看视频时,客户与服务器之间创建一个TCP连接并发送HTTP GET请求。 HTTP流具有严重缺陷,即所有…

笔记本触摸板没反应?实用技巧助你成功修复!

笔记本电脑是我们日常工作和学习的得力工具之一,而触摸板作为一个重要的输入设备,对于操作的流畅性至关重要。然而,有时候我们可能会遇到笔记本触摸板没反应的问题,这可能会导致困扰和不便。本文将介绍解决笔记本触摸板无响应问题…

虚拟机来安装Linux的优势

笔者认为,通过虚拟机软件学习是初学者学习 Linux 的最佳方式。在与部分读者的交流中,笔者发现,很多初学者都认为,学习 Linux 就必须将自己的电脑装成 Linux 系统或者必须要有真正的服务器设备。而实际上,这是一些机构、…

MSQL系列(四) Mysql实战-索引分析Explain命令详解

Mysql实战-索引分析Explain命令详解 前面我们讲解了索引的存储结构,我们知道了BTree的索引结构,也了解了索引最左侧匹配原则,到底最左侧匹配原则在我们的项目中有什么用?或者说有什么影响?今天我们来实战操作一下&…

腾讯云服务器端口localhost可以访问,外部无法访问解决

搭建frp跳板,发现无法使用。ssh 连接不上。 主要检查2个东西: 1. ubuntu ufw系统防火墙。这个默认是关掉的 2. tencent这个防火墙规则设置后,还要设置到实例上。 以前不是这样的。就掉坑里了。 # systemctl rootVM-4-4-ubuntu:/lib/syst…

从头开始机器学习:线性回归

一、说明 本篇实现线性回归的先决知识是:基本线性代数,微积分(偏导数)、梯度和、Python (NumPy);从线性方程入手。 代码/注释存储库链接 拉曼欣德 GitHub - ramanthind02/Machine_learning_from…

数据可视化素材分享 | 数十图表、无数模板

很多人在后台求分享报表、源代码,其实何必这么麻烦,在奥威BI数据可视化平台上点击即可获得大量的可视化素材,如数十种可视化图表,适用于不同分析场景;又如大量不同主题的BI数据可视化报表模板,套用后替换数…

[1Panel]开源,现代化,新一代的 Linux 服务器运维管理面板

测评介绍 本期测评试用一下1Panel这款面板。1Panel是国内飞致云旗下开源产品。整个界面简洁清爽,后端使用GO开发,前端使用VUE的Element-Plus作为UI框架,整个面板的管理都是基于docker的,想法很先进。官方还提供了视频的使用教程&…

C语言初学者工具选择:vscode + MSYS2 + cmake 搭建 C环境

文章目录 前言1. MSYS2 安装1. 下载安装包2. 安装3. pacman 换清华大学源4. 安装 mingw-w64 toolchain 和 cmake ninja5. 将 toolchain 加入系统环境变量 2. 设置 vscode1. 必要的插件2. 一个简单的 vscode cmake 项目 最后C数据结构与算法CMake 前言 网上关于使用 vscode 配…