- 博客(25)
- 收藏
- 关注
原创 如何裁剪u-boot,保留其必要功能,使体积尽可能小
本文介绍了如何裁剪U-Boot以减小其二进制体积,同时保证核心引导功能。主要方法包括:关闭冗余命令(如网络、调试命令)、精简驱动(只保留存储和串口驱动)、优化编译参数(使用-Os选项)等。文中详细阐述了裁剪流程,从需求分析、配置准备到具体裁剪步骤和验证方法,并强调要逐步测试避免过度裁剪。通过合理优化,U-Boot体积可显著减小,特别适合存储空间有限的嵌入式设备。
2025-10-24 23:55:04
1237
原创 关于buildroot文件系统中rootfs的内容,该怎么增删(瑞芯微rv1126b)
在Buildroot中修改根文件系统(Rootfs)主要有4种方法:1)直接修改临时目录output/target/(快速但不持久,适合测试);2)使用Overlay覆盖层(推荐方式,可持久化添加/覆盖静态文件);3)通过自定义软件包(适合需要管理依赖的复杂文件);每种方法适用于不同场景,从临时调试到持久化部署均可覆盖。关键是根据需求选择合适的方式,并确保修改被正确纳入最终镜像。
2025-10-24 23:07:28
1328
原创 海思 3403 MPP 全链路解析: VI、VPSS、VENC 的运行逻辑与实践
海思MPP开发框架技术解析 摘要:本文系统分析了海思Hi3403芯片的MPP(Media Process Platform)开发框架。重点阐述了视频缓存池(VBPool)的核心机制及其在VI-VPSS-VENC全流程中的关键作用,详细解读了VI、VPSS、VENC三大模块的架构设计与实现原理。通过函数调用图谱展示模块间的协同关系,结合Hi3403硬件特性(如4K120fps编码、10TOPS算力),深入剖析了宽动态处理、多通道数据流转、智能加速等关键技术。同时揭示了图像编码压缩的三大冗余类型及其优化方法,为
2025-09-23 21:40:07
1440
原创 Live555流媒体库:下载、编译、例程使用指南及Linux编译问题与解决办法
摘要:编译live.2025.09.17.tar.gz时出现std::atomic_flag::test()方法报错,原因是该方法是C++20新增特性。提供三种解决方案:1)将test()替换为兼容C++11的test_and_set();2)添加NO_STD_LIB宏定义使用备用代码;3)在Makefile指定-std=c++20(需编译器支持)。推荐方法1保证兼容性,方法3最简单但需较新编译器。
2025-09-23 14:27:45
620
原创 瑞芯微RV1126 音频 AI模块和 AENC模块的讲解
本文介绍了RV1126芯片的音频AI和AENC模块。音频AI模块负责将模拟音频信号转换为数字信号,重点解析了AI_CHN_ATTR_S结构体的关键参数,包括采样格式(8/16/32位整型、浮点型等)、通道数、采样率等配置项,以及相关API函数。AENC模块负责音频编码压缩,详细说明了AENC_CHN_ATTR_S结构体参数,包括支持的编码格式(AAC、MP2、G711等)、比特率、采样率等配置要求。文章提供了两个模块的参数设置方法和API接口说明,为RV1126音频处理开发提供了技术参考。
2025-09-20 00:51:18
829
原创 音频 PCM原始数据 和 AAC编码的讲解
PCM音频数据处理与AAC编码技术 摘要:本文系统介绍了PCM音频数据的生成过程及其关键参数。PCM通过采样、量化、编码三个步骤将模拟信号转换为数字信号,其质量由采样率、采样深度、通道数等参数决定。同时阐述了PCM数据的存储格式和文件大小计算方法。针对PCM数据量大的问题,重点介绍了AAC编码技术,包括其压缩优势(1:18高压缩比)和两种封装格式(ADIF和ADTS),详细解析了ADTS帧结构中的固定头和可变头信息。这些技术为音频数据处理提供了完整的解决方案。
2025-09-20 00:31:15
1184
原创 瑞芯微RV1126中 venc视频编码模块讲解
本文介绍了RV1126芯片的VENC视频编码模块及其应用。VENC模块支持H264/H265/MJPEG/JPEG编码,重点讲解了H264和H265编码的结构体配置,包括基础属性VENC_ATTR_S(编码类型、分辨率等)、码率控制VENC_RC_ATTR_S(CBR/VBR/AVBR模式)和GOP属性VENC_GOP_ATTR_S(关键帧间隔等)。文章还详细说明了RV1126实现多分辨率/多格式编码的流程:通过VI采集摄像头数据,利用RGA缩放图像,并绑定不同VENC编码器,最终通过多线程分别获取高/低分
2025-09-20 00:09:01
1300
原创 瑞芯微rkmedia中 vi模块和 rga模块讲解
本文介绍了RV1126芯片中VI和RGA模块的工作原理及使用方法。VI模块负责视频输入,通过封装V4L2驱动读取摄像头数据,支持DMA和MMAP两种缓冲区模式。文章详细讲解了VI模块的参数配置、初始化流程及多线程采集方法。RGA模块用于2D图像处理,包括缩放、旋转等操作,介绍了其结构体定义和常用API。最后阐述了VI与RGA模块的协同工作流程:先初始化VI和RGA模块,再绑定两者通道,最后通过多线程采集处理后的图像数据。两个模块配合可实现摄像头数据的采集与实时处理。
2025-09-18 21:41:46
1267
原创 WiFi 模组AP6256的AP调试:层级递进逻辑与问题定位
摘要:本文详细介绍了AP6256无线模块的调试流程,采用分层递进方法,从驱动加载到客户端验证共7个步骤。首先检查驱动加载(bcmdhd.ko)和IP配置(wlan0静态IP),再解决DHCP服务(67端口占用)、hostapd残留控制文件等问题,最后优化安全配置(简化hostapd.conf)和验证客户端连接。通过决策树和优先级逻辑图指导问题排查,重点解决驱动不匹配、IP配置错误、端口冲突等典型问题,最终实现AP稳定运行和客户端正常连接。调试核心在于确保基础层正常后逐步解决上层服务冲突,形成完整的验证闭环。
2025-09-17 13:33:55
1313
原创 Buildroot中添加脚本、lib库或文件并固化到rootfs中
文章摘要:构建嵌入式Linux系统时,可通过两种标准方式向文件系统添加自定义文件:1)RootFSOverlay(推荐简单场景):创建与目标目录结构一致的overlay目录,配置Buildroot后自动复制文件到output/target/;2)自定义Package(适合复杂场景):在package/下创建包目录,通过.mk文件定义安装逻辑,支持条件编译和依赖管理。两种方法均避免直接修改易被覆盖的output/target/目录,确保构建过程规范可靠。(149字)
2025-09-17 12:45:55
974
原创 亲测ubuntu下轻量快速编辑器Sublime Text的安装、使用
SublimeText是一款轻量高效的代码编辑器,本文介绍了在Ubuntu系统下的安装与使用方法。安装步骤包括导入GPG密钥、添加仓库和apt安装。使用指南涵盖启动方式、界面布局、文件操作、编辑功能、视图调整等基础操作,重点介绍了插件安装方法(通过PackageControl)和实用技巧,如多行编辑、语法高亮等。文章还整理了常用快捷键,帮助用户提升编辑效率。SublimeText以其快速响应和丰富插件扩展功能,适合开发者日常使用。
2025-09-08 10:57:49
1214
原创 RV1126的OSD模块和SDL_TTF结合输出H264文件
RV1126芯片OSD功能开发主要通过OSD_REGION_INFO_S和BITMAP_S两个结构体实现。OSD_REGION_INFO_S用于定义编码图像中的叠加区域(支持8个优先级区域,需16位对齐坐标和尺寸),BITMAP_S则包含ARGB8888格式的位图数据。开发流程包括:初始化VI/VENC/RGN模块、绑定VI-VENC通道、创建多线程进行字库渲染(需16位对齐处理)和OSD叠加,最后通过RK_MPI_SYS_GetMediaBuffer获取带OSD的H264数据。关键点包括区域ID优先级管理
2025-09-07 01:44:37
817
原创 OSD原理和SDL_TTF文字库的讲解
本文介绍了OSD(屏幕菜单调节显示)技术的原理与实现方法,以及SDL_TTF文字库的应用。OSD技术通过视频信号处理、图像生成和叠加三个步骤实现屏幕显示调节,可采用硬件或软件方式生成图像。文章详细讲解了SDL_TTF库的字体渲染功能及其在RV1126平台上的交叉编译过程,包括zlib、freetype、SDL库的编译配置。最后展示了使用SDL_TTF库渲染文字并保存为位图的完整流程,包括初始化、字体加载、渲染参数设置等关键步骤,并提供了常见错误解决方案。
2025-09-07 01:05:34
1023
原创 RV1126在不同GOP模式下调节画面质量的实战
摘要:RV1126芯片支持三种GOP模式:普通GOP(固定I帧间隔)、SMARTP智能GOP(区分静态/动态区域,使用虚拟I帧优化码率)和TSVC多层参考(适应弱网环境)。通过结构体VENC_GOP_ATTR_S配置参数,调用RK_MPI_VENC_SetGopMode设置。实验采用多线程同步采集普通GOP和SMARTP模式的视频流,对比显示SMARTP模式在画面切换场景下质量更优,能有效减少呼吸效应并提升运动画面质量。
2025-09-07 00:34:53
1415
原创 QP参数讲解与代码实战
本文介绍了RV1126芯片的QP调节参数设置方法。主要内容包括:1)QP调节结构体VENC_RC_PARAM_S的组成,包含公共参数s32FirstFrameStartQp和针对H264、H265、Mjpeg的不同编码格式参数结构体;2)详细说明了H264和H265的QP参数设置,包括步长、最大/最小QP值对视频质量和码率的影响;3)提供了QP调节的API接口和实现代码框架,通过双线程分别获取普通和QP调节后的H264数据,并对比播放效果。文章重点阐述了QP参数设置对视频编码质量与码率的平衡关系。
2025-09-05 22:09:30
745
原创 H265码流的结构分析
H265(HEVC)是新一代视频编码标准,相比H264具有更高压缩比(1:200),支持4K/8K超高清分辨率。其技术特点包括:1)灵活的帧内预测,支持4×4到32×32多种宏块尺寸和35种预测模式;2)改进的帧间预测,提供8种PU划分方式和两种预测模式(Merge/Inter);3)新增VPS结构,实现视频分级传输。码流结构包含VPS、SPS、PPS、SEI和I帧,其中VPS支持多视点扩展,SPS/PPS提供编码参数,SEI携带附加信息。H265算法复杂度高,适合超高清视频,普通分辨率仍可使用H264。
2025-09-05 21:49:56
872
原创 H264视频编码原理与GOP讲解
本文介绍了音视频编码技术中的H.264编码原理和关键概念。主要内容包括:1. 编码必要性:原始视频数据量巨大,H.264压缩比可达1:100;2. 编码分层:VCL层负责视频内容表示(帧内/帧间预测、变换量化、熵编码),NAL层负责网络传输打包;3. 关键帧类型:SPS/PPS(全局参数)、SEI(附加信息)、I帧(关键帧)、P帧(前向预测)、B帧(双向预测);4. GOP概念:图像组结构(开放/闭合GOP)及其长度设置原则。文章详细解析了各层技术细节和帧类型参数,为音视频开发提供了理论基础。
2025-09-05 03:21:51
1239
原创 YUV原理、QP原理、码率及码率控制讲解
本文系统讲解了YUV视频格式和QP参数调节原理。YUV格式包含亮度(Y)和色度(UV)分量,相比RGB更节省带宽,主要采样方式有YUV444/422/420,其中YUV420最常用。QP参数通过量化步长调节图像质量和码率,QP值越小质量越高但码率越大。视频码率控制模式包括CBR(固定码率)、VBR(可变码率)等,各有优缺点:CBR码率稳定但浪费资源,VBR能根据画面复杂度动态调整码率。文章详细分析了这些技术参数的计算方法和实际应用场景。
2025-09-05 02:23:24
967
原创 瑞芯微RV1126的SDK解析、固件编译&烧录
本文介绍了RV1126芯片SDK开发的主要流程和关键模块。全文首先分析了SDK框架结构,包括app、buildroot等核心目录功能;随后详细说明了整体编译环境的搭建步骤,包括开发板选择、编译过程及固件生成;接着阐述了固件烧录方法,重点介绍了Maskrom模式的使用;最后对交叉编译工具链进行了说明,并讲解了视频输入(VI)、图像处理(RGA)、音视频编解码(VENC/VDEC/AENC)等核心模块的功能。整个开发流程从环境搭建到模块应用均有详细说明,为RV1126平台的嵌入式开发提供了全面指导。
2025-09-05 00:47:30
1301
原创 瑞芯微SDK中buildroot添加自定义程序,并设置开机自启动
本文介绍了在Buildroot系统中添加自定义应用程序的完整流程:1)将应用源码放入SDK的external目录;2)创建包定义文件(myapp.mk)和配置菜单(Config.in);3)通过rootfs-overlay机制添加开机启动脚本(S99myapp到/etc/init.d/)和库文件;4)利用Buildroot交叉编译工具链编译应用并安装到目标系统。文中详细说明了源码结构、编译规则、文件系统覆盖机制的具体实现方法,适用于嵌入式Linux系统(如Rockchip平台)的应用集成开发。
2025-09-04 19:05:01
546
原创 关于瑞芯微SDK中buildroot的架构分析、配置细节、以及一些使用步骤
摘要:瑞芯微SDK基于Buildroot框架,针对RK3568等芯片提供定制化开发环境。核心目录包括buildroot(配置与编译框架)、kernel(定制内核)和u-boot(引导程序)。开发流程为:1)加载芯片默认配置;2)通过menuconfig定制系统(架构、内核、软件包等);3)可选修改内核配置。关键硬件适配需修改设备树(dts)和分区表(parameter.txt),系统行为通过启动脚本(S90network)调整。最终执行make编译生成可烧录固件。该框架通过配置文件驱动,实现从工具链构建到固
2025-09-04 18:52:32
981
原创 如何使用v4l2-ctl查询硬件的最大缓冲区数量
文章摘要:本文介绍了使用v4l2-ctl工具测试V4L2设备最大缓冲区数量的方法。首先需要安装v4l-utils工具包,然后通过--stream-mmap选项测试MMAP缓冲区的最大数量,设备会返回实际支持值。文中提供了具体命令格式和示例,并说明如何解析输出结果。此外还介绍了测试USERPTR和DMABUF类型缓冲区的方法,最后提醒注意设备差异、内存影响和类型差异等因素。这些方法可为视频开发中的缓冲区配置提供参考依据。
2025-09-04 12:44:41
383
原创 在实际应用中,该如何选择合适的缓冲区数量和类型来优化V4L2图像采集
V4L2缓冲区选择与配置指南:优先选用MMAP实现零拷贝,适用大多数场景;特殊需求可选USERPTR(需处理内存对齐)或DMABUF(跨硬件加速)。缓冲区数量需平衡延迟与丢帧风险,建议从理论最小值+2开始,实时场景不超过4个,高分辨率采集可增至8-16个。注意避免混合类型使用,释放资源时先停止流再解除映射。通过动态监控丢帧率和延迟优化配置,实现最佳性能。
2025-09-04 12:41:01
982
原创 V4L2图像采集流程与优化策略分析
本文详细介绍了Linux V4L2视频采集系统的核心流程与优化策略。主要内容包括:1)V4L2采集的8个关键步骤:从设备初始化、缓冲区配置到数据采集和资源释放;2)性能优化方案:重点推荐MMAP零拷贝模式,建议4-8个缓冲区,选择硬件支持的图像格式(如MJPEG/YUV420);3)高级优化技巧:多线程处理、硬件加速(DMA)及稳定性保障措施。文章还提供了常见问题的解决方案,并强调需结合硬件特性选择最优配置方案。通过合理的缓冲区管理和硬件加速,可实现低延迟、高帧率的稳定视频采集。
2025-09-04 12:25:20
1230
原创 关于MIPI-CSI 摄像头相关硬件(D-PHY、CSI2 总线、传感器) 和 V4L2 视频子系统 初始化过程的理解
本文解析摄像头系统的核心组件及初始化流程。硬件部分包括图像传感器(CMOS/CCD)、MIPI D-PHY传输接口和CSI2总线协议;软件框架为Linux V4L2子系统。初始化过程分为六个阶段:硬件底层上电复位、传感器参数配置(分辨率/帧率/格式)、D-PHY传输设置、CSI2数据封装、V4L2设备注册及DMA缓冲区分配。整个过程强调硬件协同配置,类比咖啡店运营:传感器如咖啡机配置参数,D-PHY似出餐台设置传输速率,CSI2制定数据封装规则,V4L2则像店员管理整个流程。最终系统输出可被用户程序调用的标
2025-09-04 10:38:24
1167
LeetCode 数据结构与算法(永久分享)
2024-03-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅