芒果520
码龄15年
求更新 关注
提问 私信
  • 博客:662,390
    社区:103
    662,493
    总访问量
  • 153
    原创
  • 402
    粉丝
  • 72
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:湖北省
加入CSDN时间: 2011-01-22

个人简介:每天进步一点点

博客简介:

lx123010的专栏

查看详细资料
个人成就
  • 获得565次点赞
  • 内容获得105次评论
  • 获得3,173次收藏
  • 代码片获得1,201次分享
  • 博客总排名813,488名
  • 原力等级
    原力等级
    5
    原力分
    1,307
    本月获得
    0
创作历程
  • 1篇
    2025年
  • 4篇
    2024年
  • 21篇
    2023年
  • 26篇
    2022年
  • 24篇
    2021年
  • 72篇
    2020年
  • 7篇
    2019年
  • 2篇
    2016年
成就勋章
TA的专栏
  • SerDes
    11篇
  • linux驱动
    13篇
  • Linux进程线程
    14篇
  • linux内存管理
    4篇
  • kernel
    26篇
  • 视觉
    13篇
  • Ubuntu系统配置
    13篇
  • linux系统调试
    9篇
  • 硬件设计
    13篇
  • imx8
    3篇
  • linux设备树
    4篇
  • tda2x调试
    2篇
  • s32kDS
    1篇
  • 算法
    1篇
  • linux并发控制
    10篇
  • linux C
    15篇

TA关注的专栏 4

TA关注的收藏夹 0

TA关注的社区 3

TA参与的活动 3

兴趣领域 设置
  • 数据结构与算法
    排序算法
  • 人工智能
    opencv计算机视觉图像处理
  • 嵌入式
    嵌入式硬件
  • 硬件开发
    驱动开发arm开发
创作活动更多

芯创视界・嵌入式视频创作征集大赛

嵌入式工程的价值,藏在每一次硬件调试、代码迭代与项目落地之中。 让我们因热爱相聚,用镜头与一众开发者互通心得、彼此启发,记录下探索的每一步,分享思路与经验。 让更多人看见嵌入式开发的魅力,也让每一次创作成为推动技术传播与社区成长的力量。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0d445ffce72b42f997aaf1b030a652aa.png#pic_center)

19人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

mipi D-PHY详解

PHY 属于 MIPI 接口的最底层部分,也就是物理层,直接涉及到物理连线,信号传输等等,要搞清楚 MIPI 的数据传送,那么从 PHY 入手了解,是一个不错的选择;在 D-PHY 的使用过程中,和其他的总线一样,我们通常会定义个 Master 和 Slave,比如,我们用处理器的 D-PHY 连接到外面显示设备(屏幕)的 D-PHY,那么我们的处理器就是 Master,显示设备就是 Slave;M-PHY 再出来,速度最快,但是与 D-PHY 不兼容,而且受限于其他器件的发展,如此高的带宽,暂时用不上;
原创
博文更新于 2025.07.10 ·
2500 阅读 ·
0 点赞 ·
0 评论 ·
14 收藏

三种MIPI PHY规范的区别

MIPI联盟定义了三种移动设备物理层规范:D-PHY、C-PHY和M-PHY。D-PHY(2007年)采用差分信号传输,有单独时钟通道,主要用于CSI2协议;M-PHY(2008年)虽传输量大但开发复杂,应用较少;C-PHY(2013年)采用三线差分设计,无单独时钟,与CSI2兼容且成本较低。三者均支持高速和低功耗模式,但传输方式、信号幅度和布线要求不同。D-PHY和C-PHY在摄像头领域应用广泛,而M-PHY主要因开发难度大而使用受限。
原创
博文更新于 2025.07.10 ·
2120 阅读 ·
15 点赞 ·
0 评论 ·
18 收藏

mipi deskew原理理解

何为skew, 从字面意思看是倾斜了,不对齐了;放在mipi的传输中意思就是clock lane和data lane 及data lane与data lane间出现了相位差;一旦出现相位差,大家采样数据时就可能不在同一个节拍上,会出现传输错误。所以就要做deskew,通过做deskew来使得大家重新对齐,在同一个节奏下传输数据. 一般当data rate高于1.5G时建议开启deskew。
原创
博文更新于 2025.06.26 ·
7708 阅读 ·
4 点赞 ·
0 评论 ·
31 收藏

相关str函数介绍

unsigned long int strtoul(const char *str, char **endptr, int base)把参数 str 所指向的字符串根据给定的 base 转换为一个无符号长整数(类型为 unsigned long int 型),base 必须介于 2 和 36(包含)之间,或者是特殊值 0。下面是 strtoul() 函数的声明。unsigned lo...
原创
博文更新于 2025.04.27 ·
338 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

i2c协议详解

i2c的数据字节定义为8-bits长度,对每次传送的总字节数量没有限制,但对每一次传输必须伴有一个应答(ACK)信号, 其时钟由主设备提供,而真正的应答信号由从设备发出,在时钟为高时,通过拉低并保持SDA的值来实现。然后主设备开始传送寄存器地址(RA),接到应答后,开始传送寄存器数据, 然后仍然要有应答信号,连续写入多字节时依次类推。传输时,SCL为高电平的时候SDA表示的数据有效,即此时的SDA为高电平时表示数据“1”,为低电平时表示数据“0”。写数据方向时,SDA由主机控制,从机接收信号。
原创
博文更新于 2024.04.18 ·
35800 阅读 ·
46 点赞 ·
0 评论 ·
120 收藏

linux进程间通信IPC方式

Linux环境下,进程地址空间相互独立、彼此隔离,因此进程间的数据不能直接访问。如果要交换数据,必须要通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷贝到内核缓冲区,进程B再把数据从内核缓冲区拷贝走,内核提供的这种机制称为进程间通信(IPC, InterProcess Communication)。在Linux下由很多种进程间通信的方式,分别是:匿名管道(PIPE)、命名管道(FIFO)、信号、共享内存、消息队列、信号量、UNIX域套接字。现在常用的进程间通信方式有:管道(使用简单)
原创
博文更新于 2024.03.27 ·
1195 阅读 ·
13 点赞 ·
0 评论 ·
30 收藏

自旋锁和互斥锁的区别

单CPU非抢占内核下:自旋锁会在编译时被忽略(因为单CPU且非抢占模式情况下,不可能发生进程切换,时钟只有一个进程处于临界区(自旋锁实际没什么用了)单CPU抢占内核下:自选锁仅仅当作一个设置抢占的开关(因为单CPU不可能有并发访问临界区的情况,禁止抢占就可以保证临街区唯一被拥有)多CPU下:此时才能完全发挥自旋锁的作用,自旋锁在内核中主要用来防止多处理器中并发访问临界区,防止内核抢占造成的竞争。
原创
博文更新于 2024.03.27 ·
1060 阅读 ·
12 点赞 ·
0 评论 ·
11 收藏

互斥锁与信号量的区别

信号量与互斥锁都是用于多线程编程中,以实现资源共享和线程同步的机制,但它们在应用场景、实现方式和性能特点上有所不同。总结来说,信号量更侧重于资源共享和线程间的协作,而互斥锁更侧重于资源的安全访问和线程间的互斥。
原创
博文更新于 2024.03.27 ·
2900 阅读 ·
26 点赞 ·
1 评论 ·
32 收藏

进程上下文与中断上下文的理解

内核态:在内核空间执行,通常是驱动程序,中断相关程序,内核调度程序,内存管理及其操作程序。用户态:用户程序运行空间。(1)进程上文:是指进程由用户态切换到内核态是需要保存用户态时cpu寄存器中的值,进程状态以及堆栈上的内容,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。(2)进程下文:其是指切换到内核态后执行的程序,即进程运行在内核空间的部分。
原创
博文更新于 2024.03.27 ·
1695 阅读 ·
13 点赞 ·
0 评论 ·
20 收藏

linux内存管理

在思考cache是什么之前我们首先先来思考第一个问题:我们的程序是如何运行起来的?我们应该知道程序是运行在 RAM之中,RAM 就是我们常说的DDR(例如 DDR3、DDR4等)。我们称之为main memory(主存)当我们需要运行一个进程的时候,首先会从Flash设备(例如,eMMC、UFS等)中将可执行程序load到main memory中,然后开始执行。在CPU内部存在一堆的通用寄存器(register)。如果CPU需要将一个变量(假设地址是A)加1,一般分为以下3个步骤:我们将这个过程可以表示如下
原创
博文更新于 2024.03.26 ·
389 阅读 ·
0 点赞 ·
1 评论 ·
2 收藏

内存分配管理

kmalloc 和 vmalloc 区别在于:kmalloc 分配的内存物理地址是连续的, 虚拟地址也是连续的vmalloc 分配的内存物理地址是不连续的,虚拟地址是连续的因此在使用中,用的较多的还是 kmalloc,因为kmalloc 的性能较好。因为kmalloc的物理地址和虚拟地址之间的映射比较简单,只需要将物理地址的第一页和虚拟地址的第一页关联起来即可。而vmalloc由于物理地址是不连续的,所以要将物理地址的每一页都和虚拟地址关联起来才行。kmalloc和vmalloc是分配.
原创
博文更新于 2024.03.26 ·
478 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

ubuntu18.04系统搭建以及配置

ubuntu 最新下载地址Ubuntu Releaseshttp://releases.ubuntu.com/For old releases, see old-releases.ubuntu.com.1:ubuntu创建和删除用户创建用户Step1 创建用户名sudo useradd username -m注意要在后面加-m,否则不会在home路径下创建该用户的文件夹创建好之后可以在/home/路径下查看该用户名的文件夹在Ubuntu中执行cat /etc/passwd可
原创
博文更新于 2024.03.11 ·
1071 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

内核编译机制

主要由Kconfig提供图形界面完成主要基于Kbuild编译系统,执行make完成编译主要也是基于Kbuild提供的脚本,然后执行make完成安装。
原创
博文更新于 2024.03.11 ·
339 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Shell 特殊变量及其含义

shell是我们在linux下编写自动执行程序的常见脚本工具,通常会涉及到以下几个特殊变量,它们分别是:$#、$*、$@、$?
原创
博文更新于 2024.03.10 ·
1250 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

在驱动中创建sysfs接口、procfs接口、debugfs接口

/灯灭//灯亮这是怎么做到呢?实际上,这是因为在驱动中提供了sysfs接口给用户使用,使得用户可以通过cat或者echo命令来查看和修改驱动中某些变量的值。下面介绍驱动中创建sysfs接口的方法。
原创
博文更新于 2023.09.01 ·
1356 阅读 ·
2 点赞 ·
0 评论 ·
10 收藏

Linux系统调试之gdbserver远程调试程序

本篇讲解如何使用gdbserver对目标开发板上的程序进行远程调试。
原创
博文更新于 2023.08.24 ·
3972 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

Linux系统调试之stty修改串口波特率

Linux内核启动后,串口的波特率通常是115200或者9600,此时shellsttysttyset tty。即改变并打印终端行设置,用于检查和修改当前注册的终端的通信参数。
原创
博文更新于 2023.08.23 ·
4205 阅读 ·
2 点赞 ·
0 评论 ·
13 收藏

底层开发必知的内存结构概念

Linux中内存管理子系统使用节点(node)、区域(zone)和页(page)三级结构描述物理内存。
原创
博文更新于 2023.08.21 ·
337 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux内核入口函数——initcall

写过Linux驱动的人都知道宏,因为它声明了一个驱动的入口函数。除了宏,你会发现在Linux内核中有许多的驱动并没有使用上述举例的两个驱动入口分别使用了和来声明驱动入口,这些本质上都是对initcall的调用,也如此。
原创
博文更新于 2023.08.19 ·
611 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux系统调试——核心转储(core dump)

本篇讲解Linux应用程序发生段错误时,如何利用core dump文件定位错误。
原创
博文更新于 2023.08.19 ·
1007 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏
加载更多