自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 编写驱动设备函数的用法

从终端输出和文件信息来看,(生成了 RK3568 平台对应的 ARM64 架构驱动模块)。

2025-12-22 16:37:53 534

原创 注册字符设备

Ps:__通常都是一些接口的底层函数,应该谨慎使用__init 初始化执行一次__exit 卸载执行一次注册字符设备可以分为两个步骤:字符设备初始化字符设备的添加。

2025-12-22 16:34:37 1170

原创 主次设备号

字符设备大多通过链表管理。主设备号不能大于512。

2025-12-21 22:56:10 191

原创 图解字符驱动模块设计思路

用户空间调用VFS 层 (虚拟文件系统)字符设备层驱动程序实现。

2025-12-21 21:15:53 630

原创 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

原创 ARGB和对齐原理是什么

核心是 “Alpha+RGB 三原色” 的 4 通道存储,文档中用的。

2025-12-21 11:57:55 152

原创 具体掌握字符设备驱动

里的对应函数 —— 这是 “用户空间和硬件交互的桥梁”。等系统调用访问设备文件时,内核会转发到。

2025-12-20 22:48:27 235

原创 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

原创 Linux Oled显示字符

【代码】Linux Oled显示字符。

2025-01-11 16:25:41 332

原创 Linux 线程 互斥锁限制共享资源的访问

【代码】Linux 线程 互斥锁限制共享资源的访问。

2025-01-07 14:56:42 143

原创 Linux signal信号捕捉 kill杀死进程

【代码】Linux signal信号捕捉 kill杀死进程。

2025-01-05 22:20:28 172

原创 Linux IPC之共享内存

【代码】Linux IPC之共享内存。

2024-12-18 16:36:13 238

原创 Linux之命名管道

write_fifo 代码 创建一个fifo1管道 将时间写入。read_fifo 通过管道读取上面写入的时间并打印。

2024-12-13 15:27:52 176

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除