- 博客(73)
- 收藏
- 关注
原创 mpp编码和rkmedia编码有什么区别和共同点
RKMedia 编码是 MPP 编码的上层封装,底层核心编解码能力仍由 MPP 提供,RKMedia 通过整合多模块降低开发门槛;选择逻辑:需底层调优选 MPP,需快速集成多媒体功能选 RKMedia。初始化复杂度:MPP 需手动初始化上下文、接口、帧 / 包结构体,步骤零散;RKMedia 先初始化系统,再创建通道,绑定模块即可,流程规整。数据流转方式:MPP 需手动 “转帧→送帧→取包”,全程手动控制;RKMedia 支持模块绑定,数据自动流转,无需手动处理帧结构转换。配置灵活性。
2025-12-27 10:55:13
336
原创 正点原子 ATK-DLRK3568 开发板:按键中断 + 工作队列传参实验(完整版流程 + 功能解释)
通过以上流程,可完整实现 “按键中断 + 工作队列传参” 功能,同时适配正点原子 ATK-DLRK3568 开发板的硬件特性,兼顾功能正确性与实操性。核心逻辑:自定义工作项结构体(含参数)→ 申请 GPIO / 中断 → 初始化工作队列 → 中断触发调度工作 → 工作函数解析参数打印。,切勿接 5V,避免烧毁 GPIO!注意:开发板 GPIO 工作电压为。本实验基于 Linux 内核的。
2025-12-27 07:53:45
450
原创 中断下半部:延迟工作实验
当按键触发中断时,不会立即处理按键事件,而是调度一个 “延迟工作”(延迟指定时间,避开按键抖动的窗口期),待延迟时间结束后,再执行工作函数,以此过滤按键抖动导致的多次误触发,保证按键事件的有效识别。之前的驱动缺少 GPIO 申请步骤,需修改。确保 Makefile 中。
2025-12-26 15:48:52
531
原创 sensor数据在整个rk平台的框架流程
RK 平台 Sensor 流程核心是 “硬件层→驱动层(V4L2/IIO)→系统层(HAL / 系统服务)→应用层” 的自上而下指令下发、自下而上数据流转。图像类 Sensor 依赖 CSI-2 总线 + V4L2 框架,非图像类 Sensor 依赖 I2C 总线 + IIO 框架,两者均通过 I2C 完成 Sensor 配置。RK 平台的 ISP 硬件加速、统一驱动框架、低功耗管理是其核心特色,保障了 Sensor 数据采集的高效性和稳定性。
2025-12-26 09:59:46
832
原创 如果在调试音频的时候(音频标准编码是aac),发现声音有异常,比如有电流滋滋或者其他不正常的声音该怎么去排查
收集信息:记录问题现象、复现步骤、测试环境等信息。缩小范围:通过逐步排除法,缩小问题可能存在的范围。定位问题:根据排查结果,定位问题的具体原因。解决问题:根据定位的问题原因,采取相应的解决措施。
2025-12-26 09:53:51
403
原创 mp4异常录制播放不了的原理
MP4 异常录制的核心矛盾是moov的 “延迟写入” 特性与录制过程中数据不完整的冲突。实际应用中,方案 2因兼顾 “持续录制” 和 “快速恢复”,是更主流的选择(如短视频 APP、监控设备录制场景)。
2025-12-26 09:47:54
261
原创 中断下半部 tasklet 实验
举个生活类比:就像 “灯开关”——GPIO0_B0 是 “灯线”,GND 是 “零线”,按键是 “开关”,按下去就接通灯线和零线,灯亮(对应开发板检测到中断)。(或单独的机械按键),核心原因是:实验需要通过 “按键通断” 触发 GPIO 电平变化,开发板自带的按键有固定功能,不能直接替代。
2025-12-26 09:08:48
676
原创 RTSP协议
RTSP 的深度掌握,核心在于理解 “控制 - 传输分离” 的架构逻辑,以及 RTSP、RTP、RTCP 三者的协同关系。大厂面试不仅考察协议方法、会话流程等基础知识点,更关注 NAT 穿透、延迟优化、高并发管理等工程能力。本文涵盖的核心单元、流程细节、优化方案及面试答题模板,可直接用于面试备考,帮助快速建立 RTSP 的系统认知,应对各类深度提问。
2025-12-23 15:16:45
792
原创 RTMP协议
RTMP 协议的深度掌握,核心在于理解 “分层设计逻辑 + 工程实践权衡”。大厂面试不仅考察协议结构、流程等基础知识点,更关注延迟优化、高并发部署、协议扩展等工程能力。本文涵盖的协议核心、流程细节、优化方案及面试答题模板,可直接用于面试备考,帮助快速建立 RTMP 的系统认知,应对各类深度提问。
2025-12-23 15:13:37
686
原创 FFMPEG输出模块初始化
avcodec_find_encoder找出对应的codec编码器、利用avcodec_alloc_context3分配AVCodecCotext、设置AVCodecContext结构体参数、利用avcodec_parameters_from_context把codec参数传输到AVStream里面的参数、avio_open初始化FFMPEG的IO结构体、avformat_write_header初始化AVFormatContext。的结构体指针,它主要存储复合流信息的常规配置,默认为设置N。
2025-12-23 14:39:16
925
原创 FFMPEG核心结构体
AVFrame(原始数据)→ 编码 → AVPacket(压缩数据)→ AVFormatContext(封装)→ AVIOContext(推流)每个结构体各司其职:Context 类(AVFormatContext、AVCodecContext)管配置,数据类(AVFrame、AVPacket)存数据,Format 类(AVOutputFormat)管封装直接套用上述代码,替换推流地址、分辨率、码率,即可适配 RV1126 硬件编码推流场景。
2025-12-23 14:11:35
1348
原创 两段驱动代码的区别
功能定位不同:helloworld 驱动是无实际功能的入门模板,字符设备驱动是具备设备管理能力的实用驱动雏形。组件复杂度不同:字符设备驱动新增了设备号、cdev 结构体、文件操作集等核心组件,是实际硬件驱动的基础框架。用途不同:helloworld 仅验证模块加载 / 卸载流程,字符设备驱动为用户空间访问硬件提供了内核层入口,可直接扩展为实际设备驱动。
2025-12-22 16:45:56
836
原创 注册字符设备
Ps:__通常都是一些接口的底层函数,应该谨慎使用__init 初始化执行一次__exit 卸载执行一次注册字符设备可以分为两个步骤:字符设备初始化字符设备的添加。
2025-12-22 16:34:37
1170
原创 ADTS (Audio Data Transport Stream)
ADTS格式通过在每个AAC帧前添加头部信息,实现了流媒体环境下的高效解码和同步,是现代音频流传输的核心技术之一。(Audio Data Transport Stream) 是AAC音频编码的一种。ADTS Header (7-9字节) + AAC Audio Data。,专为网络流媒体传输设计。
2025-12-21 21:07:39
187
原创 Linux设备分类
闪存类块设备:使用闪存作为存储介质,里面的控制器运行固化的驱动程序,驱动程序的功能之一是闪存转换层(Flash Translation Layer,FTL),把闪存转换为块设备,对外表现为块设备。字符设备驱动通过/dev目录下的特殊文件公开设备的属性和功能,通过这个文件可以在设备和用户应用程序之间交换数据,也可以通过它来控制实际的物理设备。一个擦除块的最大擦除次数有限,NOR闪存的擦除块的最大擦除次数是104~105,NAND闪存的擦除块的最大擦除次数是105~106。字符设备驱动程序的特性。
2025-12-20 21:00:35
911
原创 udv:内核是如何发送事件到用户空间
参数说明:kobj : 要发送 uevent 事件的内核对象(kobject)action: 表示触发 uevent 的动作, 可以是设备的插入, 拔出, 属性变化等。以下是一些常见的 action 参数值。这些动作类型用于描述设备发生的不同事件, 通过将相应的动作类型作为action 参数传递给 kobject_uevent 函数, 可以触发相应的 uevent 事件, 通知用户空间的 udev进行相应的操作。KOBJ_ADD: 表示设备的添加或插入操作, 表示添加一个对象到内核对象系统中。
2025-12-19 14:35:17
448
原创 修改 RK3568 设备树中 MIPI DSI 屏幕的分辨率为800x1280
如果不想清空所有配置,仅取消选错的y配置修正后,重新编译设备树和内核,生成正确的boot.img# 编译设备树(800x1280版本)# 编译内核# 重新打包boot.img(按之前步骤)核心逻辑:默认配置是厂商适配好的,优先恢复默认配置;若需自定义,再手动取消错误选项,避免逐个改的繁琐和遗漏。# 1. 进入内核源码根目录# 2. 清除之前的错误配置(删除.config文件)# 3. 加载RK3568开发板的默认配置(替换为你的开发板默认配置名)
2025-12-17 17:27:25
791
原创 内核模块符号的导出
简单说:在模块里,用特定宏把函数 / 变量标记为 “公共可用”,当这个模块加载到内核时,这些函数 / 变量会被记录到内核公共符号表里,其他模块加载时就能从这个表中找到并调用它们。
2025-12-16 20:45:47
275
原创 内核menuconfig配置实验
这是kernel下的.config目录,例如:DMI_SYSFS这个关了 要把它开启。用make menuconfig 把它开启。进到Firmware Drivers。再次查看.config。
2025-12-15 21:15:48
236
原创 遗传算法的了解
(Genetic Algorithm, GA)是一种模拟生物进化过程的智能优化算法, GA)是一种模拟生物进化过程的智能优化算法,通过选择、交叉、变异等操作在解空间中搜索最优解,通过选择、交叉、变异等操作在解空间中搜索最优解,特别适合解决复杂的多约束、非线性优化问题。特别适合解决复杂的多约束、非线性优化问题。
2025-12-15 16:23:46
332
原创 hello world驱动实验
本文记录了在RK3568开发板上编译和加载Linux内核驱动模块的过程。首先创建了包含helloworld示例驱动的hello.c文件和Makefile,在编译过程中遇到交叉编译器路径错误问题。通过多次调整Makefile中的工具链路径,最终使用SDK内置的aarch64-buildroot-linux-gnu-g++编译器成功编译出hello.ko模块。但在加载模块时发现开发板运行的内核版本(4.19.232)与编译时使用的内核源码版本(5.10.160)不一致导致"Invalid module
2025-12-15 15:32:39
471
原创 Linux kernel Makefile 语法
Linux 内核中的Makefile是构建内核及其模块的重要组成部分。它不仅完成了内核源码的编译,还对模块、链接、依赖、清理等步骤进行了详细定义。以下是 Linux 内核中Makefile的结构及其关键内容详解。
2025-12-15 15:04:27
397
原创 Linux内核编译总结
不写成<name>-m语义分层m是 “模块编译开关”(obj-m),objs是 “模块组成文件列表”,二者职责不同,不能混用;可读性objs(目标文件)比m(模块)更能体现 “组成定义” 的本质;解析逻辑:Kbuild 固定解析作为组成定义,不识别<name>-m;无歧义性:避免m既表示 “开关” 又表示 “组成”,符合 Kbuild 的设计惯例。
2025-12-15 14:01:19
1008
原创 Kconfig介绍
本文介绍了Kconfig配置系统中的关键语法:1. choice/endchoice创建互斥选项组;2. dependson设置依赖条件;3. default定义默认值;4. help提供帮助信息;5. 支持逻辑表达式(&&、||、!)进行条件判断。这些语法用于控制内核配置选项的可见性、默认状态和依赖关系,是Linux内核配置系统的核心功能。
2025-12-14 11:34:52
139
原创 Linux内核镜像分析
关注vmLinux大小这张图展示的是嵌入式 Linux 内核(以 RK3568 开发板为例)从源码到烧录镜像的完整编译 + 打包流程,对应正点原子、鲁班猫等开发板的内核开发实际操作,各环节的作用拆解如下:多个子目录的(比如这里的 I2C/SPI 驱动包,加上内核其他模块的包)会被链接器整合,生成—— 这是未压缩的原始内核镜像,包含了内核的所有功能,但体积较大,不适合嵌入式设备直接使用。会经过压缩、添加启动头,生成—— 这是嵌入式开发中常用的压缩版内核镜像(相当于内核的 “瘦身版”),能节省开发板的存储 /
2025-12-13 17:06:00
444
原创 Linux内核模块的编译
最简单的kbuild Makefile可以仅包含其中$(CONFIG_FOO)可以等于y或m,它的值由.config文件给出。如果$(CONFIG_FOO)既不是y也不是m,那么该文件不会被编译和链接。当$(CONFIG_FOO)等于y时,编译到内核,上面语句等价于obj-y += foo.o,它告诉kbuild在当前目录下,有一个叫做foo.o的目标文件,它将从foo.c或者foo.S编译得到。eg:IIC SPI 优先级比较高当$(CONFIG_FOO)等于m时,表示foo.o需要被编译成模块。
2025-12-13 16:48:34
716
原创 Linux内核Kbuild编译系统
顶层Makefile:根目录下的Makefile是内核构建的核心入口点。它会首先被解析,用于加载全局配置文件(如.config)并设置编译环境变量。通过调用make命令执行。调用处理特定平台。几乎不用修改,除非需要针对整个内核项目进行大规模更改。:内核开发人员需要理解其作用,但一般无需手动修改。.config:记录内核的配置选项,通常通过或工具生成。包含各种功能开关,例如哪些模块要内建、哪些作为模块编译。根目录的Makefile会读取该文件以决定如何配置编译环境。:所有内核和驱动开发人员都需要熟悉。
2025-12-12 21:39:07
436
原创 Linux代码的配置菜单
这是正点原子 RK3568 开发板 Linux SDK 内核源码根目录下的Kconfig),它是 Linux 内核配置系统的核心定义文件,直接支撑等可视化配置工具的菜单结构。文件中mainmenu行定义了界面的顶部标题(会动态显示当前内核的架构、版本信息);而多条指令,则是将内核各子系统(初始化、驱动、文件系统、网络等)的配置选项文件引入,把分散在不同目录的配置逻辑整合为统一的分层菜单 —— 比如会加载驱动子系统的配置选项,这也是我们在中能找到开发板硬件驱动开关的根源。
2025-12-12 20:34:15
671
原创 基于全志H616的智能家居
需要的数据 把dict数据问AI用python写出来 face.py。修改“default” face.py。实现c语言调用python代码 face.c。3.接上串口烧入安装包并且用电脑串口测试。人脸识别示例代码的位置。获取score最大的值在数据库去开锁。修改文件名指令“mv”5.接入阿里云人脸识别。4.板子测试语音模块。
2025-02-05 17:33:04
751
原创 全志对接阿里云视觉垃圾分类项目总结
这里在response.body.to_map()函数后面解析出jason数据的中文垃圾分类类别。同时将场景二注释,场景一代码打开,修改open函数图片本地识别的路径,并输入自己测试图片的路径。1.注册阿里云账号,找到视觉垃圾分类,获取AccessKey ID &Secret。export命令可查看已绑定的AccessKey。将上面的示例代码本地分类封装成一个函数。4.在阿里云平台复制python。然后在末尾输入上面两行后保存。文件在本地或文件不在同一地域。,下面的两行写入到家目。
2025-01-26 11:16:07
292
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅