0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【风火轮YY3568开发板免费体验】第四章:给 nanogui 添加 VideoView 控件,支持 rtsp 视频流获取并显示

Red Linux 来源:Red Linux 作者:Red Linux 2023-08-16 14:15 次阅读

本章记录下我针对 nanogui 写的 videoview 控件,并且在海康的一个摄像头上测试通过的过程,在开发的过程中碰到了 segment fault的问题,通过导出 core 文件以及使用 gdb 很快定位出崩溃的原因,在这个过程中再次体验到了使用 buildroot 进行构建的快乐。但是我目前根据 nanogui 开发的程序尚未继承到 buildroot 当中,将 nanogui 继承到 buildroot 这个也算是后期的一个目标。

  • 修复ffmpeg编译一直出错,提示undefined av_xxxx
  • 使用 buildroot 编译 aarch64-linux-gdb定位 segment fault 问题
  • 在 solus 上编译 buildroot,修复相关编译错误

1. 链接 ffmpeg 库一直出错

首先看一下出错的提示:
l_ffmpeg_undef.png

后来参考了网上的解决方案,发现是引用 ffmpeg 头文件的时候缺少

#ifdef __cplusplus
extern "C" {
#endif
xxxxx /* ffmpeg 头文件 */
#ifdef __cplusplus
}
#endif

因为 ffmpeg 主要是 c 语言开发的所以,引用相关头文件的时候需要为 C++ 原文件进行一次兼容。要不然的话,就不能正常引用到对应的函数。

完整 videoview 控件的源码,我已经上传到我 fork 的 nanogui 仓库了。这里就不罗列了,这里展示下成功显示视频的相关照片:
00.jpg

11.jpg

2. 使用 gdb 定位 segment fault

在顺利完成 ffmpeg 的链接编译之后,开始运行可执行程序,发现 segment fault了,我尝试使用 gdbserver 和 gdb 配置进行定位,发现默认并没有编译出来 aarch64-linux-gdb。只能在 buildroot 中开启 host gdb 的编译,主要放开如下宏:

BR2_PACKAGE_HOST_GDB=y
BR2_PACKAGE_HOST_GDB_TUI=y
BR2_GDB_VERSION_8_1=y
BR2_GDB_VERSION="8.1.1"

编译出来后,在板子上修改 core 配置,放开生成 core 文件:ulimit -c unlimited。然后将 core 文件发送到 PC,再使用命令 aarch64-linux-gdb example1 core 对 example1进行调试(目前我的开发是直接修改的 example1.cpp进行的)。记得修改下 sysroot 和 solib-search,这部分可以放在当前目录的 .gdbinit 文件中:

set solib-search-path /home/yangyongsheng/Projects/debian_yy3568/YY3568-Debian10/buildroot/output/rockchip_rk3568/host/aarch64-buildroot-linux-gnu/sysroot/
set sysroot ~/Projects/debian_yy3568/YY3568-Debian10/buildroot/output/rockchip_rk3568/host/aarch64-buildroot-linux-gnu/sysroot/

记得还有修改下 ~/.gdbinit 文件:

set auto-load safe-path /

通过 gdb 很快就可以定位到出错的代码位置。

3. 在 solus 上编译 buildroot

家里的一台笔记本,我安装的是 solus,软件包可能没有 fedora 那么齐全,所以编译过程中碰到了一些问题,经过几天的搜索还好是顺利将 buildroot编译通过,通过这几天的排查问题,我感觉的 solus 依旧好用。有些软件包官方仓库没有就需要自己手动下载源码安装,我仅罗列一些我下载的:

├── libdb
├── libnsl
├── libtirpc
├── libxcrypt

特别地在编译 python2.7 的时候,总是出错,但是终端提示的问题只是一些警告信息,导致我一直搜索如何排除这些警告,实际还是走了一些弯路。可能是 unbuffer 的锅,因为我在使用 buildroot menuconfig 的时候使用默认的 unbuffer 总是无法在 solus 上弹出来 menuconfig 的配置界面(因为我要开启 gdb 编译选项),在 buildroot 的根目录直接 make menuconfig 确是可以的,后来我就强制修改 menuconfig 的时候不用 brmake 而是使用 make 规避了这个问题。下次碰到这个问题需要去对应的 buildroot 的根目录去 make 确认出错的根本原因,发现是链接 crypt 的时候出错的,通过强制创建 /lib/libcrypt.so 到的软链接修复了这个问题。

▸ ll /lib/libcrypt.so
lrwxrwxrwx root root 26 B Sun Aug 13 13:44:40 2023  /lib/libcrypt.so ⇒ /usr/local/lib/libcrypt.so

再展示下在 solus 下使用 buildroot 开心编译的截图:
buildroot_solus.png

通过这个过程我还发现了一个软件包集合的网站 https://dev.getsol.us/source,这里面包含了 solus 有关 python2.7 的配置编译依赖,最后顺利编译出来了 buildroot 选择的 python2.7。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206738
  • C++
    C++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72900
  • 开发板
    +关注

    关注

    25

    文章

    4434

    浏览量

    94018
  • 编译
    +关注

    关注

    0

    文章

    615

    浏览量

    32397
  • RK3568
    +关注

    关注

    4

    文章

    433

    浏览量

    4133
收藏 人收藏

    评论

    相关推荐

    使用YY3568开发板部署AI能力

    YY3568开发板是 「风火轮科技」 基于Rockchip RK3568 芯片平台设计的开发板,四核 64Cortex-A55 核,主频最高
    的头像 发表于 11-28 10:59 1299次阅读
    使用<b class='flag-5'>YY3568</b><b class='flag-5'>开发板</b>部署AI能力

    YY3568适配OpenHarmony

    YY3568开发板简介 YY3568开发板 YY3568开发板是 「
    的头像 发表于 04-07 15:58 1788次阅读

    风火轮YY3568开发板免费体验】第一章:开发环境搭建,系统替换为原生Linux

    记录编译sdk并替换YY3568出厂安卓系统的笔记。
    的头像 发表于 08-09 18:11 988次阅读
    【<b class='flag-5'>风火轮</b><b class='flag-5'>YY3568</b><b class='flag-5'>开发板</b><b class='flag-5'>免费</b>体验】第一章:<b class='flag-5'>开发</b>环境搭建,系统替换为原生Linux

    风火轮

    谁有TI的基于MSP430launchpadG2553的Capacitive Touch BoosterPack(就是电容触摸)俗称风火轮红色的转盘 谁有可不可以转让给我活着给我学习一下 我是一名西安电大的学生看了视频很想操作
    发表于 08-12 11:22

    【新品体验】风火轮YY3568开发板免费体验

    YY3568主板基于 Rockchip RK3568 芯片平台,核 64位 Cortex-A55 核,主频最高达 2GHz,集成双核心架构GPU以及高效能NPU,芯片性能优异。开发板
    发表于 06-25 14:35

    风火轮YY3568开发板免费体验】开箱篇 -----最好的RK3568开发板赏析

    风火轮YY3568开发板采用RK3568芯片设计,RK3568明星芯片是一款瑞芯微电子定位中高端的通用型SoC。该芯片采用了先进的22nm工
    发表于 08-07 10:00

    风火轮YY3568开发板免费体验】使用之二:系统测试安卓

    开发板,如下图所示: 按住设备上的 RECOVERY (恢复)键保持接上电源 大约两三秒钟后,松开 RECOVERY 键 UART DEBUG测试: YY3568
    发表于 08-09 21:01

    风火轮YY3568开发板免费体验】01.开箱、烧写系统

    吧。 首先就是我最喜欢的开发板啦,YY3568,板载2GB RAM和16GB EMMC,真的太棒了,里面核心已经在底板上面安装的了,还有WIFI模块和天线。 接下来就是送的7寸电容式5点触摸屏,DSI
    发表于 08-10 19:35

    风火轮YY3568开发板免费体验】第二YY3568 ffmpeg 编译以及 nanogui 移植

    the DISPLAY variable?) 重新编译后就可以正确读取到海康视频码流了。我的 buildroot对应的配置文件rockchip_rk3568_defconfig放在附件附件:rockchip_rk3568_d
    发表于 09-11 15:29

    风火轮YY3568开发板免费体验】第四章 nanogui 添加 VideoView 控件支持 rtsp 视频获取显示

    本章记录下我针对 nanogui 写的 videoview 控件,并且在海康的一个摄像头上测试通过的过程,在开发的过程中碰到了 segment fault的问题,通过导出 core 文
    发表于 09-11 15:41

    风火轮YY3568开发板免费体验】+ YY3568安装运行Unity的自制游戏教程范例

    ,并成功在自己的开发笔记本,以及手机(Android-12)上运行,因此想测试一下能否在YY3568的Android-11系统上运行。 根据YY3568的wiki上的内容,使用adb方式进行apk安装
    发表于 11-14 11:44

    风火轮YY3568开发板免费体验】+ YY3568安装运行Home-Assistant服务端

    软件开发版本。而最新版的HomeAssistant是2023.11.2,要求Python要3.11以上版本,但是YY3568的Debian-10系统自带的Python为3.9,更新软件仓库后依然没有
    发表于 11-14 11:49

    风火轮科技YY3568开发板新品上市

      风火轮近来又推出一款新的嵌入式主板YY3568 ,它是一款基于瑞芯微RK3568 4核处理器的ARM主板,性价比极高;现在瑞芯微的旗舰款是rk3588主打性能,这个rk3568是主
    的头像 发表于 04-27 14:50 1110次阅读
    <b class='flag-5'>风火轮</b>科技<b class='flag-5'>YY3568</b><b class='flag-5'>开发板</b>新品上市

    风火轮科技又发新品啦--YY3568开发板

    风火轮近来又推出一款新的嵌入式主板YY3568,它是一款基于瑞芯微RK3568 4核处理器的ARM主板,性价比极高;现在瑞芯微的旗舰款是rk3588主打性能,这个rk3568是主打性价
    的头像 发表于 05-05 16:41 641次阅读
    <b class='flag-5'>风火轮</b>科技又发新品啦--<b class='flag-5'>YY3568</b><b class='flag-5'>开发板</b>

    RK3568 MIPI CSI摄像头GC8034适配工作流程

    首先介绍一下硬件。主板为风火轮科技的YY3568开发板,主控RK3568。此开发板的相关介绍可以参考
    的头像 发表于 07-04 09:27 2914次阅读
    RK<b class='flag-5'>3568</b> MIPI CSI摄像头GC8034适配工作流程