自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 Linux深入内核理解文件IO(内核版本:common-android13-5.15)

这篇blog基于内核2.6分析的很透彻,虽然内核5.15关于do_filp_open这个函数进行了重构解耦,但大体流程还是一样。然后利用上一篇博客:《Makefile简单使用及解读韦东山的通用Makefile实例》中的Makefile来编译这个C文件。如下,已经编译好并且分别用编译出来的test打开编译程序本身test和Makefile文件,打印出来的fd都是=3。综上,为什么:“不同的pid对应的fd指向的文件不一样,但fd是一样的”?可以看到不同的pid对应的fd指向的文件不一样,但fd是一样的。

2024-01-27 14:02:17 468 1

原创 Makefile简单使用及解读韦东山的通用Makefile实例

以上只是将用到的函数分别解释以及简单用法,这些函数在我的理解里更多不是死记硬背,主要是编写的Makefile需要满足什么样的场景,然后查Makefile手册,再通过Makefile语法把一系列的目标串连起来。Makefile手册可查:https://www.gnu.org/software/make/manual/make.html。

2024-01-23 21:25:07 538

原创 IIC协议--附完整驱动代码

开漏输出:让输出端口有效输出高电平(上拉电阻的作用)且保证不短路(相当于VCC与GND之间多了一个电阻),且开漏输出能构成线与,简化电路。短路原因:由于多个GPIO口连接到一根线上,当一个IO输出低电平时,另一个IO输出高电平就会造成短路。线与,即两个输出端(包括两个以上)直接互连就可以实现“AND”的逻辑功能。在通信的过程中以下细节:1、总线空闲状态时,SDA与SCL处于高电平状态2、SCL高电平期间,SDA须保持稳定。当SDA状态需要改变时最好在SCL低电平状态(SCL高电平时,SDA状态改

2021-07-18 16:18:04 1279

原创 数据结构-双向循环链表

引用百度百科的概念:双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。特点:每个数据结点中都有两个指针直接后继(下一个节点的地址)直接前驱(上一个节点的地址)双向链表和单向链表的区别就在于一个有两个方向(即前、后),一个只有一个方向。在结构上也是类似的,所需要实现的功能也是增、删、改、查。增//双向链表节点typedef struc

2021-04-18 15:10:29 205

原创 数据结构—单向链表

这里借用百度百科的概念:单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始;链表是使用指针进行构造的列表;又称为结点列表,因为链表是由一个个结点组装起来的;其中每个结点都有指针成员变量指向列表中的下一个结点;通过加粗的字体可以看出单向链表有以下特点1. 链接方向是单向的2. 顺序读取从头部开始3. 链表是由一个个结点组装起来的4. 每个结点都有指针成员变量指向列表中的下一个结点由一张图简单说明:head就是头部,也称为头节点。next1、n

2021-04-17 23:44:18 210

原创 实现开发板、电脑(无线网卡)与虚拟机三者通过网络连接(三者都可以上外网)

借鉴文章:https://blog.csdn.net/dongtaintailiang/article/details/106314689?spm=1001.2014.3001.5501因为项目需要,找到这篇文章,进而想到可不可以三者都可上网且三者都可以ping通,然后使用nfs。首先打开以太网,进入更改适配器选项然后打开WLAN属性,如下图配置,这样就可以给我们的开发板接口的以太网分配到一个可上网IP再打开开发板接口的以太网可以看到以下配置,这样电脑端就配置好了。开发板端,输入命令:vi

2021-04-05 21:32:23 321

原创 linux下的C语言学习----数组(补充)

定义一个数组 int a[10]a表示数组的基地址;&a表示整个数组的地址;这两个组虽然数值上一样,但是类型不一样。例如:a+1等价于a[1];而&a+1等价于指向下个地址#include <stdio.h>int main(void){ int a[5]; printf("a为: %p\n",a);//打印出数组基地址 printf("a+1为: %p\n",a+1);//打印出a[1]的地址 printf(..

2021-01-28 12:31:51 101

原创 linux下的C语言学习----中级篇03(从内存的层面理解数组)

数组数组的概念数组(array)是由一系列相同类型的元素构成的复合数据类型定义一个数组的语法如下:<存储类型> <数据类型> 数组名[元素个数];从内存方面看,定义一个数组相当于在内存中申请一段连续的空间,基地址(数组起始地址,又为首地址)为数组名。(代码举例)#include <stdio.h>int main(void){ int array[10]={0,1,2,3,4,5,6,7,8,9}; printf("数组名元素的地址为:%

2021-01-23 15:46:11 85

原创 linux下的C语言学习----基础篇02(运算符、控制流)

文章目录一、运算符二、控制流一、运算符算术运算符+、-、*、/、%、++(自加1)、–(自减1)等等%:求余、取模(操作数必须为整数)++:分两种情况。1、++a2、a++例:下面程序中,后++表示先将a的值打印出来,再令a的值+1存进a中;前++则表示先让a的值+1再将a值打印出来。#include <stdio.h>int main(void){ int a = 0; printf("%d\n", a++); int b

2021-01-23 15:36:51 95

原创 linux下的C语言学习----基础篇01

Linux下学习C语言

2021-01-23 12:16:06 135

空空如也

空空如也

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

TA关注的人

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