- 博客(92)
- 资源 (1)
- 收藏
- 关注

原创 【LED子系统深度剖析】一、开篇词|Linux驱动开发必读
✍ Linux驱动开发系列文章| LED子系统:该文章为LED子系统专栏文章的大纲,该系列文章进行概览!
2023-06-02 07:00:00
1593
30

原创 【Bluetooth蓝牙开发】一、开篇词 | 打造全网最详细的Bluetooth开发教程
1、开篇词2、蓝牙开发入门3、蓝牙协议栈总览4、蓝牙协议栈——物理层5、蓝牙协议栈——链路层6、蓝牙协议栈——传输层7、蓝牙协议栈——L2CAP协议8、蓝牙协议栈——ATT协议 9、蓝牙协议栈——GATT协议10、蓝牙通信流程分析11、蓝牙协议栈——Bluez交叉编译12、蓝牙调试工具汇总
2022-09-30 08:06:23
10234
67

原创 【毕业季|进击的技术er】作为一名职场人,精心总结的嵌入式学习路线图
大学毕业,还在为选择工作迷茫吗?董哥带你一文领略嵌入式学习路线地图,送给刚毕业的你,祝你早日走出迷茫区
2022-06-20 09:14:12
90430
260
原创 【一文秒懂】Linux ADB调试环境搭建指南
🏋️ 该文章提供了Linux环境下搭建ADB(Android Debug Bridge)调试环境的详细指南。📢 内容主要包括:ADB的概念、架构组成,以及在主机端和客户端的安装步骤,还列出了一些常用ADB命令,如设备连接、文件传输、应用安装与卸载、查看日志和设备重启等。
2024-04-23 07:52:34
3481
2
原创 【WiFi开发全攻略】WIFI常用工具汇总
🏋️ 文档提供了WiFi开发中常用的命令行工具,包括iwconfig、iwlist、iwgetid、iw、wpa_supplicant、wpa_cli、udhcpc、hostapd、hostapd_cli和udhcpd。📢 这些工具用于配置无线网络接口参数、扫描无线网络、获取无线网络信息、管理无线网络连接、实现无线访问点功能以及提供DHCP服务,感兴趣的朋友下载阅读,扩宽技术面。
2024-04-02 08:12:27
1259
原创 内容分发工具,一键解放双手!
作为自媒体行业的一名博主,除了创作高质量的内容外,如何让我们的内容被更多的人看到是一个永恒的话题,也就是——流量。无论我们做哪方面,视频也好,文章也好,想要提高我们的曝光度,从两方面入手管道数量管道流量不可否认的是,现在是内容为王的时代,高质量的内容,无论在哪个平台上,大概率数据都不会太差,同时要想我们的曝光度呈现倍数增长,仍然需要提高管道的数量。
2024-03-09 19:29:58
695
1
原创 【一文秒懂】Ftrace系统调试工具使用终极指南
在目录下,包含的是kernel所有的调试信息,本章只关注与tracing目录,下面挑选一些比较重要的属性文件来分析。万变不离其宗,如此复杂的框架,设计人员已经提供了README文件,里面详解了各个属性文件的含义,我建议抛弃本文,看README吧:)以上,介绍了Ftrace的由来,实现原理,以及如何使用Ftrace,并最终提供了自动化测试脚本,希望对大家有所帮助。欢迎关注 公号&星球【嵌入式艺术】,董哥原创!
2024-01-23 09:04:03
2872
原创 【MMC子系统】四、MMC控制器驱动层
控制器驱动层一般为做的事,不同的芯片实现方式不尽相同。当然,设备驱动程序也有一套既定的框架,按照框架来编写,实现对应的接口就可以了,在这里,我们主要分析一下控制器驱动的实现框架,不拘泥于细节。 这套基本的框架,老生常谈,其主要功能就是:按照匹配表,来实现和的匹配,然后执行函数。 比较重要的两个函数,我们一般后,执行完函数后,最终如果设备树和驱动匹配成功,会调用函数,相同,卸载驱动时,也会调用到函数。函数作用:从设备树获取配置信息,并初始化控制器,最后将加入到子系统中。函数看起来就比较简单了,就是函数的
2024-01-11 09:01:34
1342
原创 【MMC子系统】三、MMC子系统框架
MMC子系统的框架MMC子系统的文件结构MMC设备在Linux下的文件分布下章,我们来详细了解MMC子系统的代码实现部分。欢迎关注 公号&星球【嵌入式艺术】,董哥原创!
2024-01-03 07:33:37
1651
原创 【Linux API 揭秘】container_of函数详解
container_of可以说是内核中使用最为频繁的一个函数了,简单来说,它的主要作用就是根据我们结构体中的已知的成员变量的地址,来寻求该结构体的首地址,直接看图,更容易理解。下面我们看看linux是如何实现的吧linux(type *)0offsetof。了解完内部完整的实现手法之后,我们也可以手码一个了 😃欢迎关注 公号&星球【嵌入式艺术】,董哥原创!
2023-12-14 08:47:23
287
1
原创 Linux内存管理 | 六、物理内存分配——伙伴系统
上一章,我们了解了物理内存的布局以及`Linux`内核对其的管理方式,页`(page)`也是物理内存的最小单元,`Linux`内核对物理内存的分配主要分为两种:一种是整页的分配,采用的是伙伴系统,另一种是小内存块的分配,采用的是`slab`技术。下面我们先来看看什么是伙伴系统!
2023-12-12 08:50:35
463
原创 一文秒懂|Linux字符设备驱动
众所周知,Linux内核主要包括三种驱动模型,字符设备驱动,块设备驱动以及网络设备驱动。其中,Linux字符设备驱动,可以说是Linux驱动开发中最常见的一种驱动模型。我们该系列文章,主要为了帮助大家快速入门Linux驱动开发,该篇主要来了解一些字符设备驱动的框架和机制。系列文章基于字符设备驱动相关数据结构数据结构关系图核心API接口字符设备驱动整体框架希望对大家有所帮助。欢迎关注 公号&星球【嵌入式艺术】,董哥原创!
2023-11-30 09:03:19
297
原创 Linux性能分析——TOP命令详解
Linux系统中,Top命令主要用于实时运行系统的监控,包括Linux内核管理的进程或者线程的资源占用情况。这个命令对所有正在运行的进程和系统负荷提供不断更新的概览信息,包括系统负载、CPU利用分布情况、内存使用、每个进程的内容使用情况等信息。%CPUCPU Usage,自上次屏幕更新以来任务占用的CPU时间份额,表示为总CPU时间的百分比。%MEM,进程使用的物理内存百分比CODECode Size,可执行代码占用的物理内存量COMMAND,用于显示输入的命令行或者程序名称PIDProcess Id。
2023-11-20 07:15:00
6034
1
原创 Linux内存管理 | 五、物理内存空间布局及管理
我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux驱动开发和系统开发,曾就职于世界500强企业!创作理念:专注分享高质量嵌入式文章,让大家读有所得!
2023-11-14 08:23:57
517
原创 Linux内存管理 | 四、物理地址空间设计模型
以上,我们先对物理内存空间有一个基础的了解,明白物理内存空间的内存访问模型和组织模型,下面我们再详细介绍物理内存空间的布局和管理。
2023-10-24 08:50:34
569
19
原创 Linux内存管理 | 三、虚拟地址空间管理
上一节,我们主要了解了虚拟内存空间的布局情况,趁热打铁,我们直接从源代码的视角,来看一下`Linux`内核是如何管理虚拟内存空间的。废话不多说,直接开始!
2023-10-18 08:36:47
584
21
原创 Linux内存管理 | 二、虚拟地址空间布局
上一章,我们了解了内存管理的由来以及核心思想,下面我们按照顺序,先来介绍一下Linux虚拟内存空间的管理。 同样,我们知道Linux内核抽象出来虚拟内存空间,主要是为了让每个进程都独享该空间,那虚拟内存空间是如何布局的呢?
2023-10-12 08:20:01
700
1
原创 Linux内存管理 | 一、内存管理的由来及思想
Linux内存管理 | 一、内存管理的由来及思想 首先,内存管理,管理的是个什么东西?管理的其实是我们的物理内存,也就是我们的RAM空间,在电脑上,表现为我们安装的内存条,有的人装个4G的、8G的、甚至64G的,这些就是实打实的物理空间大小,也就是我们的实际的硬件资源。
2023-10-04 13:24:32
331
原创 【深入理解Linux锁机制】八、完成量
本系列文章,深入讲解了Linux锁机制,包括:【深入理解Linux锁机制】一、内核锁的由来【深入理解Linux锁机制】二、中断屏蔽【深入理解Linux锁机制】三、原子操作【深入理解Linux锁机制】四、自旋锁【深入理解Linux锁机制】五、衍生自旋锁【深入理解Linux锁机制】六、信号量【深入理解Linux锁机制】七、互斥体【深入理解Linux锁机制】八、完成量旨在帮助大家更加深入的了解Linux内核相关知识。
2023-09-08 08:30:00
462
1
原创 【深入理解Linux锁机制】七、互斥体
本系列文章,深入讲解了Linux锁机制,包括:【深入理解Linux锁机制】一、内核锁的由来【深入理解Linux锁机制】二、中断屏蔽【深入理解Linux锁机制】三、原子操作【深入理解Linux锁机制】四、自旋锁【深入理解Linux锁机制】五、衍生自旋锁【深入理解Linux锁机制】六、信号量【深入理解Linux锁机制】七、互斥体【深入理解Linux锁机制】八、完成量旨在帮助大家更加深入的了解Linux内核相关知识。
2023-09-08 07:15:00
466
原创 【深入理解Linux锁机制】六、信号量
本系列文章,深入讲解了Linux锁机制,包括:【深入理解Linux锁机制】一、内核锁的由来【深入理解Linux锁机制】二、中断屏蔽【深入理解Linux锁机制】三、原子操作【深入理解Linux锁机制】四、自旋锁【深入理解Linux锁机制】五、衍生自旋锁【深入理解Linux锁机制】六、信号量【深入理解Linux锁机制】七、互斥体【深入理解Linux锁机制】八、完成量旨在帮助大家更加深入的了解Linux内核相关知识。
2023-09-07 08:43:16
345
原创 【深入理解Linux锁机制】五、衍生自旋锁
本系列文章,深入讲解了Linux锁机制,包括:【深入理解Linux锁机制】一、内核锁的由来【深入理解Linux锁机制】二、中断屏蔽【深入理解Linux锁机制】三、原子操作【深入理解Linux锁机制】四、自旋锁【深入理解Linux锁机制】五、衍生自旋锁【深入理解Linux锁机制】六、信号量【深入理解Linux锁机制】七、互斥体【深入理解Linux锁机制】八、完成量旨在帮助大家更加深入的了解Linux内核相关知识。
2023-09-06 08:24:06
278
原创 如何写一个外设驱动?
写一个常见的字符设备外设驱动,主要遵循以下流程1. **了解硬件和接口**:查看外设用户手册,了解该外设使用的是什么通信接口,`IIC`、`SPI`、`UART`等。2. **设备树配置**:遵循设备树语法,在设备树中添加该外设的设备属性信息。3. **外设`driver`结构体配置**:遵循`Linux`驱动框架,创建外设`driver`结构体,并设定相应的回调函数,包括`probe`、`remove`、外设`driver`和`device`的匹配规则`id_table`,驱动名称等信息。
2023-08-30 09:39:56
1130
11
原创 【深入理解Linux锁机制】四、自旋锁
本系列文章,深入讲解了Linux锁机制,包括:【深入理解Linux锁机制】一、内核锁的由来【深入理解Linux锁机制】二、中断屏蔽【深入理解Linux锁机制】三、原子操作【深入理解Linux锁机制】四、自旋锁【深入理解Linux锁机制】五、衍生自旋锁【深入理解Linux锁机制】六、信号量【深入理解Linux锁机制】七、互斥体【深入理解Linux锁机制】八、完成量旨在帮助大家更加深入的了解Linux内核相关知识。
2023-08-24 09:09:31
411
原创 【深入理解Linux锁机制】三、原子操作
本系列文章,深入讲解了Linux锁机制,包括:【深入理解Linux锁机制】一、内核锁的由来【深入理解Linux锁机制】二、中断屏蔽【深入理解Linux锁机制】三、原子操作【深入理解Linux锁机制】四、自旋锁【深入理解Linux锁机制】五、衍生自旋锁【深入理解Linux锁机制】六、信号量【深入理解Linux锁机制】七、互斥体【深入理解Linux锁机制】八、完成量旨在帮助大家更加深入的了解Linux内核相关知识。
2023-08-17 07:15:00
399
原创 初级嵌入式软件工程师养成记(学习路线+学习资源+实战项目汇总)
世界这么大,还是遇见你…大家好,我是董哥,一名嵌入式Linux开发工程师,曾就职于世界500强企业,目前就职独角兽芯片公司,从事Linux驱动系统开发工作,依旧在追梦的道路上前行。依稀还记得我刚踏入嵌入式领域,磕磕绊绊的学习51单片机,再接着去接触STM32单片机,玩各种传感器,毕业后接触Linux,更加坚定了我在嵌入式领域深造的决心。
2023-07-11 09:15:29
3720
10
原创 Linux内核态内存泄露检测工具——Kmemleak
在Linux内核开发中,Kmemleak是一种用于检测内核中内存泄漏的工具。内存泄漏指的是程序中已经不再使用的内存没有被妥善地释放,导致内存的浪费。内核中的内存泄漏同样会导致系统性能下降、系统崩溃等问题。Kmemleak能够检测内核中的内存泄漏,通过检测内核中未被释放但又无法找到其使用位置的内存,进一步定位、修复内存泄漏的问题。在用户空间,我们常用Valgrind来检测;在内核空间,我们常用Kmemleak来检测。
2023-06-22 07:00:00
1825
1
原创 【深入理解Linux锁机制】二、中断屏蔽
本系列文章,深入讲解了Linux锁机制,包括:【深入理解Linux锁机制】一、内核锁的由来【深入理解Linux锁机制】二、中断屏蔽【深入理解Linux锁机制】三、原子操作【深入理解Linux锁机制】四、自旋锁【深入理解Linux锁机制】五、衍生自旋锁【深入理解Linux锁机制】六、信号量【深入理解Linux锁机制】七、互斥体【深入理解Linux锁机制】八、完成量旨在帮助大家更加深入的了解Linux内核相关知识。
2023-06-09 09:25:05
3054
1
原创 【深入理解Linux锁机制】一、内核锁的由来
本系列文章,深入讲解了Linux锁机制,包括:【深入理解Linux锁机制】一、内核锁的由来【深入理解Linux锁机制】二、中断屏蔽【深入理解Linux锁机制】三、原子操作【深入理解Linux锁机制】四、自旋锁【深入理解Linux锁机制】五、衍生自旋锁【深入理解Linux锁机制】六、信号量【深入理解Linux锁机制】七、互斥体【深入理解Linux锁机制】八、完成量旨在帮助大家更加深入的了解Linux内核相关知识。
2023-06-08 10:35:33
2286
原创 【LED子系统深度剖析】八、小试牛刀
✍ Linux驱动开发系列文章| LED子系统:该篇详细讲解了以IMX6ULL为例,详细讲解Linux中LED子系统的开发流程✍
2023-05-26 22:58:30
1770
原创 【LED子系统深度剖析】六、核心层详解(三)
✍ Linux驱动开发系列文章| LED子系统:该篇详细讲解了核心层的led-triggers.c的初始化流程以及核心API的实现✍
2023-05-19 08:32:16
1220
原创 【LED子系统深度剖析】五、核心层详解(二)
✍ Linux驱动开发系列文章| LED子系统:该篇详细讲解了核心层的led-core.c的初始化流程以及核心API的实现✍
2023-05-15 08:31:24
1328
原创 【LED子系统深度剖析】四、核心层详解(一)
✍ Linux驱动开发系列文章| LED子系统:该篇详细讲解了核心层的led-class.c的初始化流程以及相关API的实现✍
2023-05-11 09:01:42
1242
原创 【Shell编程】| if 判断的五个关键点
我们在`Shell`脚本中,最常用的流程控制就是`if`比较语句了,当然你也许觉得它太小儿科,但是你真的了解透彻了吗?
2023-05-05 18:19:10
1567
原创 【LED子系统深度剖析】三、硬件驱动层详解
✍ Linux驱动开发系列文章| LED子系统:该篇深度讲解了led-gpio.c的初始化流程以及相关API的实现✍
2023-04-23 08:49:41
2269
38
原创 【Linux驱动基础详解】| Linux模块声明与描述
我们在编写一个模块的时候,常常使用一些宏定义来标识模块的作者,版本,以及相关信息的描述,如:`MODULE_AUTHOR`、`MODULE_DESCRIPTION`、`MODULE_LICENSE`、`MODULE_ALIAS`等,那么这些宏是如何进行管理的呢?
2023-04-07 08:36:10
1902
1
EMMC各版本协议,SD卡各版本协议
2022-01-23
ST25DV驱动开发请教?
2022-08-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人