自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 总线驱动框架和platform框架

在内核中对挂载在总线上的设备编写驱动时,整个驱动框架遵循总线驱动模型:即在总线驱动模型中分为了三部分 device\driver\bus.device是保存当前设备的设备信息的对象,它会放在一个klist_device链表中进行管理,driver是一个设备的驱动信息对象,它会放在内核中的一个链表klist_driver链表进行管理。

2023-08-29 18:54:54 174

原创 【linux内核中断】

dev_id:request_irq最后一个参数的数值,一定要写的和注册时的一样,不然会报错。tasklet机制是基于软中断实现的一种底半部的机制,但是相比较于软中断,tasklet没有最大数量的限制。dev:传递给中断处理程序的参数,也是当前中断对应的irqatction的key值。参数:dev中断对应的设备树节点指针 index:当前中断 对应值的索引号。irq:要注销的中断对应的软中断号。中断底半部:主要处理一些不紧急,耗时的任务。参数:irq:当前中断的软中断号。根据解析的中断信息获取软中断号。

2023-08-28 20:11:03 279

原创 【无标题】

当前对于设备文件的读写需要根据情况的不同使用不同的方式进行当使用阻塞IO去读取硬件数据时,如果硬件数据没有准备好,此时进程阻塞在read函数的位置,直到硬件数据准备好,read函数返回,程序继续向下执行。进程处于阻塞时是休眠态,而进程的休眠态又分两种,如下:S:可中断的休眠态D:不可中断的休眠态。

2023-08-18 20:23:07 191

原创 day4 驱动开发

linux有意将对设备的功能选择和设置以及硬件数据的读写分成不同的函数来实现。让read/write函数专注于数据的读写,而硬件功能的设备和选择通过ioctl函数来选择。

2023-08-17 20:33:16 292

原创 系统驱动-点亮LED灯

【代码】系统驱动-点亮LED灯。

2023-08-16 20:31:49 61

原创 led小灯实验

3.PE10 p:引脚 E:GPIO组 10:第10个引脚。2.资源扩展版的原理图,找到网络编号LED1。led1,led2,led3轮流闪烁。1.扩展板原理图 找到LD1。asm-led.S汇编文件。

2023-07-20 20:34:27 35

原创 ARM架构和汇编语言

用汇编语言实现1-100相加。

2023-07-18 19:05:22 90

原创 qt 聊天室

【代码】qt 聊天室。

2023-07-11 20:24:00 375

原创 qt 闹钟实现

【代码】qt 闹钟实现。

2023-07-10 20:10:49 700

原创 qt对话框

【代码】qt对话框。

2023-07-09 19:00:44 387

原创 qt信号与槽

【代码】qt信号与槽。

2023-07-08 18:45:51 787

原创 qt---应用窗口创建

【代码】qt---应用窗口创建。

2023-07-07 19:42:34 1059

原创 c++中的模板和sdl

今日思维导图

2023-07-04 18:34:08 37

原创 c++继承和多态

法师类,射手类轮流攻击;判断blood什么时候为0;

2023-07-03 19:09:08 95

原创 c++ 运算符重载实例

【代码】c++ 运算符重载实例。

2023-06-30 19:40:10 152

原创 c++中的类和四种特殊函数

【代码】c++中的类和四种特殊函数。

2023-06-29 18:48:00 184

原创 c++中的引用和函数重载

int width;width=w;cout<<"周长="<<2*(length+width)<<endl;cout<<"面积="<<(length*width)<<endl;r1.get_w();r1.show();return 0;

2023-06-28 18:51:18 187

原创 开始C++

【代码】开始C++

2023-06-27 20:20:37 163

原创 Makefile

2023-06-25 19:43:42 24

原创 端午综合复习

1.进程和线程的区别进程:进程是系统分配资源和调度的基本单位,也就是说进程可以单独运行一段程序、线程:线程是cpu调度和分派的最小基本单位区别:1)一个线程可以包含至少一个线程,一般来说就是主线程,而一个线程只能属于一个进程2)进程拥有独立的内存,而线程没有独立的资源空间,只是暂时存储在计数器,寄存器,栈中,同一个进程间的线程可以共享资源3)将代码放入到代码区之后,进程产生,但还没执行,我们所说的执行一般是主线程main函数开始执行4)进程比线程更加消耗资源。

2023-06-23 13:04:48 129

原创 shell指令【2】

今日思维导图1.2.3.4.

2023-06-20 20:02:23 178

原创 shell脚本和shell终端指令

2023-06-19 20:39:56 202

原创 终端指令 (内含网络配置具体的流程)

2.桥接到主机的网卡,一般自动是可以的,如果自动不行,去主机的网络属性中,找主机使用的网卡。1.虚拟机--->设置--->网络适配器------>选择桥接或者是vmnet0;3.右上角网络图标-----》有线设置-------》添加/点击小齿轮修改网络。

2023-06-16 19:19:06 226

原创 实现dict.txt文件上传到数据库

【代码】实现dict.txt文件上传到数据库。

2023-06-14 16:58:03 43

原创 FTFP上传和下载

【代码】FTFP上传和下载。

2023-06-13 19:48:51 80

原创 IO网络复用 TCP客户端select函数的实现和TCP服务器poll的实现

TCP 客户端---select。TCP 服务器---poll。

2023-06-12 20:22:55 50

原创 进程间通信(IPC)

1>对于线程间的通信,我们可以使用全局变量实现,因为多个线程共享进程的资源2>由于进程内存空间是独立的,所以不能通过全局变量来进行进程间的通信3>虽然可以使用外部文件来实现多个进程间的通信,但是又遇到进程不能同步的问题,例如不能实现必须一个进程写数据,另一个进程读取数据4>由于每个进程的0-3G是独立的内存,共享3-4G的内核空间,所以可以通过3-4G的内核空间来完成多个进程间的通信5>系统提供的通信方式一共有三类1.传统内核提供的通讯机制无名管道有名管道信号。

2023-06-01 20:44:12 242

原创 线程同步互斥

使用多线程拷贝同一份文件,线程1拷贝前一半,线程2拷贝后一半,主线程阻塞等待回收子线程的资源。互斥:有你没我的行为,同一时间内,只允许一个线程拥有临界资源。同步:要求按顺序执行,按顺序访问临界资源。临界资源:多个线程共享的资源叫临界资源。临界区:访问临界资源的代码就叫临界区。

2023-05-31 20:45:33 53

原创 IO线程进程

1> linux系统中的库本质上是一个二进制文件,由.c文件(不含main)编译而来,其他程序可以使用该库调用相关函数2 > 分类:静态库 动态库3 > 不同的操作系统对应的库的格式有所不同windows:XXX.lib(静态库)XXX.dll(动态库)linux:libXXX.a(静态库)libxxx.so(动态库)4 >由于库是二进制文件,.c文件编译生成库,函数的实现过程是看不到的,所以使用库比较安全。

2023-05-29 19:56:13 199

原创 文件IO【1】

1>文件描述符是一个非负整数,使用open打开一个文件后,就会返回该文件的描述符,在之后想要操作文件,只需要通过该文件描述符即可。基于系统调用的方式,只要调用文件IO的接口,程序就会从用户空间向内核空间进行一次交互,效率相比于标准IO较低,原因是没有缓存区。使用变量拷贝文件描述符,其实只是拷贝变量的值,并没有产生新的文件描述符,只是在程序中多了一个变量,记录该文件描述符。O_CREAT:如果文件不存在,创建一个文件,如果加了该选项,第三个参数一定要加。4>一个程序中文件描述符的最大承载量默认为1024。

2023-05-26 18:27:44 80

原创 各种标准io的函数【2】

功能:将ptr指向的数据,每项数据的大小为size,一共有nmemb项,写入stream文件中。返回值:成功返回读取的项数,当size为1时,就是成功读取的字节数,失败返回小于项数的值或0。返回值:成功返回读取的项数,当size为1时,就是成功读取的字节数,失败返回小于项数的值或0。功能:从给定文件中,读取nmemb项数据,每项数据大小为size,将数据放入ptr中。返回值:成功返回毫秒数,失败返回time_t类型的-1,并置位错误码。参数1:存放数据的指针,是一个万能指针,可以接受任意类型的数据。

2023-05-25 18:32:20 162

原创 第一章 io

1>系统调用:从用户空间到内核空间的一次切换过程不同的系统进入内核空间的方式是不同的 ,所以接口函数有所不同但是,只要从用户空间,切换到内核空间,就会发生系统调用,效率比较低2>库函数库函数是对系统调用的封装:缓冲区+系统调用库函数有缓冲区,系统调用没有缓冲区3.常用的函数接口的种类1>标准io:printf,scanf,puts,gets,fopen,fclose,fprintf,fscanf,fpucs,fgetc,fread,fwrite。

2023-05-24 18:26:56 181

原创 快速排序和树

树的创建 树的深度 先序中序后序遍历。

2023-05-22 20:10:27 18

原创 数据结构--栈,队列

1>栈:只允许在表尾进行插入和操作受限的线性表2>逻辑结构:线性结构【一对一】3>存储结构:顺序存储【顺序栈】,链式存储【链栈】4>特点:先进后出后进先出5>栈顶int top:最顶部元素的下标6栈空:top=-1;栈满:top=MAXSIZE-1。

2023-05-19 17:33:08 27

原创 数据结构 顺序表

数据:被计算识别,存储,处理的符号。【整数,小数,字符串,汉字,声音,图片,视频,文件,app等】数据元素:由数据项组成,是数据的基本单位数据项:是数据的最小单位数据对象:由类型相同的数据元素组成数据>数据对象>数据元素>数据项。

2023-05-15 18:18:59 67

原创 结构体+内存空间划分

作用:起别名,起小名格式:typedef 数据类型 别名;数据类型:基本类型 构造类型 指针 空类型别名:满足命名规范,可以是多个int a=10;typedef int size_4 等价 #define size_4 int1>宏只属于宏替换,类型重定义属于类型重定义2>宏不属于C语句,类型重定义属于C语句3>宏在预处理阶段,类型重定义在编译阶段4>宏只可以做简单类型的替换,但是类型重定义可以重定义任意一种类型int age;char sex;

2023-05-12 19:30:51 951

原创 函数的综合使用

定义格式:数据类型 函数名( 参数列表) //函数头{ //{ }里面的所有称为函数体函数体;注意:数据类型:基本类型 构造类型 指针类型 空类型函数名:需要满足命名规范【但是在定义函数时,函数名不可以报错】( ) :函数的标志,不可以省略参数列表:可以是多个,或者0个{ }:不可以省略注意:自定义函数写在主函数下面运行速度相对较快,对成员相对友好。

2023-05-10 18:25:02 92

原创 指针与数组

值得等价关系: arr[i] *(arr+i) p[i] *(p+i) *p++地址的等价关系:&arr[i] arr+i&p[i]p+i。值的等价:arr[i][j]====>>*(*(arr+i)+j)====>>*(arr[i]+j)地址等价:&arr[i][j]====>>*(arr+i)+j====>>arr[i]+j。

2023-05-09 19:10:14 63

原创 Day 8 指针

存储类型 数据类型 * 变量名指针保存的是变量的首地址//int *p p变量名 int *//int arr[4] arr变量名 int[4]//char str[5] str变量名 char [5]//int a a变量名 整形int a=100;int b=90;p1=&a;p2=&b;temp=*p2;*p2=*p1;*p1=temp;return 0;

2023-05-06 18:17:31 32

原创 Day 7

存储类型 数据类型[行数][列数];完全初始化 int arr[2][3]={ 0,1,2,3,4,5}部分初始化 int arr[2][3]={ 0,1,2,3,}以行为单位的完全初始化 int arr[2][3]={ {0,1,2},{3,4,5}}以行为单位的不完全初始化 int arr[2][3]={ {0,1},{1,4,}}省略行数初始化,根据初始化列表和行数来分配空间 int arr[ ][3]={ 0,1,2,3,4}

2023-05-05 19:00:36 48

空空如也

空空如也

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

TA关注的人

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