- 博客(153)
- 收藏
- 关注
原创 Linux下设备树dts内容(详细)总结及示例解析
文章目录一、简介二、设备树基础内容2.1 设备树文件存放路径2.2 DTS、DTB和DTC关系2.3 传统驱动代码和使用设备树的对比三、设备树内容属性介绍3.1 节点名称3.2 compatible3.3 model 属性3.4 status 属性3.5 #address-cells 和 #size-cells 属性3.6 ranges 属性3.7 aliases 节点3.8 chosen 节点四、设备树文件内容示例解析4.1 设备树关键内容解析一、简介设备树是在PowerPC平台最先使用,后来2
2022-05-14 20:07:43
13764
原创 SSD硬盘SATA接口和M.2接口区别(详细)总结
一、简介目前主流的SSD硬盘都是SATA接口或者M.2接口。本文主要接收SATA和M.2硬盘的结构,并对两种硬盘从多个方面进行对比阐述。二、SATA接口详解SATA(Serial Advanced Technology Attachment)硬盘,又称串行ATA,是串行SCSI(SAS:Serial Attached SCSI)的孪生兄弟,两者的排线相容,SATA硬盘可接上SAS接口。它是一种电脑总线,主要功能是用作主板和大量储存装置(如硬盘及光驱)之间的数据传输之用。目前主流SATA 3.0通道,
2022-04-22 11:25:57
95835
2
原创 关于路由器和交换机的区别图解(总结)
简介路由器是在交换机的基础上发展而来:路由器又被称为网关设备,用于连接多个逻辑上分开的网络,它是不同网段通信的桥梁。路由器是在交换机的基础上发展而来,它们之间在概念上有一定的重叠但也有很大的不同,交换机泛指工作在任何网络层次的数据中继设备,而路由器需要提供路由、传送路径的机制,路由器能够理解不同的协议,再根据特定的路由算法把相关的数据包按照最佳路线传送到指定位置。主要区别1、路由器在网络层,路由器根据IP地址寻址,路由器可以处理TCP/IP协议,交换机不可以,交换机根据MAC地址寻址。交换机在数据
2022-03-30 13:57:37
51471
原创 Linux网卡接收数据包过程图详细总结
简介本文对代码的详细实现过程不做过多的讲解,重点让读者熟悉数据的接收过程,如需进一步熟悉源码,可根据下面的链接做进一步学习:1、网卡驱动源码分析2、网卡结构和基础知识详解收包过程总览从TCP/IP网络分层模型中可以清楚当数据帧从网卡(物理层)接收到客户端(应用层)收到数据包的整个过程。通过网卡进行网络数据接收一般要经历下面两个过程:1、接收数据前的准备工作 1)网络子系统的初始化; 2)协议栈的注册; 3)网卡驱动的初始化; 4)启动网卡;2、接收和传输网络数据:一、接
2022-03-27 18:43:52
8046
5
原创 socket通信原理及相关函数(详细)总结
简介socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。我的理解就是Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)。socket就在应用程序的传输层和应用层之间,设计了一个socket抽象层,传输层的底一层的服务提供给socket抽象层,socket抽象层再提供给应用层,问题又来了,应用层
2022-03-22 11:11:59
11578
原创 I2C总线内容(详细)总结分享
简介IIC的全称是Inter-Integrated Circuit,串行总线的缩写,由duPhilips公司推出,是近年来在微电子通信控制制领域广泛采用的一种新型总线标准。具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。它是同步通信的一种特殊形式,仅需两根线(SLC、SDA)即可完成信息传输,并且通信速率较高。在主从通信中,可以有多个IIC设备同时接到IIC总线上,通过地址来识别通信对象。I2C总线时序详解1.1 总线数据有效性 I2C总线是单工,因此同一时刻数据只有一个流向
2022-03-15 16:28:56
9494
原创 Linux系统下dd命令详解
简介dd命令可以标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出,常用于刻录启动光盘、备份硬盘文件和格式化硬盘数据等操作。参数详解if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。obs=bytes:一次输出bytes个字节,即
2021-04-30 13:55:54
18151
原创 linux系统下grub.cfg详解和实例操作
简介grub是引导操作系统的程序,它会根据自己的配置文件,去引导内核,当内核被加载到内存以后,内核会根据grub配置文件中的配置,找到根分区所使用的文件系统对应的驱动,通过根分区文件系统对应的驱动,挂载根分区,从而达到启动操作系统的目的。特殊变量变量详解?上一条命令的返回值,零表示成功,非零表示失败[与bash一样]。由GRUB2自动设置。你只能使用此变量,而不能修改它check_signatures是否在加载文件时强制验证签名,可以设为’yes’或’no’chos
2021-02-02 17:23:26
16338
3
原创 Linux系统自动挂载设备配置文件fstab详解
Linux系统盘在系统安装完后会将各个分区自动挂载的参数写入到/etc/fstab配置文件中,因此我们可以参考系统挂载方式将其他磁盘写入配置文件中进行开机自动挂载。
2020-08-09 00:35:10
9525
2
原创 Linux系统下LightDM详解
简介LightDM(Light Display Manager)是一个全新的轻量级Linux桌面显示管理器,而传统的Ubuntu是使用GNOME桌面标准的GDM。LightDM是一个跨桌面显示管理器,其目的是成为X org的X Server的标准显示管理器。LightDM是2010年开始的新项目,且被设计为轻量、小巧、快速。相较于GDM-GTK、KDM-Qt、LightDM实际上与界面无关,...
2019-12-19 16:18:24
9131
原创 Synopsys AXI DMAC模块协议总结及实例操作
本文详细解析了Synopsys AXI DMAC控制器的主要寄存器功能及配置流程。重点介绍了全局寄存器(DMAC_CFG、DMAC_CHEN等)、通道寄存器(CH_SAR、CH_DAR、CH_CTL等)和中断相关寄存器的配置方法,并说明了LLI链表模式的工作原理。配置流程包括:初始化全局设置、配置通道参数、设置中断(可选)、使能通道等步骤。文章还提供了传输字节数计算公式和典型寄存器配置示例,帮助开发者快速掌握AXI DMAC控制器的使用。
2025-12-20 07:08:30
942
原创 Synopsys APB UART协议总结及实例操作
本文详细解析了Synopsys APB UART协议中的关键寄存器功能及通信流程。主要内容包括:UART帧结构字段说明(起始位、数据位、校验位等),9个核心寄存器的功能解析(RBR/THR、IER、IIR/FCR等),重点介绍了DLAB位的复用机制和波特率设置方法。文章还通过流程图展示了UART读写操作的具体步骤,包括初始化配置、数据发送和接收流程。最后提供了相关通信协议的扩展阅读链接,涵盖I2C和SPI协议详解。全文系统性地梳理了UART通信的核心知识点,适合嵌入式开发人员参考。
2025-12-19 05:24:42
808
原创 Synopsys APB I2C协议总结及实例操作
本文解析了Synopsys APB I2C Databook中的关键寄存器功能,包括控制寄存器(IC_CON)、目标地址寄存器(IC_TAR)、数据命令寄存器(IC_DATA_CMD)等。通过流程图展示了I2C读写流程,并提供了具体的寄存器配置实例,演示了如何通过I2C读写从设备数据。最后附有I2C驱动实例、总线协议详解等相关技术链接,为I2C接口开发提供了实用参考。
2025-11-29 14:27:01
605
原创 Linux内核debug方式详细总结及结合实例快速掌握
本文总结了Linux内核调试的常用方法,主要包括:1)通过dmesg/printk查看内核日志;2)使用SysRq调试键处理系统卡死;3)gdb调试工具结合vmlinux进行单步调试;4)kgdb/kdb实现真机远程调试;5)利用crash分析内核崩溃dump文件;6)ftrace/trace-cmd进行函数级性能分析;7)dynamic debug动态控制内核打印;8)perf进行性能采样;9)bpftrace/eBPF动态插桩技术。文章还详细介绍了gdb调试模块、崩溃分析、printk分级打印以及dyn
2025-11-28 07:05:12
736
原创 开源相关术语及提交commit关键字总结
本文介绍了开源相关的核心术语与概念,包括基本术语(如Open Source、Fork、Pull Request)、分支维护策略(如LTS、stable)、常见工具(如GitHub Actions、Jenkins)、许可证类型(如GPL、MIT)以及版本管理(如tag、release)。重点解析了Git相关操作,包括代码溯源(bisect、blame)和标准commit格式规范,提供常用动作词(Add/Fix/Update)的示例。内容涵盖开源项目开发全流程的关键知识点,可作为快速参考指南。
2025-11-26 07:09:07
1020
原创 芯片封装工艺总结
本文介绍了芯片封装工艺中SMD(表面贴装器件)与SMT(表面贴装技术)的区别,并详细对比了SOP、SOIC、TSOP、WSON、BGA等常见封装类型的特点。SMD指表面贴装型元件,而SMT是生产工艺。不同封装在厚度、引脚数量、占板面积等方面各有优劣,适用于不同容量和场景的Flash芯片。此外,文章还总结了BULK、Reel、Cut Tape、Tray、Tube等包装方式的适用场景及优缺点,其中Reel适合大批量生产,Cut Tape便于小批量采购。这些信息为芯片选型和生产工艺选择提供了参考依据。
2025-11-23 15:21:05
227
原创 图表绘制工具Mermaid语法总结及实例快速掌握
Mermaid 是一个基于 JavaScript 的图表绘制工具,Mermaid 支持非常丰富的图表类型,本文主要讲解mermaid的流程图、时序图、甘特图、状态图、类图等基本使用的语法,配合实例方便读者快速掌握。
2025-11-23 15:06:07
118
原创 GPIO Databoot 协议及功能总结及驱动debug详解
本文介绍了DW_apb_gpio IP核的功能特性与Linux驱动配置方法。该GPIO模块支持最多4个端口共128个GPIO,具有数据寄存器、方向控制、去抖等功能,并提供了硬件/软件控制模式。重点分析了GPIO输入/输出模式的应用场景、中断接口特性以及IO复用配置方法。文章还详细说明了在设备树(dts)中如何配置GPIO引脚功能,包括复用设置、上下拉电阻和驱动强度等参数,并给出了完整的GPIO驱动加载匹配示例。这些配置对于嵌入式系统开发中GPIO接口的灵活使用具有重要意义。
2025-11-18 06:47:15
624
原创 Linux下SD卡SPI模式驱动详解
本文介绍了SD卡SPI通信模式的驱动实现。主要内容包括:SPI模式下SD卡与主机的连接方式(D0接MISO、D3接CS信号线),驱动程序流程(消息构造、缓冲区分配、SPI同步接口调用、CRC校验及数据获取),并提供相关技术链接,涵盖SD卡初始化、SPI协议详解及UCLASS框架应用。通过流程图展示了SD卡SPI驱动的完整工作流程,为开发者提供了实用参考。
2025-11-04 04:30:16
662
原创 SD卡初始化、命令及响应命令格式(详细)讲解
摘要 SD卡通过SPI或SDIO接口与控制器通信,其中SDIO接口支持SD卡、MMC卡和SD I/O设备。SD卡包含9个引脚(V1.0标准卡)或8个引脚(Micro SD卡),通过命令控制其内部8个寄存器实现读写操作。命令格式包含起始/终止位、传输标志、命令号、地址/参数和CRC校验。读操作通过CMD17命令获取数据块,写操作通过CMD24命令发送数据块。MMC卡与SD卡在推出时间、尺寸、协议、速度等方面存在差异。SD卡识别过程包括复位初始化(CMD0命令)和版本确认(CMD8命令),以区分卡的类型并进入数
2025-07-12 11:27:15
1447
原创 Linux驱动快速加入ftrace函数示例讲解
在驱动源文件中,包含必要的头文件,例如<linux/ftrace.h>。使用DEFINE_TRACE宏来定义一个 ftrace 事件追踪点。// 定义一个ftrace事件这个宏会创建一个名为my_trace_event的 ftrace 事件,后续可以在驱动中触发这个事件来进行追踪。
2025-03-07 17:13:01
709
原创 Linux下进程通信原理图(详细)总结附实例代码快速掌握
每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信机制。速度慢,容量有限,只有父子进程能通讯任何进程间都能通讯,但速度慢容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题不能传递复杂消息,只能用来同步。
2024-10-21 23:03:45
1358
1
原创 Linux下内核空间和用户空间(32/64位)内存映射图快速掌握
本文主要介绍内核和用户空间的物理地址到虚拟地址的映射,通过详细图解方便读者快速掌握。内核空间定义内核空间是操作系统内核运行的区域,它包括了操作系统内核代码、数据结构和设备驱动程序等。内核空间通常是操作系统中的一块保护内存区域,只有操作系统内核才能够访问这个区域。用户空间定义用户空间是指用户应用程序运行的区域,包括用户应用程序代码、数据和堆栈等。内核空间、用户空间的具体划分:针对 Linux 操作系统而言,最高的 1G 字节由内核使用,称为内核空间。而较低的 3G 字节由各个进程使用,称为用户空间。
2024-10-15 22:40:56
2966
原创 UEFI下Expansion rom加载driver过程(详细)解析
本文主要是讲解主机在扫描到PCIE设备后,对Expansion rom BAR空间使能,校验驱动,加载驱动的过程,通过UEFI具体的driver header进行解析。
2024-09-12 16:52:03
1494
原创 网络UDP报文详细解析
本文主要介绍UDP报文格式。UDP是一种无连接、不可靠的用户数据报协议,其报头包含源端口、目的端口、报文长度和检验和。当数据超过64KB时,需应用层分包。检验和用于验证传输正确性,CRC和MD5是两种常见的校验算法,其中MD5具有更好的冲突避免和不可逆特性。UDP数据报由首部和数据两部分组成,其中首部只有8B(字节)。1、源端口号(Source Port)长度为16位,指明发送数据的进程。2、目的端口号(Destination Port)长度为16位,指明目的主机接收数据的进程。
2024-08-21 15:22:40
1342
原创 Linux下tcpdump网络抓包工具详细总结附实例快速掌握
本文主要介绍tcpdump工具的使用参数详解,通过实例方便读者快速掌握。tcpdump,全称dump the traffic on a network,它使用 libpcap 库来抓取网络数据包,是一个运行在linux平台可以根据使用者需求对网络上传输的数据包进行捕获的抓包工具,windows平台有sniffer、wireshark等工具,tcpdump可以将网络中传输的数据包的“包头”全部捕获过来进程分析,其支持网络层、特定的传输协议、数据发送和接收的主机、网卡和端口的过滤,并提供and、or、not等
2024-07-11 11:03:23
2572
原创 常见硬盘接口IDE、SATA、SCSI、SAS、FC详细总结附图快速掌握
目前所能见到的硬盘接口类型主要有IDE、SATA、SCSI、SAS、FC等等。 IDE是俗称的并口,SATA是俗称的串口,这两种硬盘是个人电脑和低端服务器常见的硬盘。SCSI是"小型计算机系统专用接口"的简称,SCSI硬盘就是采用这种接口的硬盘。SAS就是串口的SCSI接口般服务器硬盘采用这两类接口,其性能比上述两种硬盘要高,稳定性更强,但是价格高,容量小,噪音大。FC是光纤通道,和SCIS接口-样光纤通道最初也不是为硬盘设计开发的接口技术,是专门为网络系统设计的,但随着存储系统对速度的需求,才逐渐应用到硬
2024-07-02 19:31:34
21562
原创 Ubuntu下搭建UEFI下PXE服务端(详细)总结
系统:Ubuntu 22.04平台:X86_64本文介绍如何在Ubuntu下搭建PXE服务端,主要包含HTTP、DHCP、TFTP等服务端的搭建,以及基于Ubuntu22.04镜像实现PXE安装文件的配置。
2024-03-21 09:32:00
3160
2
原创 Windows下EDK2快速搭建(详细)过程总结附软件包地址
本文详细介绍本人在windows平台搭建EDK2编译环境的流程,方便读者快速搞定,少走弯路。
2024-01-28 14:58:38
3159
原创 Linux下基于AHCI controller模块实现SATA Platform驱动附代码详细流程
本文主要是针对ARM A55集成了AHSATA controller模块开发sata驱动,通过Platform的形式在linux识别到SSD,本文详细讲述整个开发过程,同时对SATA Platform驱动进行讲解。1、配置SATA Phy的初始化;2、打开SATA Platform相关编译开关;3、配置设备树;4、linux启动识盘。
2024-01-21 23:58:43
2267
原创 SATA驱动中FIS命令处理(详细)流程附代码和协议解析
本文主要讲述在SATA模块命令的处理、数据的传输和内存分布详细过程,同时讲述如何通过FIS用于Host和device之间信息传输。1、构造FIS命令;2、填充Command Table;3、填充Command Header;4、通知Host或Device处理命令;
2024-01-21 11:16:40
3051
1
原创 网络包IP首部(详细)解析附图快速掌握
本文主要讲解网络包IP首部各部分的作用。IP报头默认为20 byte,后面可自定义增加,具体报头长度IHL部分控制。版本:占4位,指IP协议的版本。首部长度:表示IP包首部长度,最短20字节,最长60字节。区分服务:8位,用于指明要求网络提供的服务,目前主要包括D、T、R等三种,分别代表延迟、吞吐量和可靠性要求。即使如此,依然没有真正使用。总长度:16位,包括了首部长度和数据长度,最长为65535个字节。标识:16位,数据报计数器,用于区分数据报的唯一标识符。
2024-01-18 23:37:12
2548
原创 SATA模块物理层OOB信号分析总结(三)
本文主要讲解SATA底层FW中HOST和DEVICE进行FHY LINK过程中OOB(Out-of-Band)信号的产生与检测。OOB主要的作用如下:1、初始化(initialization);2、传输速率的协商与对接(Speed negotiation); 透过OOB handshake,host与device可以决定要在Gen1,Gen2或Gen3做data传输。3、重置(Reset);4、从省电状态(Slumer/Partial)的唤醒。
2023-12-02 11:34:25
3486
原创 SATA信息传输FIS结构总结通过实例代码(快速)掌握(二)
FIS是一种用于Host和device之间信息传输的机制,每个FIS的格式都是固定的,并且对应唯一的ID。当双方都空闲时,都在持续发送 SYNC 原语,这种状态称为空闲状态(IDLE)。发送方想要发起 FIS 发送,它开始持续发送 X_RDY 原语。经过一段延迟后,接收方收到了 X_RDY (该延迟来自链路层、物理层的信号处理延迟),此时如果接收方准备好接收 FIS 了,就持续发送 R_RDY 原语。
2023-11-26 21:58:39
2666
原创 AHSATA模块之AHCI HBA卡开发,结合SPEC文档和项目实际底层FW开发总结(一)
本次开发是基于ARM A55芯片AHSATA模块开发firware实现AHCI HBA功能,本篇文章主要讲解AHCI HBA底层的实现流程,具体细节再后续文章中进行针对性的总结。AHCI HBA独立于SOC芯片以外的AHCI HBA是一个PCI类设备。在主机下为一个SATA controller PCI设备,在controller下可以外挂多个ATA DEVICE。在linux下输入lspci可以看到controller设备SATA3协议一共分为五层:应用层、命令层、传输层、链路层和物理层。
2023-11-25 10:45:21
1958
原创 芯片设计中RTL级别总结
芯片设计级别简介行为级(Behavior Level):通过行为级算法描述数字系统。寄存器传输级(Register Transfer Level)RTL:在寄存器传输级,通过寄存器之间的数据传输进行电路功能设计, 例如有限状态机。门级(Gate level):数字系统按门级(AND,OR,NOT,NAND等等…)描述。通常不会进行门级设计,门级网表网表一般是通过逻辑综合的输出。
2023-10-29 18:43:25
4382
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅