自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (5)
  • 收藏
  • 关注

原创 Linux Makefile

程序的编译与链接:编译时,编译器需要的是语法的正确,函数与变量声明的正确。链接时,主要是链接函数与全局变量。Makefile介绍:1、显示规则:说明如何生成一个或多个目标文件(要生成的文件,文件的依赖 文件、生成的命令);2、隐晦规则:make具有自动推导功能,可以让我们比较粗糙的写makefile;3、变量定义:需要定义一系列的变量,变量一般都是字符串;4、文件指示:主要包括三个部分:1)在一个Makefile中调用另一个Makefile;2)根据需要指定Make.

2022-04-01 15:59:14 2723

原创 USB知识点整理

一、USB基础概念:1、USB(Universal Serial Bus,通用串行总线),用于规范电脑和外部设备的连接和通讯。最后可连接127个设备2、热插拔技术: 1)在usb集线器上的每个下游端口的D+和D-上,分别接一个15K的下拉电阻到地,即端口悬空时,被下拉电阻拉成低电平 2)usb设备端,在D+或D-上接1.5k的上拉电阻,对于全速和高速设备,上拉电阻接在D+上,对于低速设备,上拉电阻接在D-上拉电阻接在D3、usb设备不能主动的发起任何一次传输,所有的传输都是usb主机发...

2022-02-20 21:11:00 908

原创 Linux 进程间通信例程

1、pipe1)只能用于具有亲缘关系的进程间通信2)半双工通信,具有相同的读写端#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <string.h>int main(void){ int pfd[2]; int pid; int data = 23; //create pipe if(pipe(pfd) ...

2021-12-26 18:52:30 894

转载 Linux设备树<转载>

转载地址:http://blog.csdn.net/smcdef/article/details/773879751. Device Tree简介Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a fucking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修正。在过去的A...

2021-09-14 15:58:57 139

原创 Linux进程绑定CPU

1、进程绑定CPU的好处: 多核CPU中,每个核心有自己的L1、L2缓存,而L3缓存是共用的。 如果每个进程不管如何调度,都始终可以在一个核心上运行,那么其数据的L1、L2缓存命中率可以提供,从而提高性能2、设置进程的CPU亲和性(CPU亲和性--进程与CPU的绑定) sched_setaffinity()系统调用可以设置进程的cpu亲和性 原型: int sched_setaffinity(pid_t pid,size_t cpusetsize,const cpu...

2021-07-04 22:05:05 1431

原创 嵌入式C语言技术积累

技术积累1、时间复杂度和空间复杂度时间复杂度: 指执行当前算法所消耗的时间空间复杂度: 指当前当前算法需要占用多少的内存2、Struct1)字节对齐自然对齐(即默认对齐方式):是指按结构体的成员中size最大的成员对齐。指定对齐: 使用伪指令 #pragma pack (n) ,编译器将按照n个字节对齐 使用伪指令#pragma pack () , 取消自定义字节对齐方式(注意:如果#pragma pack (n)中指定...

2021-05-05 22:52:20 103

原创 linux网络编程基础

1、OSI网络七层模型 协议 作用[应用层 ]应用层 A: 提供应用程序间通信 TFTP、HTTP、FTP、 文件传输,电子邮件,文件服务,虚拟终端[应用层 ]表示层 P: 处理数据格式、数据加密等 Telnet,Rlogin,SNMP,Gopher 数据格式化,代码转换,数据加密

2021-05-03 07:39:59 98

原创 C语言解剖整理

C语言解剖整理1、名词说明: 定义:(编译器)创建一个对象,并为对象分配一块内存并给它取名,即变量名或对象名。例: int a = 0; 声明:没有分配内存告诉编译器,这个名字已经匹配到一块内存上,声明的变量或对象是在别的地方定义的。生命可以出现多次 告诉编译器,这个名字先预定了,别的地方再也不能用它来作为变量名或对象名机器数:一个数在计算机中的表现形式叫做机器数,在计算机中用一个数的最高位(符号位)用来表示它的正负,其中0表示正数,1表示负数。例如正数7...

2021-03-28 17:39:58 290

转载 USB协议基础知识点整理

USB 基本知识  USB的重要关键概念:  1、 端点:位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)  2、 帧:时间概念,在USB中,一帧就是1MS,它是一个独立的单元,包含了一系列总线动作,USB将1帧分为好几份,每一份中是一个USB的传输...

2021-02-24 18:41:36 1804

转载 <转载>USBHID协议解析

USB设备中有一大类就是HID设备,即Human Interface Devices,人机接口设备。这类设备包括鼠标、键盘等,主要用于人与计算机进行交互。它是USB协议最早支持的一种设备类。HID设备可以作为低速、 全速、高速设备用。由于HID设备要求用户输入能得到及时响应,故其传输方式通常采用中断方式。 在USB协议中,HID设备的定义放置在接口描述符中,USB的设备描述符和配置描述符中不包含HID设备的信息。因...

2021-01-24 09:42:21 4196

原创 USB_HID基础

1、USB属于半双工传输,2、传输事务:所以必须使用一种机制协调主机和设备的通信,这个机制在USB中称之为传输事务3、HID设备没有保证的传输速率,如果设备是设置在10ms的时距,事务之间的时间可能等于或小于10ms。除非设备是设置在全速时在每个帧传输数据,或是在高速时在每个微帧传输数据。这是最快的轮询速率,所有端点可以保证有正确的带宽可供使用4、Device Class Definition for HID 是HID的基本规范文件,HID Usage Tables 是基本规范文件的附件,为开发

2021-01-09 16:53:58 1297

原创 Linux中的中断屏蔽与使能,共享中断

使能和屏蔽中断:CPU一般都具有屏蔽中断和打开中断的功能,这项功能可以保证正在执行的内核执行路径不被中断处理程序所抢占,防止某些竞态的发生。屏蔽中断的使用方法:local_irq_disable() /* 屏蔽中断 */. . .critical section /* 临界区 */. . .local_irq_enable() /* 开中断 */其底层的实现原理就是让CPU本身不响应中断。local_irq_disable() 和local_irq_enable().

2021-01-01 16:38:05 2088

原创 idr机制

IDR机制在linux内核中指的是整数ID管理机制,就是一种将一个整个ID号和一个指针关联在一起的机制。IDR机制原理:IDR机制适用在那些需要把某个整数和待定指针关联在一起的地方。例如,在IIC总线中,每个设备都有自己的地址,要想在总线上找到特定的设备,就必须要先发送设备的地址。当适配器要访问总线上的IIC设备时,首先要知道它们的ID号,同时要在内核中建立一个用于描述该设备的结构体,和驱动程序。IDR机制采用红黑树实现,可以很方便的将整数和指针关联起来,并且具有很高的所有效率。...

2021-01-01 16:34:51 528

原创 Linux 内核基础

1、Linux 分为用户空间和内核空间的作用是为了安全性1)ARM的7种工作模式:2)X86实现有Ring0-Ring3的级别:Ring0下,可以执行特权指令,内核代码运行在Ring0用户代码运行在Ring33)通过系统调用和硬件中断能完成从用户空间到内核空间的转换2、Linux内核架构系统调用,内存管理子系统,进程管理,体系结构,虚拟文件系统,驱动以及网络协议栈3、内核源代码下载地址 www.kernel.org源代码目录:arch:内核所支持的各种CPU体系.

2021-01-01 16:33:06 128

原创 Linux LCD基础

1、液晶一些有机物融化为液体之后具有某些晶体的特性,比如说折射性,称为“液晶”。液晶属于一种有机化合物,分子形状为长棒状,长度约为10nm,在不同的电流作用下,分子会做有规律的旋转,这样对光线产生一定的控制,很多液晶分子构成一个像素,而很多像素又构成了完整图像LCD是Liquid Crystal Display的简称,液晶显示器按照驱动方式分为静态驱动、简单矩阵驱动以及主控矩阵驱动,其中TFT属于主动矩阵驱动。主动矩阵驱动TFT通过晶体管显示信号开启或关闭液晶分子的电压,从而避免显示器对电场

2021-01-01 16:30:50 245

原创 Linux 块设备驱动

块设备:IO设备中的一类,应用层对块设备进行读写时,按照扇区大小读写数据。对于IO请求有相应的缓冲区。块设备结构:段(segments):由若干个块组成,是Linux内存管理中一个内存页或内存页的一部分。块(Blocks):由Linux制定对内核或文件系统等数据处理的基本单位,通常由一个或多个扇区组成。扇区(Sectors):块设备的基本单位,一般默认为512字节。Linux块设备驱动结构:1、block_device_operations结构体——块设备操作结构体..

2021-01-01 16:29:21 441

原创 Linux 网络基础

1、OSI网络七层模型 协议应用层 A: 提供应用程序间通信 DNS、Telnet、TFTP、HTTP、SNMP、FTP、SMTP 文件传输,电子邮件,文件服务,虚拟终端表示层 P: 处理数据格式、数据加密等 数据格式化,代码转换,数据加密会话层 S: 建立、维护和管理会话 解除或建立与别的节点的联系传输层 T: 建立主机端到端的连接 TCP、UDP 提供端对端的接口网络层 N: 寻址和路由选择 IP、ICMP、OSPF、BGP、IGMP、ARP、RARP 为数据包选择路由数据链路层

2021-01-01 16:21:02 66

原创 Linux 终端设备驱动

1、控制台1)控制台是一个虚拟的终端,它必须映射到真正的终端上2)控制台是个只输出的设备,功能很简单,只能在内核中访问2、伪终端一种特殊的终端设备,由主-从两个成对的设备构成,当打开主设备时,对应的从设备随之打开,形成连接状态输入到主设备的数据成为从设备的输出,输入到从设备的数据成为主设备的输出,形成双向管道伪终端设备常用于远程登录服务器来建立网络和终端的关联3、串口驱动Linux 内核使用uart_driver来描述串口,包含串口设备驱动名、设备名、设备号等信息..

2021-01-01 16:16:31 141

原创 Linux 终端控制体系

1、控制台1)控制台是一个虚拟的终端,它必须映射到真正的终端上2)控制台是个只输出的设备,功能很简单,只能在内核中访问2、伪终端一种特殊的终端设备,由主-从两个成对的设备构成,当打开主设备时,对应的从设备随之打开,形成连接状态输入到主设备的数据成为从设备的输出,输入到从设备的数据成为主设备的输出,形成双向管道伪终端设备常用于远程登录服务器来建立网络和终端的关联3、串口驱动Linux 内核使用uart_driver来描述串口,包含串口设备驱动名、设备名、设备号等信息..

2021-01-01 16:13:47 255

原创 Linux USB总线基础

USB支持热插拔的硬件原理在USB集线器(hub)的每个下游端口的D+和D-上,都接了一个15K的下拉电阻到地,这样,在集线器的端口悬空时,就被这两个下拉电阻拉成低电平,而在USB设备端,在D+或D-接一个15K的上拉电阻。对于全速和高速设备,上拉电阻接在D+上,而低速设备接在D-上。当设备插入到集线器时,上拉电阻和下拉电阻分压,将差分数据线中的一条拉高,集线器检测到电平的变化,报告给主控制器。1、一个USB设备,是如何被USB系统发现并安装对应的设备驱动程序的,从而使USB设备可以正常..

2021-01-01 16:11:29 579

原创 Linux USB基础

1、USB基础USB(Universal Serial Bus),通用串行总线,是一种外部总线标准,用于规范电脑与外部设备的连接和通讯。USB主要优点:1)支持热插拔2)携带方便3)标准统一4)可以连接多个设备每条USB总线上最多可以接127个设备USB主控制器:负责处理主机与设备之间的电器和协议层的互联,常见的USB主控制器规格有:1)OHCI:主要是非PC系统上的USB芯片,如ARM2)UHCI:大多是Intel和Via主板上的USB控制器芯片,都是...

2021-01-01 16:07:13 369

原创 Linux IIC驱动

Linux的i2c体系结构分为三个部分:1、i2c核心;2、i2c总线驱动;3、i2c设备驱动。1、i2c核心i2c核心提供了i2c总线驱动和设备驱动的注册、注销方法,i2c通信方法上层的、与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。(1)增加/删除 i2c_adapterint i2c_add_adapter(struct i2c_adapter *adap);int i2c_del_adapter(struct i2c_adapter ...

2020-12-27 18:37:59 403

原创 Linux PCI驱动

1、体系结构1)PCI桥 -- 只有PCI桥才能生成PCI总线2、PCI设备寻址:每个PCI设备都由一个总线号、一个设备号和一个功能号组成。一个系统最多拥有256条总线,每条总线最多带32个设备,但每个设备可以是最多8个功能的多功能板/proc/iomem描述系统中所有的设备I/O在内存地址空间上的映射,例如,PCI设备:40000000-400003ff:0000:00:1f.1其中:40000000-400003ff:代表设备所映射的内存空间地址0000:00:1f.

2020-12-27 18:34:29 458

原创 Linux 缓冲区

标准I/O提供了三种类型的缓冲:1、全缓冲:在填满标准I/O缓冲区后才进行实际I/O操作。常规文件(如普通文本文件)通常是全缓冲的。2、行缓冲:当在输入和输出中遇到换行符时,标准I/O库执行I/O操作。这允许我们一次输出一个字符,但只有在写了一行之后才进行实际I/O操作。标准输入和标准输出对应终端设备(如屏幕)时通常是行缓冲的。当在输入和输出中遇到换行符时,标准I/O库执行I/O操作,也可以通过人为刷新缓冲区,即fflush(stdout),执行I/O操作。3、不带缓冲:用户程序每次调库函数做写

2020-12-27 18:22:48 279

原创 Linux 内存管理基础

1、地址物理地址:出现在CPU地址总线上的寻址物理内存的地址信号,是地址变换的最终结果线性地址(虚拟地址):逻辑地址: 程序代码经过编译后,出现在汇编程序中的地址地址转换:逻辑地址转换物理地址:CPU利用段式内存管理单元,将逻辑地址转换成线性地址,在利用页式内存管理单元,把线性地址转换成物理地址段式内存(X86):16位CPU:内部有20位的地址线,寻址范围是1M的内存空间,但是用于存放地址的寄存器(IP,SP)只有16位,因此只能访问65536个单元存储,64K为了管.

2020-12-27 18:19:02 141

原创 Linux 共享内存

共享内存常用函数介绍:int shmget(key_t key,size_t size,int shmflg);函数说明:得到一个共享内存标识符shmid使用头文件:#include <sys/ipc.h> #include <sys/shm.h>参数:key:共享内存段名字,可通过fork函数生成,使用如:ftok("./", 66);size:共享内存大小,以字节为单位;shmflg:IPC_CREAT:如果共享内存不存在,则创建一个共享内存,否.

2020-12-27 18:13:49 170

原创 Linux 进程基础介绍

1、进程 & 程序程序是存放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体进程是一个执行中的程序,是动态的实体,由两部分组成:1.1)是操作系统用来管理进程的内核对象1.2)地址空间,包含所有可执行模块的或DLL模块的代码和数据,还包括动态内存分配的空间,如线程堆栈和堆栈分配空间2、进程四要素1)有一段程序供其执行2)有进程专用的内核空间堆栈3)有一个task_struct数据结构(PCB,进程控制块)4)有独立的用户空间3、调度从就绪的进程中选

2020-12-27 18:11:26 203

原创 Linux字符设备驱动

1、并发与竞态1)并发处理并发的常用技术是加锁或互斥。在Linux内核中,主要通过semaphonre机制和spin_lock机制实现1.1)内核的信号量:是一种睡眠锁//定义信号量struct semaphore sem;//初始化信号量void sema_init(struct semaphore *sem.int val);//用于初始化设置信号量的初值//初始化互斥锁void init_MUTEX(struct semaphore *sem); //把信号量sem

2020-12-27 17:03:47 169

转载 [转发]更方便的查看Linux版本更新记录

Linux内核的更新非常的快,如何快速的了解这些更新呢?最一般的办法就是把新旧版本的内核源码下载下来,然后利用BCompare或别的什么工具进行源码对比,但这明显比较费力耗时,而本文将介绍一种更快捷简单的方法。在官方http://git.kernel.o...

2020-01-16 11:37:29 1497

原创 Linux 块设备驱动分析

块设备:IO设备中的一类,应用层对块设备进行读写时,按照扇区大小读写数据。对于IO请求有相应的缓冲区。块设备结构:段(segments):由若干个块组成,是Linux内存管理中一个内存页或内存页的一部分。块(Blocks):由Linux制定对内核或文件系统等数据处理的基本单位,通常由一个或多个扇区组成。扇区(Sectors):块设备的基本单位,一般默认为512字节。...

2020-01-12 21:35:09 659 1

原创 Linux Mmap映射

mmap基础概念:mmap是一种内存映射的方法,即将一个文件或其他对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中的一段虚拟地址的一一映射关系。实现这样的映射之后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必调用read、write等函数调用。相反,内核空间对这段区域的修改也直接反映到用户空间,从而实现不同进程之...

2020-01-12 20:08:47 707

原创 Linux input子系统分析

Linux input子系统主要分为3层:input_device(设备驱动层) input_handle(核心层,即input_core) 和input_handler(事件处理层)。所有的input子系统输入设备的主设备号都是13,input_core通过次设备号对输入设备进行分类管理,输入设备总共分为8类,每一类可包含最多32个次设备。input子系统初始化:1、in...

2020-01-05 19:37:30 418

原创 Linux内存

UMA和NUMA模型:均匀存储器存取(UMA):将多个处理器与一个集中的存储器和I/O总线相连,所有处理器只能访问同一个物理存储器,缺点是伸缩性有限。NUMA:分布式存储器访问方式,处理器可以同时访问不同的存储器地址。NUMA模式下,处理器被划分成多个“节点”,每个节点都可以访问全部的系统物理存储器。内存被划分成多个区域(BANK,簇)。当前多数系统会把内存分割成2块区域,一块是专门给CP...

2020-01-01 22:29:27 1448

转载 CSDN如何转载别人的文章

...

2019-12-30 19:21:00 209

转载 Linux sysfs文件系统分析

"sysfs is a ram-based filesystem initially based on ramfs. It provides a meansto export kernel data structures, their attribut...

2019-12-30 19:18:33 332

原创 Linux音频驱动整理

典型的数字音频系统电路组成如图所示:通过PCM、 IIS 或 AC97 这些音频接口连接外部的音频编解码器即可实现声音的 AD 和 DA 转换,图中的功放完成模拟信号的放大功能。音频编解码器是数字音频系统的核心,主要指标有:1、采样频率采样频率是每秒钟的采样次数,理论上采样频率越高,转换精度越高,目前主流的采样频率是48KHZ2、量化精度量化精度是指对采样数据分析的精...

2019-12-29 21:39:22 4966

原创 Linux网络驱动整理

网络设备是完成用户数据包在网络媒介上发送和接收的设备,它将上层协议传递下来的数据包以特定的媒介访问控制方式进行发送,并将接收到的数据包传递给上层协议。应用程序使用套接字(socket)完成与网络设备的接口。Linux网络设备驱动的结构Linux 系统对网络设备驱动的驱动体系从上到下划分为4个层次,依次为为网络协议接口层、网络设备接口层、提供实际功能的设备驱动功能层和网络设备与媒介层,4层的...

2019-12-29 13:21:32 333

原创 Kobject源码分析

kobject:最小的device module unit,内嵌在kernel的device资源结构中,例如 character device(cdev), block device(blkdev)。这些资料结构中都会内嵌一个kobject。struct kobject {const char *name;/*该Kobject的名称,同时也是sysfs中的目录名称。由于Kobje...

2019-12-29 09:32:10 272

转载 Linux虚拟文件系统解析

概述  虚拟文件系统(Virtual Filesystem Switch,简称VFS)所有的数据结构都是在运行以后建立的,并在卸载时删除,在磁盘中并没有存储这些数据结构。虚拟文件系统只有和实际文件系统(例如:Ext2、VFAT)等相结合,才能开始工作,所以虚拟文件系统不是一个真正的文件系统。与VFS相对应,Ext2、VFAT等为具体文件系统。  1、虚拟文件系统的作用  VFS对于具体...

2019-05-05 16:47:23 607

转载 linux共享文件夹

VMware下ubuntu与Windows实现文件共享的方法最近安装caffe需要将Windows下文件拷贝到ubuntu16.04下,就进行了共享文件夹的设置,期间遇到一些困难,记录下来,方便以后遇到此类问题不再困惑。(记录只为更好的分享)言归正传:1、首先需要在ubuntu下安装vmware-tools来实现文件共享,却发现虚拟机那里显示为灰色的,无法安装vmware-tools,在共享文件夹...

2018-05-10 17:33:22 13740

USB相关协议梳理以及介绍

USB相关协议梳理以及介绍

2022-04-01

Linux下的堆栈以及各种栈

Linux下的堆栈以及各种栈

2022-04-01

HDMI相关知识点整理

HDMI相关知识点整理

2022-04-01

C语言解剖整理.docx

C语言解剖整理.docx

2021-01-17

USB_HID官方文档

USB_HID官方文档

2021-01-09

空空如也

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

TA关注的人

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