自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于stm32mp157和qt的简易视频播放器

因为没有处理视频流会有视频丢失的情况。

2024-03-23 23:19:56 116

原创 驱动开发之PWM输出控制(设备树详解版)

reg属性就是寄存器的其实地址,加上所有寄存器的长度0x24就是36个字节也就是9个寄存器 clocks属性是PWM要用到的时钟编号就是336,具体可以在linux源码目录下的Documentation/devicetree/bindings/clock/exynos4-clock.txt可以找到(接下来就是compatible属性,这个是在写驱动代码的时候匹配要用到的,到时候看下面的驱动代码就会知道。pinctrl-0的属性定义后就可以在驱动代码中使用pinctrl子系统的API(

2024-02-07 01:37:18 468 2

原创 多路复用的底层实现

当第一个if条件成立时,即有可读事件就会给mask赋值。当第二个if条件成立时,即有可写事件成立就会给mask赋值。函数通常被用于为实现基于事件驱动 I/O 复用的系统调用提供支持,比如。那select函数怎么知道所监测的文件描述符可读或则可写了呢?当文件描述符上发生了对应的事件时(根据返回值mask),),从而实现了对文件描述符事件状态的监听和通知。函数可以唤醒在该文件描述符上等待的进程(并且将对应的读文件描述符集合中对应的位置一。当没有事件时就会休眠,放入等待队列中。函数,将相应的进程唤醒。

2023-12-14 16:47:58 341 1

原创 关于文件描述符的解释

大家都知道呢,文件描述符就是 int fd 这样在应用程序定义的,当它作为write的参数时,它就会被内核当做成描述符数组的下标,从而找到对应的file对象。这里前面已经说过file对象也就是文件引擎,内核会再通过*f_op这个成员找到函数操作集里的对应驱动程序进行执行(如果是设备文件的话,否则就在系统调用函数里面执行相关操作)。这个结构体中的 *f_op成员指向的是函数操作集(这里不必深究这个函数操作集从哪里来,因为涉及到内核很多的东西)。他是怎么让内核的read、write函数执行起来的?

2023-12-12 11:14:28 324

原创 内核模块编程之不同目录下的依赖和传参

EXPORT_SYMBOL的作用是将指定的符号(函数或变量)的名称和信息添加到内核的全局符号表中,以便其他模块可以访问和使用这些符号,从而实现模块之间的符号共享。但是这里值得注意的是这里在内核源码的目录下会对该模块目录的makefile进行第二次解释,这样就可以用内核源码的Makefile的变量来编译该目录下的模块代码。1.首先想要在和linux源码不同级的目录下编写动态加载方式的模块代码,需要在模块代码的同级目录下写上这个Makefile,这个Makefile会经过2次解释。

2023-12-10 15:31:24 357 1

原创 汇编指令之100以内的加法求和

在学习汇编的过程中,遇到了这个题目。在c语言的基础上,运用汇编指令处理100以内的整数求和。

2023-11-01 14:06:48 75 1

原创 父子进程之信号灯通信

编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;使我个人所写可以得出结果,有改善的地方欢迎指出。

2023-10-09 23:55:33 43 1

原创 SOCK套接字与TCP协议通信

本代码实现套接字通信,分为服务器端和写端,其中还包含信号捕捉来验证当读端退出时,写端还往读端写入数据就会收到SIGPIPE信号。3.accept中的参数结构体与bind中的参数结构体不一致,accept中的结构体是客户端的结构体。2.accept函数会返回新的文件描述符,给read、write等函数使用。1.socket函数返回的是文件描述符,linux下一切皆文件。4.套接字连接的全双工的通道。

2023-10-09 16:31:58 42 1

原创 Makefile命令的使用与make工具的解释

编译和链接过程分为两步可以提高编译速度、实现模块化编程和代码重用,同时也方便了代码的管理和维护。(在代码进行修改后,,再次编译就只会编译修改的那部分,然后再重新链接)make是一个用来解释Makefile命令的一个工具,他可以便捷的完成编译链接的功能,在实际的开发中可以提高效率。1.Makefile中需要分两步进行,先要将所有.C文件编译成.o文件,然后再将所有.o文件进行链接。这份Makefile文件可以实现将同一目录下的所有.C文件进行编译链接。3.对于删除所有.o文件,需要先建立一个伪目标。

2023-10-03 20:47:56 55 1

原创 关于open函数阻塞问题(普通文件与管道文件的对比)

open函数用于打开文件,并返回一个文件对象,以便进一步对文件进行读取、写入等操作。在打开文件时,open函数会立即返回文件对象,不会等待文件的完全加载或准备就绪。同样的如果写端关闭后,读端会收到写端的文件描述符关闭信号,read函数会立即返回0。比如以只读方式打开一个管道文件后,open函数会一直阻塞直到另外一个进程以只写方式打开这个管道文件。以只写方式打开一个管道文件后open函数会一直阻塞到另外一个进程以只写方式打开。但是对于管道文件而言,open函数通常会经常阻塞。

2023-10-03 18:26:07 395 2

原创 非亲缘关系的进程进行mmap内存映射

因此,当两个进程调用mmap函数进行共享内存的映射时,它们各自得到的返回值是它们自己的虚拟地址,在各自的虚拟地址空间中指向共享内存区域的位置。在Linux系统中,每个进程都有独立的虚拟地址空间,进程之间的虚拟地址是隔离的。需要注意的是,虽然两个进程的mmap地址值不同,但它们映射的是同一块物理内存,通过读写各自的虚拟地址,可以实现进程间的通信和数据交换。当两个非亲缘关系的进程通过mmap通信时,它们在各自的地址空间中使用的虚拟地址是不同的,因此返回的mmap地址值也会不同。

2023-10-02 21:35:15 63 1

原创 有名管道的实现

有名管道可以实现两个不同进程间的通信,通过写端创建管道文件,读端可以依次读取数据。管道文件时文件系统可见的。2.当读端退出后,写端再次写入读端时,系统会发出报错信号给写端,让写端程序异常终止。3.当写端退出后,读端会检测到写端文件描述符关闭,此时读端的read函数会立即但会0。1.open函数会进行阻塞,直到有一个进程进行读操作或则写操作。写端通过管道文件写入管道文件,读端进行读取。下面是读端和写端的代码实现。

2023-10-02 12:20:44 23 1

原创 无名管道的实验

2.要注意两个进程读的时机,最好是一个写线程休眠的时间稍微多余另外一个写线程的时间。(为了防止线程读的时候造成两组字符串都连续读到了)在我学习无名管道的过程中,进行了多个进程的创建。实现了两个进程写,一个进程读。接下来我会展示我的代码和要注意的事项。3.最为重要的是创建子进程的时候要注意不要让子进程创建子进程,否则会出现很多没有必要的进程。1.每次读之前都要记得将buf数组清零,否则会出现乱码。4.此处巧妙的地方在于利用i变量进行进程的分别。

2023-10-01 22:31:44 24

原创 线程池的实验

想要实现线程池,最为重要的两点是要有一个链式队列进行任务的准备,还有有线程池的工作线程进行工程。当需要的线程量比较大时,需要不断的创建和销毁线程,会使得时间浪费比较大。这个时候就要使用线程池来节约时间的开销,让程序运行更有效率。因为运行的任务量比较多,而线程比较少,所以可能会出现不按顺序进行的情况、

2023-10-01 17:53:05 20

原创 在linux下条件变量的证明

此份代码可使我在学习的途中所写的,用一个单链表来验证条件变量。完成了生产者和消费者的问题。值得注意的是当多个线程进行抢广播时,要注意卡死现象。

2023-09-27 19:08:55 30 2

原创 深拷贝和浅拷贝

当在使用构造函数的时候,在堆区开辟空间来存储变量。如果使用浅拷贝会造成堆区的数据二次释放,有非法操作。可以使用深拷贝开辟一个新的内存空间来存储c2的属性。这样就会释放两个不同的内存空间。

2023-04-19 22:20:55 40 1

原创 以指针形式为形参接受数组名

数组名其实就是首元素的地址,在函数中要用指针来接接受它,。在编译的过程中数组arry【4】会被编译器展开为指针,变成*【arry+i】这也就是解码操作,就可以输出对应的值了。

2023-04-16 15:51:08 93 1

原创 函数返回对象为指针

函数返回类型为指针

2023-04-16 10:26:10 68 1

原创 c++中函数返回对象为引用的解释

函数返回对象为引用

2023-04-15 23:00:46 273 2

基于stm32mp157和qt的简易视频播放器

主要是qt界面开发以及视频类的编写等

2024-03-23

空空如也

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

TA关注的人

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