嵌入式Linux
文章平均质量分 79
该专栏主要分享嵌入式Linux应用与驱动相关内容
攒钱植发
攒钱植发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
嵌入式Linux——一文搞懂嵌入式图像格式:从 NV12/RGB 原理到 Stride 内存对齐
本文系统介绍了图像数据格式的两大阵营:RGB家族(如BGR、RGB565)和YUV家族(如NV12、YUYV)。RGB格式适合屏幕显示,YUV格式因亮度与色度分离更利于压缩传输。重点解析了NV12、BGR、YUYV等常见格式的内存排列特点,并深入探讨了Stride(跨距)概念及其对硬件处理效率的影响,指出嵌入式开发中常见的图像处理误区。最后通过代码示例对比了正确与错误的图像数据处理方式。原创 2026-01-05 16:43:27 · 531 阅读 · 0 评论 -
嵌入式Linux——RK 平台 MIPI 摄像头画面发绿排查与修复:从零到可用(IMX415 + /dev/video22)
摘要:本文针对RK平台(如RK3588)MIPI摄像头画面发绿问题提供完整解决方案。通过分析ISP架构和3A(AE/AWB/AF)机制,指出偏色主因是rkaiq_3A_server未正常运行。提供详细排查步骤:1)确认ISP输出节点;2)NV12抓帧验证;3)通过屏蔽多ISP节点和setpriv权限控制稳定启动3A服务。最终给出自动化脚本方案和修复验证方法,帮助开发者快速解决MIPI摄像头偏色问题。原创 2025-12-22 16:31:32 · 951 阅读 · 0 评论 -
嵌入式Linux——开发踩坑记:从 WebSocket 死锁到 PortAudio 音频丢包的硬核调试
本文记录了开发Linux AIChat客户端时遇到的三个典型Bug及其解决方案:1)通过原子变量实现异步通信解决WebSocket死锁问题;2)采用混合轮询模式平衡阻塞与非阻塞读取,避免音频采集线程死锁;3)正确处理ALSA驱动溢出错误,确保录音数据不丢失。这些案例揭示了多线程同步、驱动交互和错误处理的深层原理,为嵌入式音频应用开发提供了宝贵经验。原创 2025-12-03 20:56:53 · 654 阅读 · 0 评论 -
嵌入式Linux——Linux驱动中,read/write函数如何知道 open 打开了哪个设备?
摘要:Linux驱动中的文件私有数据(private_data)是struct file结构体的一个void*类型指针成员,用于在通用文件操作中关联具体设备实例。它通过open()函数将设备结构体指针存入filp->private_data,然后在后续read()、write()等操作中快速定位对应设备。该机制解决了多设备管理和会话状态维护问题,使驱动能准确识别操作目标设备。典型应用场景包括管理多个同类设备实例(如多个串口)和保存每个打开会话的独立状态信息(如读写模式)。原创 2025-11-28 14:46:45 · 769 阅读 · 0 评论 -
嵌入式Linux——一文搞懂:Mutex与中断上下文、与下半部(Softirq/Tasklet/Workqueue)的关系
中断上下文中禁止使用互斥锁(mutex),因为互斥锁会导致睡眠,而中断上下文(包括上半部和大部分下半部)不允许睡眠。原创 2025-11-17 09:21:35 · 251 阅读 · 0 评论 -
嵌入式Linux——“大扳手”与“小螺丝”:为什么不该用信号量(Semaphore)去模拟“完成量”(Completion)
摘要:Linux中完成量(Completion)与信号量(Semaphore)的核心区别在于设计意图和使用场景。信号量主要用于资源访问控制,而完成量专为等待任务完成事件设计。原创 2025-11-09 22:02:23 · 739 阅读 · 0 评论 -
嵌入式Linux——深入 RCU 写端:synchronize_rcu() 和 call_rcu() 到底在干什么?
RCU机制中,写端释放旧数据有两种策略:同步RCU(synchronize_rcu)会阻塞等待所有读端退出宽限期,由调用者负责后续清理;挂接回调(call_rcu)采用异步方式,注册清理函数后立即返回,由RCU系统在宽限期结束后自动执行回调。同步RCU会阻塞线程且不能在中断上下文使用,而挂接回调不阻塞,适用于高性能场景,是RCU的关键优势所在。两种方法都确保在安全释放旧数据前等待所有读操作完成。原创 2025-11-07 09:55:26 · 523 阅读 · 0 评论 -
嵌入式Linux——rcu_read_lock() 到底在 “lock“ 什么?—— 理解 RCU 读端的真正代价
RCU读端机制解析 RCU读端操作rcu_read_lock()和rcu_read_unlock()并非传统意义上的锁机制,而是轻量级的抢占控制标记。它们的主要功能是防止内核抢占,而非阻塞其他CPU的操作。原创 2025-11-06 11:20:53 · 732 阅读 · 0 评论 -
嵌入式C语言——Debug与Release模式的真正区别与“优化大坑”
C语言编译模式解析:Debug与Release的本质区别原创 2025-10-20 10:19:18 · 368 阅读 · 0 评论 -
嵌入式Linux——LVGL从段错误到 lv_async_call:LVGL后台线程通知UI的正确姿势
在LVGL应用中,后台线程如果直接通过lv_obj_send_event通知UI线程会导致潜在的段错误和逻辑错误,因为GUI操作不是线程安全的。原创 2025-10-18 21:38:53 · 1185 阅读 · 0 评论 -
嵌入式Linux——软中断和硬中断的区别
Linux中断处理机制采用分层设计:硬中断(Hardirq)负责紧急硬件信号的即时响应,必须立即执行且不可被打断;软中断(Softirq)则由硬中断触发,在安全时间点进行较复杂但非紧急的任务处理。两者关系类似急诊流程:硬中断如护士进行快速急救,软中断如医生完成后续治疗。软中断执行时仍可被新的硬中断抢占,确保系统始终优先响应最紧急事件。这种设计既保证了实时性,又实现了任务的高效分层处理。原创 2025-10-11 21:55:45 · 191 阅读 · 0 评论 -
嵌入式Linux——如何在Linux内核中正确返回和处理错误码:IS_ERR 与 PTR_ERR 实战指南
Linux内核错误处理机制解析:Linux内核采用了一套明确的错误处理机制,通过返回负整数表示不同的错误类型,相比用户态程序返回-1或NULL,能提供更精确的错误信息。原创 2025-09-19 15:32:20 · 705 阅读 · 0 评论 -
嵌入式Linux——一行 dump_stack() 揭秘 Linux 驱动加载全过程
本文通过一个驱动模块示例展示了如何追踪内核函数调用堆栈。当驱动模块dump_stack_test.ko加载时,其hello_init函数调用dump_stack()打印内核调用堆栈信息。原创 2025-09-17 15:15:20 · 289 阅读 · 0 评论 -
嵌入式Linux——Linux 内核配置三剑客:一篇搞懂 Kconfig, .config 和 defconfig
本文介绍了Linux内核编译过程中三种关键配置文件的作用与关系原创 2025-09-15 10:34:32 · 1216 阅读 · 0 评论 -
嵌入式Linux——带环形缓冲区的按键中断驱动
本文介绍了带有环形缓冲区的按键驱动改进版本。针对旧版本使用单一全局变量导致按键事件丢失的问题,新版本引入环形缓冲区作为生产-消费模型的"传送带"。原创 2025-09-13 11:57:21 · 879 阅读 · 0 评论 -
嵌入式Linux——使用按键中断的程序的完整流程
基于GPIO按键中断的完整驱动程序流程原创 2025-09-09 10:45:43 · 346 阅读 · 0 评论 -
嵌入式Linux——当手指按下按键触发中断的整个流程是怎么样的?
中断触发流程原创 2025-09-04 14:55:44 · 321 阅读 · 0 评论 -
嵌入式Linux——Linux中断系统中的重要数据结构——最直观的理解
直观理解Linux中断系统的核心架构原创 2025-09-01 15:06:22 · 599 阅读 · 0 评论 -
[嵌入式][铁头山羊平衡车][Bug记录]PID控制失败:未引入math.h与SysTick中断隐患
在PID控制实验中,发现实际转速无法跟上目标转速的阶段性增加。经过分析,发现两个关键问题:首先,app_pwm.c文件中未引入math.h,导致fabsf()函数未正确计算浮点数的绝对值,进而影响ccr的计算,使得PID输出异常。其次,stm32f10x_it.c中SysTick_Handler未检查COUNTFLAG,导致ulTicks可能错误递增,影响时间间隔dt的准确性,进而影响PID控制器的积分和微分项计算。这些问题共同导致了控制系统的性能下降。原创 2025-05-10 16:21:29 · 1040 阅读 · 0 评论 -
[嵌入式][FreeRTOS]在FreeRTOS中如何优化中断相关的一系列FromISR的Api
如何优化中断相关的一系列FromISR的Api。原创 2025-03-21 20:25:41 · 313 阅读 · 0 评论 -
[嵌入式][FreeRTOS]在FreeRTOS中如何实现I2C的互斥访问
当你在一个FreeRTOS项目中多个任务需要用到I2C通讯时,I2C通信可能会乱套,可以用互斥量实现互斥。原创 2025-03-21 10:54:40 · 588 阅读 · 1 评论
分享