- 博客(28)
- 收藏
- 关注
原创 Linux开机自启 stm32MP157 测试成功,添加rc.local
步骤二:进入/etc/systemd/system 文件夹创建 rc-local.aervice 文件(此文件是普通文件) 添加以下内容。查看服务是否启动成功:systemctl is-active rc-local.service ——状态是。步骤一:在/etc文件夹里面创建 rc.local 添加开启启动文件,创建完成后,步骤四:rc-local.service服务设置开机自启。最后重启后查看添加的开机启动脚本是否正常运行;
2023-11-27 08:30:51
235
原创 linux驱动简单终结
在设备驱动框架下创建设备号,注册设备驱动,生成驱动设备文件,最后在makefile下进行添加设备 进行编译 ,交叉编译成arm文件 传到树莓派上进行程序执行。应用层程序open 在dev目录下驱动设备通过C库api 访问到系统调用层,通过主设备号在内核驱动链表找到对应驱动设备,对设备进行控制操作;实现驱动:1.创建驱动 2.调用驱动。
2023-04-11 23:09:52
113
原创 LINUX系统编程(个人总结)
exec族函数,system和popen函数的使用区别;无名管道,命名管道,消息队列,共享内存,信号量;C语言标准库:fopen和open区别;进程的创建,等待,互斥锁,条件(同步);僵尸进程和孤儿进程---wait函数;fork和vfork 的区别使用;文件描述符,静态文件,动态文件;父进程,子进程(创建的原因);什么是程序,什么是进程;进程标识符(DIP);TCP,UDP 区别;字节序(大段/小端);socket编程步骤;socket套接字;
2023-04-03 17:52:52
120
原创 socket-TCP-UDP-HTTP-HTTPS之间的关系(网络相关知识) 个人总结
两个计算机进行通信时,通过TCP UDP协议就可以收到各自的数据,但是仅仅时收到数据,不能解析数据,如果要识别类容就需要应用层http,ftp等一些协议,http就是解决了浏览器和服务器数据通信的一种数据解析;请求行:GRT请求和POST请求;区别(url可见性,数据传输,缓存性,后退页面反应,大小,安全性),GET产生一个TCP数据包,POST产生两个TCP数据包。密码学基础:明文,密文,密钥,对称加密(DES,RC5)---私钥,非对称加密(RSA)---公钥;http是建立在TCP协议上的一种应用;
2023-04-03 16:33:02
84
原创 C语言基础(个人终结)
strtic:关键字,用来修饰全局变量,局部变量,函数,可作为只限制在本模块,strtic在作用一个静态局部变量,一般的局部变量存放在栈区,当函数结束,栈区的变量就会被释放掉,当用指向一般局部变量,函数调用结束变量的空间就会被释放,静态局部变量存放在数据段,生命周期存在整个程序运行期间;函数指针:指针的地址指向一个函数,指向函数的指针,【void (*p) ()】 p:函数的指针变量=函数名,函数指针可用作回调函数;typedef:关键字,用来定义类型的别名(已经存在的类型),数组,指针,结构体;
2023-04-03 16:05:48
113
原创 智能家居项目总结(树莓派3B+)
项目架构采用简单工厂模式来设计,将TCP服务器,语音识别设计成每个链表的结点作为控制工厂,灯光,门锁,火焰,温湿度检测也设计成链表的每个节点作为设备端工厂,在主程序里面通过链表的查找来实现各种功能,基于这种架构来设计,后面添加功能只需要添加一个链表节点文件就可以了;空调,电视采用红外解码,支持遥控学习和控制单元,窗帘采用了433M射频单元,支持远距离控制,此项目支持人脸识别开锁,人脸识别采用人工智能祥云平台,在此用到了LINUX,https C语言编程,第三方库的开发;
2023-04-03 15:26:27
238
原创 89C52单片机学习终结
智能小车项目:用到电机驱动,语音,测速,蓝牙,舵机,超声波,通过代码的封装,分文件编程,实现了速度在OLED屏幕上进行显示,语音控制小车进入不同的模式,跟随,避让,蓝牙控制小车前进后退;蓝牙模块,WIFI模块(ESP8266),4G模块,都需要AT指令,4G模块可通过本地IP进行内网穿透达到远程控制;I2C协议:是一种半双工同步通信,每个从机都有唯一的IP地址,有2根信号线,SDA(双向数据线),SCL(时钟线)433M模块的使用:是通过电磁波(20-50米)传输,收到信号,相关模块的端口会触发高电平。
2023-04-03 14:37:24
107
原创 全志H616总结
udev是一个设备管理工具,以守护进程形式进行运行,usb插入硬件,内核首先知道,应用程序需要访问到手机就需要通过一个通道,应用层(udev)用来监听内核,发出的信号来管理/dev目录下的文件,能够根据系统中硬件的动态来更新设备文件。语音刷抖音项目:配置语音模块,通过串口进行发送指令,手机USB连接全志开发板,安装adb工具库,需要进行配置一个支持USB设备热拔插,支持udev机制,此时系统能识别手机,应用能够访问手机。安装wiringPi库(外设库),控制GPIO,串口,I2C。刷机,系统登录(SSH)
2023-04-02 18:24:19
762
原创 linux学习笔记--临时补充
2、strlen是C语言中的一个函数,用于计算字符串的长度,即字符串中字符的数量,不包括字符串末尾的空字符''。shell(壳):shell也是一个应用程序,是提供了去操作内核的工具,我们在终端输入指令的时候,一回车就会启动一个shell,shell吧回车的字符来启动应用程序来运行,来启动内核;:在应用层调用驱动时,需要用到wiringPi库,这是树莓派平台自带的的库,有些平台不一定提供wiringPi库,不像C库是LINUX都自带的标准库;2、进入curl解压后的文件把库的包开源包配置安装在指定文件夹(
2023-03-22 22:49:44
94
原创 linux系统编程---网络编程,socket,字节序的概念简单理解---学习和记录(一)
双方必须连接成功才能发数据,类似打电话,主要用于对传输数据精确的情况,如传输指令。双方无须连接成功就能发数据,类似发短信,主要用于传输大数据量的情况,如视频。
2023-02-10 09:24:39
54
原创 linux系统编程---socket编程步骤和相关API使用---学习和记录(二)
socket系统调用返回的服务器端,socket描述符。输入参数straddr包含ASCII表示的IP地址。输入参数straddr包含ASCII表示的IP地址。输出参数addrp是将要用新的IP地址更新的结构。指定在请求队列中允许的最大请求数。
2023-02-10 09:24:32
293
原创 linux系统编程---线程的条件控制实现线程同步---学习和记录(四)
函数运行状态:线程1存在条件的等待,所以线程2有互斥锁先竞争到必须要先运行完,等到线程2条件满足后,触发线程1的等待,线程2互斥锁解锁,线程1开始执行;
2023-02-10 09:24:19
68
原创 linux系统编程---线程的相关API的使用---学习和记录(二)
注意rval_ptr是一个二级指针,需要定义一个 int *pret=NULL 来存放退出信息,退出信息来自 prthread_exit 函数.在定义退出信息时,要定义成静态变量static int/char,因为main函数的pthread_join。二级指针访问的时这里面的一级指针,否者函数退出后,定义的就没掉了.需要使用到 pthread_self()函数(获取线程ID)p_data是全局变量,里面其他函数对他访问都是同一个地址;
2023-02-10 09:22:41
107
原创 linux系统编程---线程的概念---学习和记录(一)
线程有自己的堆栈和局部变量,但线程没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。总的来说就是:进程有独立的地址空间,线程没有单独的地址空间(同一进程内的线程共享进程的地址空间)对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
2023-02-10 09:21:55
54
原创 linux系统编程---进程间的通讯---信号量---学习和记录(五)
int val;只定义val这个,原先有没有锁,有为1,没有为0int val;//钥匙减一//1表示只有一个//钥匙加一//1表示只有一个int main()key_t key;int semid;//1表示信号量集有一个信号量,创建信号量//表示只有一把钥匙//表示没有钥匙了//信号量初始化,0表示操作第0个信号量,//SETVAL用来设置信号量的值设置为initsem//拿钥匙锁//放钥匙锁//删除锁。
2023-02-08 21:00:46
64
原创 linux系统编程---进程间的通讯---信号---学习和记录(四)
信号是从1号开始的,没有0号,32号,33号信号:在这些信号中,1~31号信号是普通信号,都是继承自UNIX系统,是不可靠信号,34~64号信号是实时信号,也称可靠信号。//需要调用函数指针。
2023-02-08 20:59:50
88
原创 linux系统编程---进程间的通讯---消息队列的使用---学习和记录(二)
/函数原型//msgp的结构体long mtype;//消息类型(>0)//消息文本。
2023-02-08 20:59:35
71
原创 linux系统编程---进程间的通讯---共享内存的使用---学习和记录(三)
共享内存:共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访问同一段共享内存的任何其他进程。
2023-02-08 20:59:26
70
原创 linux系统编程---进程间的通信--管道介绍---学习和记录(一)
进程间的通信(IPC),是指在不同进程之间传播或交换信息:如果是在一台机器上,则为单机通信 ,如半双工管道,全双工管道,,信号量,共享内存:在多台机器上进行通信,网络通信,如(套接字)、Streams等;
2023-02-08 20:58:57
62
原创 linux系统编程---进程:exec族和fork配合使用---学习和记录(七)
exit(-1);*p = '8';close(fd);return 0;
2023-02-08 20:58:04
333
原创 linux系统编程---进程:system函数和popen函数的使用---学习和记录(八)
command: 是一个指向以 NULL 结束的 shell 命令字符串的指针。这行命令将被传到 bin/sh 并使用 -c 标志,shell 将执行这个命令。type: 只能是读或者写中的一种,得到的返回值(标准 I/O 流)也具有和 type 相应的只读或只写类型。如果 type 是 “r” 则文件指针连接到 command 的标准输出;如果 type 是 “w” 则文件指针连接到 command 的标准输入。
2023-02-08 20:58:00
128
原创 linux系统编程---进程:创建fork的使用(vfork的区别)----学习和记录(五)
在fork函数使用后,父子进程同时执行,都在争夺CPU的使用,没有先后之分,需要在子进程exit(推出程序后)后则只有父进程在运行;3.服务器子进程返回给客户端信号;1.服务器等待客户端接入;2.服务器创建子进程;返回两次,失败返回-1;fork函数调用成功,
2023-02-08 20:57:14
96
原创 linux系统编程---进程:进程的退出的理解---学习和记录(六)
exit(标准C库)_exit和_Exit(系统调用)不管进程如何终止,最后都会执行内核中的同一段代码。这段代码为相应进程关闭所有打开描述符,释放它所使用的存储器等。对上述任意一种终止情形、我们都希望终止进程能够通知其父进程它是如何终止的,
2023-02-08 20:57:06
94
原创 linux系统编程:进程相关概念----学习和记录(四)
init进程是linux内核启动后第一个执行的进程,引导系统,启动守护进程并且运行必要的程序。系统中执行的第一个进程是init,它是所有进程的祖先最终都会落到进程号为1的init进程身上。查看某个专有进程:ps -aux|grep init(a.out)1.pid是唯一的,一个pid只标识一个进程;linux查看任务管理器:top。查看所有进程:ps -aux。
2023-02-08 20:56:12
41
原创 linux系统编程:标准c库(f开头open/write/put/get ) 对文件操作引用----学习和记录(三)
openfopenopen无缓冲,fopen有缓冲。open与read, write等配合使用, fopen与fread,fwrite等配使。
2023-02-07 18:36:54
375
原创 linux系统编程:open/write/read/sleep --- 学习和记录(一)
在Linux中要操作一个文件,一般是先 open一个文件,得到文件描述符,然后对文件进行读写或者其他操作,最后close文件即可在对文件进行操作时,一定要先打开文件,打开成功后才能操作,对文件操作完成后,一定要关闭文件,否则会造成文件损坏。
2023-02-07 18:29:12
127
原创 linux系统编程:文件编程操作strstr函数----学习和记录(二)
1.先找到a前面的位置(函数在找到abcdefg后会指向首地址)2. a往后移动到g的位置。3.修改数字"5"的数据。被查找的目标范围(在哪个部分)例:abcdefg=5。
2023-02-07 18:27:49
257
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人