- 博客(25)
- 收藏
- 关注

原创 Linux——网络通信
包括多种机制,如管道、消息队列、信号、共享内存和信号量。这些机制都依赖于Linux内核提供的支持,用于实现不同进程之间的数据交换和同步。然而,这些通信方式在本地进程间通信中非常有用,但无法直接用于跨机器间的通信。
2024-03-19 23:24:01
3042
1

原创 Linux多线程编程
而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。* 线程有自己的堆栈和局部变量,但线程没有单独的地址空间(同一进程内的线程共享进程的地址空间),一个线程死掉就等于整个进程死 掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器,不创建线程的话至少有一个线程。
2024-03-18 00:04:42
1046
原创 STL-List容器
std::list 使用双向链表实现。优点:它提供了高效的插入和删除操作,非常适用于频繁需要在容器中间进行插入和删除的场景。缺点:访问速度慢。二.基本用法1.包含头文件。
2025-03-23 00:34:19
268
原创 OrangePi Zero2 驱动开发
在加载驱动时,内核版本与驱动版本是必须严格匹配的,否则会出现驱动加载失败的情况。PC_CFG0 寄存器的地址为: 0x0300B000 + 0x0048 =PC_CFG1 的地址为: 0x0300B000 + 0x0048 =PC_CFG2 的地址为: 0x0300B000 + 0x0050 =PC_DAT 的地址为: 0x0300B000 + 0x0058 =PC_CFG0 寄存器的偏移量(0x0048)2.3 PC_CFG1 的偏移量(0x004C)PC_CFG2 的偏移量(0x0050)
2024-12-10 18:41:34
979
原创 树莓派开发笔记
VFS(Virtual File System)是操作系统中的一个概念,它为不同的文件系统提供了一个统一的接口。这样,用户和应用程序就可以通过这个统一的接口来访问各种不同的文件系统,而不需要关心底层的具体实现细节,简化了程序员开发流程,不管是磁盘还是设备都可以用open, read, write进行操作。例如,用户输入了下面这个shell命令,/media/usb使用的是 FAT32 文件系统,/documents。
2024-12-07 21:49:21
778
原创 Qt——天气预报项目
1.窗口1:使用水平布局,内包含俩个QLabel类和一个QLineEdit类这里可以设置LineEdit中的提示文字 2.窗口2:使用栅格布局,这个天气图标组件的大小需限制一下 3.窗口3:里面包含一个子窗口,设置子窗口背景样式为橘色子窗口中的组件先垂直布局,后水平布局。最后整体再来一个栅格布局4.窗口4:里面包含6个子窗口。子窗口0401、0402、0406都需要进行栅格布局子窗口0401和0406中的组件是由俩个QLabel类拼接在一起的。 5.最后给4个窗口整体进行垂直布局即可解决方法:重写鼠标点击事
2024-11-19 01:35:02
1169
原创 QT——自定义控件绘图
当窗口或控件第一次出现在屏幕中,系统或窗口就会生成QPaintEvent事件,通知窗口进行自身的绘制窗口大小改变时:当用户改变窗口的大小时,窗口中的内容通常需要重新绘制以适应新的尺寸如果窗口被其他窗口遮挡,然后又重新露出来,被遮挡的部分通常需要重新绘制通过调用QWidget的update()或repaint()方法,可以手动触发重绘事件。在Qt应用程序中,通常通过重写QWidget的paintEvent(QPaintEvent*)方法来处理绘制逻辑。
2024-11-03 21:01:19
1589
1
原创 QT——记事本项目
自定义按键涉及到的事件有鼠标的进入,离开,点击在当前项目中添加一个mybutton类,并使其继承于QWidget类来到mybutton的头文件中,添加保护类成员函数:事件函数。并通过Alt+Enter快捷键快速向中添加事件函数的框架。添加完后通过F4快捷键快速切换到mybutton.h头文件中接着实现该按键在最初始的状态就是一个图片,首先去mybutton.h头文件中添加一个私有成员。然后去mybutton类的构造函数中利用pic对象去加载图片(注意在此之前先添加你需要的图片到整个工程文件中)
2024-10-30 20:42:55
1206
1
原创 QT——串口调试助手
槽函数中先通过sender()函数获取到发送信号的对象,接着获取按键的属性,接着根据属性生成对应的名称。Signals中包含信号检测是否超时。
2024-10-30 20:00:03
687
原创 u-boot/内核编译
6. 替换掉旧的u-boot,可通过sudo bash -x /usr/sbin/nand-sata-install查看烧录过程,然后进行手动烧录。4. 编译u-boot,生成u-boot-sunxi-with-spl.bin(u-boot SPL 和u-boot proper)1. 清理u-boot,因为上面的build.sh脚本第一步工作也是先做清理,再进行编译的。4. 可使用下面的命令无需通过图形界面选择,可以直接开始编译u-boot。7. 安装刚才上传的新的u-boot的deb包。
2024-05-21 14:16:26
570
1
原创 Makefaile编译工具
表示延迟展开赋值,即变量的值是在使用时才确定,可能会受到后面的赋值影响。例如,VAR_A = A,VAR_B = $(VAR_A) B,VAR_A = AA,那么最后VAR_B的值是AA B,而不是A B。:=表示直接赋值。
2024-05-12 23:20:38
739
原创 基于Linux的智能垃圾桶项目
garbage.py# 引入依赖包import osimport io# 创建AccessKey ID和AccessKey Secret,请参考https://help.aliyun.com/document_detail/175144.html。# 如果您用的是RAM用户的AccessKey,还需要为RAM用户授予权限AliyunVIAPIFullAccess,请参考https://help.aliyun.com/document_detail/145025.html。
2024-05-11 00:17:49
1034
1
原创 Linux下的UDEV机制/守护进程
( 需要在 etc/udev/rules.d/ 下创建设备的相关规则,不然有可能udev机制生成的设备文件不具备可读可写的权限,adb无法成功通过该设备文件访问设备 )
2024-04-24 01:03:00
535
原创 Linux进程间通信
write_fifo.c 程序实现功能:a.打开"有名管道fifo1" b.不断地向管道中写入内容。FIFO以一种特殊的文件形式存放于文件系统中,与当前进程的生命周期无关。创建FIFO后,我们就可以用一般文件I/O函数对其进行操作。a. 创建"有名管道fifo1" b. 不断检测读取管道中内容并输出。当管道创建时,其会创建俩个文件描述符,FIFO,也称为命名管道。”,是UNIX系统IPC最古老的形式。fd[0]读打开,fd[1]写打开。//返回值:成功返回。//返回值:成功返回。
2024-03-13 23:42:51
685
原创 Linux系统下的文件操作
当我们执行完相关操作后,需调用close(fd)函数关闭文件,是因为我们对文件的操作都是针对动态文件进行操作的,而不是对静态文件,当我们对动态文件进行操作后,此时它就与静态文件不同步了,当我们close关闭动态文件时,内核会去更新静态文件。选项打开文件时,如果文件不存在,则会创建一个新文件。open()函数调用成功时,它们会返回一个未被进程打开的最小的文件描述符,可以用于后续的文件操作系统调用。选项打开文件时,如果文件中本来是有内容的,而且为只读或只写打开,则将其长度截为0(清空文件内容)。
2024-03-11 23:28:56
1050
1
原创 开发笔记——51单片机定时器
一,定时器怎么定时定时器的原理: 每经过一个机器周期,就加1:寄存器思考: 1.1 什么是晶振? 晶振(晶体震荔器),又称数字电路的"心脏”,是各种电子产品里面必不可少的频率元器件。数字电路的所有工作都离不开时钟,晶振的好坏、晶振电路设计的好坏,会影响到整个系统的稳定性。 1.2 什么是时钟周期? 时钟周期也称为振荡周期,定义为时钟频率的倒数,时钟周期是计算机中最基本的、最小的时同单位,在一个时钟周期内,(CPU仅完成一个最基本的动作。时钟周期是一个时间的量。更小的时
2024-01-14 12:50:22
434
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人