<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jansert的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jansert</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jansert]]></copyright><item><title><![CDATA[Linux Makefile]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/111823590</link><guid>https://blog.youkuaiyun.com/jansert/article/details/111823590</guid><author>jansert</author><pubDate>Fri, 01 Apr 2022 15:59:14 +0800</pubDate><description><![CDATA[程序的编译与链接：

编译时，编译器需要的是语法的正确，函数与变量声明的正确。

链接时，主要是链接函数与全局变量。



Makefile介绍：

1、显示规则：说明如何生成一个或多个目标文件（要生成的文件，文件的依赖 文件、生成的命令）；

2、隐晦规则：make具有自动推导功能，可以让我们比较粗糙的写makefile；

3、变量定义：需要定义一系列的变量，变量一般都是字符串；

4、文件指示：主要包括三个部分：

1）在一个Makefile中调用另一个Makefile；

2）根据需要指定Make.]]></description><category></category></item><item><title><![CDATA[USB知识点整理]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/123036083</link><guid>https://blog.youkuaiyun.com/jansert/article/details/123036083</guid><author>jansert</author><pubDate>Sun, 20 Feb 2022 21:11:00 +0800</pubDate><description><![CDATA[一、USB基础概念：
1、USB(Universal Serial Bus,通用串行总线)，用于规范电脑和外部设备的连接和通讯。最后可连接127个设备
2、热插拔技术：
 1）在usb集线器上的每个下游端口的D+和D-上，分别接一个15K的下拉电阻到地，即端口悬空时，被下拉电阻拉成低电平
 2）usb设备端，在D+或D-上接1.5k的上拉电阻，对于全速和高速设备，上拉电阻接在D+上，对于低速设备，上拉电阻接在D-上拉电阻接在D
3、usb设备不能主动的发起任何一次传输，所有的传输都是usb主机发...]]></description><category></category></item><item><title><![CDATA[Linux 进程间通信例程]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/122158803</link><guid>https://blog.youkuaiyun.com/jansert/article/details/122158803</guid><author>jansert</author><pubDate>Sun, 26 Dec 2021 18:52:30 +0800</pubDate><description><![CDATA[1、pipe
1）只能用于具有亲缘关系的进程间通信
2）半双工通信，具有相同的读写端


#include &lt;unistd.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;

int main(void)
{
 int pfd[2];
 int pid;
 int data = 23;
 
 //create pipe
 if(pipe(pfd) ...]]></description><category></category></item><item><title><![CDATA[Linux设备树＜转载＞]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/120289635</link><guid>https://blog.youkuaiyun.com/jansert/article/details/120289635</guid><author>jansert</author><pubDate>Tue, 14 Sep 2021 15:58:57 +0800</pubDate><description><![CDATA[转载地址：http://blog.youkuaiyun.com/smcdef/article/details/77387975
1. Device Tree简介
Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a fucking pain in the ass”，引发ARM Linux社区的地震，随后ARM社区进行了一系列的重大修正。在过去的A...]]></description><category></category></item><item><title><![CDATA[Linux进程绑定CPU]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/118468446</link><guid>https://blog.youkuaiyun.com/jansert/article/details/118468446</guid><author>jansert</author><pubDate>Sun, 04 Jul 2021 22:05:05 +0800</pubDate><description><![CDATA[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...]]></description><category></category></item><item><title><![CDATA[嵌入式C语言技术积累]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/116431891</link><guid>https://blog.youkuaiyun.com/jansert/article/details/116431891</guid><author>jansert</author><pubDate>Wed, 05 May 2021 22:52:20 +0800</pubDate><description><![CDATA[技术积累

1、时间复杂度和空间复杂度

时间复杂度：

 指执行当前算法所消耗的时间

空间复杂度：

 指当前当前算法需要占用多少的内存

2、Struct

1）字节对齐

自然对齐（即默认对齐方式）：是指按结构体的成员中size最大的成员对齐。

指定对齐：

 使用伪指令 #pragma pack (n) ，编译器将按照n个字节对齐

 使用伪指令#pragma pack () , 取消自定义字节对齐方式

（注意：如果#pragma pack (n)中指定...]]></description><category></category></item><item><title><![CDATA[linux网络编程基础]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/116369008</link><guid>https://blog.youkuaiyun.com/jansert/article/details/116369008</guid><author>jansert</author><pubDate>Mon, 03 May 2021 07:39:59 +0800</pubDate><description><![CDATA[1、OSI网络七层模型                             				协议    										作用
[应用层    ]应用层     A： 提供应用程序间通信           TFTP、HTTP、FTP、                         文件传输，电子邮件，文件服务，虚拟终端
[应用层    ]表示层     P： 处理数据格式、数据加密等     Telnet,Rlogin,SNMP，Gopher                数据格式化，代码转换，数据加密
]]></description><category></category></item><item><title><![CDATA[C语言解剖整理]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/112752376</link><guid>https://blog.youkuaiyun.com/jansert/article/details/112752376</guid><author>jansert</author><pubDate>Sun, 28 Mar 2021 17:39:58 +0800</pubDate><description><![CDATA[C语言解剖整理

1、名词说明：

 定义：（编译器）创建一个对象，并为对象分配一块内存并给它取名，即变量名或对象名。例： int a = 0;

 声明：没有分配内存

告诉编译器，这个名字已经匹配到一块内存上，声明的变量或对象是在别的地方定义的。生命可以出现多次
	告诉编译器，这个名字先预定了，别的地方再也不能用它来作为变量名或对象名
机器数：一个数在计算机中的表现形式叫做机器数，在计算机中用一个数的最高位（符号位）用来表示它的正负，其中0表示正数，1表示负数。例如正数7...]]></description><category></category></item><item><title><![CDATA[USB协议基础知识点整理]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/114034349</link><guid>https://blog.youkuaiyun.com/jansert/article/details/114034349</guid><author>jansert</author><pubDate>Wed, 24 Feb 2021 18:41:36 +0800</pubDate><description><![CDATA[USB 基本知识&nbsp; USB的重要关键概念:&nbsp; 1、&nbsp;端点：位于USB设备或主机上的一个数据缓冲区，用来存放和发送USB的各种数据，每一个端点都有惟一的确定地址，有不同的传输特性（如输入端点、输出端点、配置端点、批量传输端点）&nbsp; 2、&nbsp;帧：时间概念，在USB中，一帧就是1MS，它是一个独立的单元，包含了一系列总线动作，USB将1帧分为好几份，每一份中是一个USB的传输...]]></description><category></category></item><item><title><![CDATA[＜转载＞USBHID协议解析]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/113068307</link><guid>https://blog.youkuaiyun.com/jansert/article/details/113068307</guid><author>jansert</author><pubDate>Sun, 24 Jan 2021 09:42:21 +0800</pubDate><description><![CDATA[USB设备中有一大类就是HID设备，即Human Interface Devices，人机接口设备。这类设备包括鼠标、键盘等，主要用于人与计算机进行交互。它是USB协议最早支持的一种设备类。HID设备可以作为低速、 全速、高速设备用。由于HID设备要求用户输入能得到及时响应，故其传输方式通常采用中断方式。 在USB协议中，HID设备的定义放置在接口描述符中，USB的设备描述符和配置描述符中不包含HID设备的信息。因...]]></description><category></category></item><item><title><![CDATA[USB_HID基础]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/112394046</link><guid>https://blog.youkuaiyun.com/jansert/article/details/112394046</guid><author>jansert</author><pubDate>Sat, 09 Jan 2021 16:53:58 +0800</pubDate><description><![CDATA[1、USB属于半双工传输，

2、传输事务：所以必须使用一种机制协调主机和设备的通信，这个机制在USB中称之为传输事务

3、HID设备没有保证的传输速率，如果设备是设置在10ms的时距，事务之间的时间可能等于或小于10ms。除非设备是设置在全速时在每个帧传输数据，或是在高速时在每个微帧传输数据。这是最快的轮询速率，所有端点可以保证有正确的带宽可供使用

4、Device Class Definition for HID 是HID的基本规范文件，HID Usage Tables 是基本规范文件的附件，为开发]]></description><category></category></item><item><title><![CDATA[Linux中的中断屏蔽与使能，共享中断]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/112061519</link><guid>https://blog.youkuaiyun.com/jansert/article/details/112061519</guid><author>jansert</author><pubDate>Fri, 01 Jan 2021 16:38:05 +0800</pubDate><description><![CDATA[使能和屏蔽中断：

CPU一般都具有屏蔽中断和打开中断的功能，这项功能可以保证正在执行的内核执行路径不被中断处理程序所抢占，防止某些竞态的发生。

屏蔽中断的使用方法：

local_irq_disable() /* 屏蔽中断 */

. . .

critical section /* 临界区 */

. . .

local_irq_enable() /* 开中断 */

其底层的实现原理就是让CPU本身不响应中断。



local_irq_disable（） 和local_irq_enable（）.]]></description><category></category></item><item><title><![CDATA[idr机制]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/112061484</link><guid>https://blog.youkuaiyun.com/jansert/article/details/112061484</guid><author>jansert</author><pubDate>Fri, 01 Jan 2021 16:34:51 +0800</pubDate><description><![CDATA[IDR机制在linux内核中指的是整数ID管理机制，就是一种将一个整个ID号和一个指针关联在一起的机制。



IDR机制原理：

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


...]]></description><category></category></item><item><title><![CDATA[Linux 内核基础]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/112061462</link><guid>https://blog.youkuaiyun.com/jansert/article/details/112061462</guid><author>jansert</author><pubDate>Fri, 01 Jan 2021 16:33:06 +0800</pubDate><description><![CDATA[1、Linux 分为用户空间和内核空间的作用是为了安全性

1）ARM的7种工作模式：

2）X86实现有Ring0-Ring3的级别：

Ring0下，可以执行特权指令，内核代码运行在Ring0

用户代码运行在Ring3

3）通过系统调用和硬件中断能完成从用户空间到内核空间的转换

2、Linux内核架构



系统调用，内存管理子系统，进程管理，体系结构，虚拟文件系统，驱动以及网络协议栈

3、内核源代码下载地址 www.kernel.org

源代码目录：

arch：内核所支持的各种CPU体系.]]></description><category></category></item><item><title><![CDATA[Linux LCD基础]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/112061447</link><guid>https://blog.youkuaiyun.com/jansert/article/details/112061447</guid><author>jansert</author><pubDate>Fri, 01 Jan 2021 16:30:50 +0800</pubDate><description><![CDATA[1、液晶

一些有机物融化为液体之后具有某些晶体的特性，比如说折射性，称为“液晶”。

液晶属于一种有机化合物，分子形状为长棒状，长度约为10nm，在不同的电流作用下，分子会做有规律的旋转，这样对光线产生一定的控制，很多液晶分子构成一个像素，而很多像素又构成了完整图像

LCD是Liquid Crystal Display的简称，液晶显示器按照驱动方式分为静态驱动、简单矩阵驱动以及主控矩阵驱动，其中TFT属于主动矩阵驱动。

主动矩阵驱动TFT通过晶体管显示信号开启或关闭液晶分子的电压，从而避免显示器对电场]]></description><category></category></item><item><title><![CDATA[Linux 块设备驱动]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/112061413</link><guid>https://blog.youkuaiyun.com/jansert/article/details/112061413</guid><author>jansert</author><pubDate>Fri, 01 Jan 2021 16:29:21 +0800</pubDate><description><![CDATA[块设备：

IO设备中的一类，应用层对块设备进行读写时，按照扇区大小读写数据。对于IO请求有相应的缓冲区。



块设备结构：

段（segments）:由若干个块组成，是Linux内存管理中一个内存页或内存页的一部分。

块（Blocks）：由Linux制定对内核或文件系统等数据处理的基本单位，通常由一个或多个扇区组成。

扇区（Sectors）:块设备的基本单位，一般默认为512字节。



Linux块设备驱动结构：

1、block_device_operations结构体——块设备操作结构体
..]]></description><category></category></item><item><title><![CDATA[Linux 网络基础]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/112061371</link><guid>https://blog.youkuaiyun.com/jansert/article/details/112061371</guid><author>jansert</author><pubDate>Fri, 01 Jan 2021 16:21:02 +0800</pubDate><description><![CDATA[1、OSI网络七层模型 协议

应用层 A： 提供应用程序间通信 DNS、Telnet、TFTP、HTTP、SNMP、FTP、SMTP 文件传输，电子邮件，文件服务，虚拟终端

表示层 P： 处理数据格式、数据加密等 数据格式化，代码转换，数据加密

会话层 S: 建立、维护和管理会话 解除或建立与别的节点的联系

传输层 T: 建立主机端到端的连接 TCP、UDP 提供端对端的接口

网络层 N: 寻址和路由选择 IP、ICMP、OSPF、BGP、IGMP、ARP、RARP 为数据包选择路由

数据链路层]]></description><category></category></item><item><title><![CDATA[Linux 终端设备驱动]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/112061314</link><guid>https://blog.youkuaiyun.com/jansert/article/details/112061314</guid><author>jansert</author><pubDate>Fri, 01 Jan 2021 16:16:31 +0800</pubDate><description><![CDATA[1、控制台

1）控制台是一个虚拟的终端，它必须映射到真正的终端上

2）控制台是个只输出的设备，功能很简单，只能在内核中访问

2、伪终端

一种特殊的终端设备，由主-从两个成对的设备构成，当打开主设备时，对应的从设备随之打开，形成连接状态

输入到主设备的数据成为从设备的输出，输入到从设备的数据成为主设备的输出，形成双向管道



伪终端设备常用于远程登录服务器来建立网络和终端的关联



3、串口驱动

Linux 内核使用uart_driver来描述串口，包含串口设备驱动名、设备名、设备号等信息..]]></description><category></category></item><item><title><![CDATA[Linux 终端控制体系]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/112061295</link><guid>https://blog.youkuaiyun.com/jansert/article/details/112061295</guid><author>jansert</author><pubDate>Fri, 01 Jan 2021 16:13:47 +0800</pubDate><description><![CDATA[1、控制台

1）控制台是一个虚拟的终端，它必须映射到真正的终端上

2）控制台是个只输出的设备，功能很简单，只能在内核中访问

2、伪终端

一种特殊的终端设备，由主-从两个成对的设备构成，当打开主设备时，对应的从设备随之打开，形成连接状态

输入到主设备的数据成为从设备的输出，输入到从设备的数据成为主设备的输出，形成双向管道



伪终端设备常用于远程登录服务器来建立网络和终端的关联



3、串口驱动

Linux 内核使用uart_driver来描述串口，包含串口设备驱动名、设备名、设备号等信息..]]></description><category></category></item><item><title><![CDATA[Linux USB总线基础]]></title><link>https://blog.youkuaiyun.com/jansert/article/details/112061254</link><guid>https://blog.youkuaiyun.com/jansert/article/details/112061254</guid><author>jansert</author><pubDate>Fri, 01 Jan 2021 16:11:29 +0800</pubDate><description><![CDATA[USB支持热插拔的硬件原理

在USB集线器（hub）的每个下游端口的D+和D-上，都接了一个15K的下拉电阻到地，这样，在集线器的端口悬空时，就被这两个下拉电阻拉成低电平，而在USB设备端，在D+或D-接一个15K的上拉电阻。对于全速和高速设备，上拉电阻接在D+上，而低速设备接在D-上。当设备插入到集线器时，上拉电阻和下拉电阻分压，将差分数据线中的一条拉高，集线器检测到电平的变化，报告给主控制器。





1、一个USB设备，是如何被USB系统发现并安装对应的设备驱动程序的，从而使USB设备可以正常..]]></description><category></category></item></channel></rss>