- 博客(34)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 linux库相关概念和编程
gcc xxx.c -lxxx -L ./ 将.c文件链接xxx库,-L表示指定路径去找静态库,不加就默认在 /usr/lib 或 /usr/local/lib中找 ./表示在当前路径。gcc xxx.c -lyyy -L ./ -o zzz 编译xxx.c并链接动态库yyy生成可执行文件 zzz。2-2 动态库的生成:格式 xxx.so.x.y.z x y z为版本号可省略。(2)ar rcs libxxx.a xxx.o 将 .o 文件生成.a静态库文件。
2022-09-10 21:32:56
110
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 进程间通信(IPC)--------消息队列
msg_ptr是一个指向准备发送消息的指针,但是消息的数据结构却有一定的要求,指针msg_ptr所指向的消息结构一定要是以一个长整型成员变量开始的结构体,接收函数将用这个成员来确定消息的类型。调用成功时,该函数返回放到接收缓存区中的字节数,消息被复制到由msg_ptr指向的用户分配的缓存区中,然后删除消息队列中的对应消息。msg_sz是msg_ptr指向的消息的长度,注意是消息的长度,而不是整个结构体的长度,也就是说msg_sz是不包括长整型消息类型成员变量的长度。
2022-09-06 07:21:41
552
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 进程间通信(IPC)------- 命名管道
在已经建立的命名管道实例中,客户端进程就会得到一个指向该管道实例的句柄。这个句柄称之为客户端句柄。4):在已经建立连接的命名管道实例中,服务器进程就会得到一个指向该管道实例的句柄,这个句柄称之为服务器端句柄,同时服务端进程可以调用DisconnectNamedPipe函数,将一个管道实例与当前建立连接的客户端进程断开,从而可以重新连接到新的客户端进程。命名管道的通信是以连接的方式进行的,服务器创建一个命名管道对象,然后在此对象上等待连接请求,一旦客户连接过来,则两者都可以通过命名管道读或者写数据。
2022-09-05 19:02:34
792
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 进程间通信(IPC)--------- 管道
1、管道是一个进程连接数据流到另一个进程的通道,它通常把一个进程的输出通过管道连接到另一个进程的输入,如要列出当前文件下所有命名中有"test"的文件:ls -l | grep test。其中"|"就代表我们在使用管道,它会把"ls -l"的查询结果通过管道,发送给grep,然后执行"grep test"命令后把结构输出到终端。(1)只能用于具有亲缘关系的进程,父子进程、兄弟进程之间(进程描述符在父进程中创建,子进程能够继承,多个子进程均继承后可以互相通信)(5)基于队列实现,有大小限制。
2022-09-03 12:27:52
239
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 进程间通信(IPC)------- 共享内存
运行注意事项:(1)因为两个程序需要一起跑,所以最好开两个终端,并且最好起别名 开终端快捷键 Ctrl+Shift+N 编译时起别名:例如 :gcc shmwrite.c -o shmwrite -o表示编译shmwrite.c时给生成的文件命名为shmwrite例如 :gcc shmread.c -o shmread(2)因为接收端未做共享内存的开辟,所以要先跑发送端......
2022-08-28 18:15:58
395
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 STC89C52RC实现智能垃圾桶
材料:STC89C52开发板,舵机,蜂鸣器,超声波模块,振动传感器模块,杜邦线。注意:接线时要和定义的相同,要用使用外部中断,振动传感器必须接P3^2口。需要组装则准备热熔胶枪。
2022-08-18 12:31:37
266
原创 c语言实现Tftp客户端
Tftp:简单文件传送协议 最初用于引导无盘系统,被设计用来传输小文件特点:基于 UDP 协议实现 不进行用户有效性认证数据传输模式:octet:二进制模式netascii:文本模式mail:已经不再支持 3.1.2。
2023-06-16 16:57:50
903
原创 使用联合体判断当前字节序
字节在电脑中存放时的序列与输入(输出)时的序列是先到的在前还是后到的在前字节序,即在电脑中存放时的序列与输入(输出)时的序列是先到的在前还是后到的在前。字节序是指多字节数据在中存储或者网络传输时各字节的存储顺序。理解:多字节数据的存储顺序。
2023-06-15 11:04:26
245
原创 通讯录(结构体数组篇)
刚开始就申请一段结构体数组空间用于存放联系人信息,通过count来确定该空间的有效长度,一切操作都是基于count的变化来完成的;
2023-04-12 19:14:33
341
原创 c语言及单片机开发 -----volatile关键字的使用
1、为什么用volatile?C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明:volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。
2022-09-27 19:28:16
518
原创 树莓派总线地址、物理地址和虚拟地址
注意,并不是所有的“程序”都是运行在虚拟地址中。CPU在启动的时候是运行在实模式的,Bootloader以及内核在初始化页表之前并不使用虚拟地址,而是直接使用物理地址的。(一部份),是由CPU或有DMA能力的单元,用来沟通这些单元想要存取 (读取/写入)电脑内存元件/地方的实体位址。为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的。概念: CPU启动保护模式后,程序运行在虚拟。理解:基于算法的地址(软件层面的地址,假地址),称为物理地址(Physical Address),又叫。
2022-09-25 11:27:17
190
原创 树莓派linux下写一个简单驱动程序,并加入内核
看到最后一行并未出现ERROR字样表示成功,此时/home/chuan/SYSTEM/linux-rpi-4.14.y/drivers/char目录下生成pin4driver2.o文件。1.在字符设备目录下:/home/chuan/SYSTEM/linux-rpi-4.14.y/drivers/char。pi@192.168.220.28:/home/pi :用户名@IP地址:绝对路径。pi@192.168.220.28:/home/pi :用户名@IP地址:绝对路径。敲回车后让你输入密码,正常输入即可。
2022-09-25 11:01:01
150
原创 主设备号和次设备号
Linux的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录下,称为设备文件。为了管理这些设备,系统为设备编了号,每个设备号又分为主设备号和次设备号。主设备号用来区分不同种类的设备(例如手机的一个品牌),而次设备号用来区分同一类型的多个设备(如该品牌的不同型号)。一个字符设备或者块设备都有一个主设备号和次设备号。主设备号和次设备号统称为设备号。次设备号用来表示使用该驱动程序的各设备。那么,可以写一个LED灯的字符设备驱动程序,可以将其主设备号注册成5号设备,次设备号分别为1和2。
2022-09-22 18:14:17
516
转载 vfs的概念及作用
我们知道文件系统的种类有很多。除了Linux标准的文件系统Ext2/Ext3/Ext4外,还有很多种文件系统。linux通过叫做VFS的中间层对这些文件系统提供了完美的支持。在大部分情况下,用户通过libc和kernel的VFS交互,不需要关心底层文件系统的具体实现。
2022-09-20 18:25:49
1763
原创 Linux文件系统
1. 什么是文件系统?概念:文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构常规认知:根目录概念中说的方法:文件管理系统(程序),简称文件系统2. 文件系统的种类有哪些?FAT,VFAT,NTFS,EXT1/2/3/4 HFS 等等树莓派查看文件系统的命令是:df -T3. 什么是分区?Windows:随意(面向普通PC用户)C盘(装系统的位置,放其他资源也行没有严格要求),D盘(随意)
2022-09-20 18:08:37
799
原创 各种芯片的启动过程
启动过程:电源 -》BootLoader(引导操作系统启动)-》linux内核 -》文件系统(根据功能性来组织文件夹,带访问权限)-》进入设备功能主界面。启动过程: 电源 -》fastBoot -》linux内核 -》文件系统 -》虚拟机 -》HOME应用程序 -》点某图标打开某APP。启动过程:电源 -》BIOS -》windows内核 -》C,D盘 -》程序启动。3. 嵌入式产品:树莓派,mini2440,mini6410,nanopi,海思,RK(瑞芯微)
2022-09-18 16:54:28
649
1
原创 Linux 创建链接
只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。ln -s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还。当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的 目录下。第二,ln的链接又软链接 和硬链接。
2022-09-18 16:01:21
3025
原创 交叉编译
例如:我们使用keil时在Windows下编写代码,使用keil交叉编译出 .hex 文。例如:我们写的c代码在Windows的cmd下用gcc编译生成可执行.exe文件。目标机(target):用户开发的系统,通常都是非X86平台。(2)交叉编译:将我们在写的代码生成的文件编译生成另一个平台运行的文件。1 平台上资源匮乏,无法运行我们所需要的编译器。(1)编译:将我们写的代码编译成一个可执行代码在自己平台运行。的平台,一般是基于X86的PC机,通常也被称为主机。交叉编译是什么,为什么要交叉编译。
2022-09-17 10:10:15
193
原创 树莓派换源及更新vim
输入代码后会出现安装信息包的版本大小之类的东西(本人已经成功),一般会让你确认是否要更新,此时输入y等待它更新,一般会出现失败,因为我们的源默认是在外国,我们可能访问不到,所以我们需要换源。将已有的源前面加#号注释(shell脚本与其他语言注释符号不一样用#表示注释),在以下源中任选一个,不用带中午。前面的文章说过树莓派老版本 vi 编辑器版本太老不太好用,于是我今天写一篇来更新 vi 编辑器。4.重复1步骤代码完成更新你就可以得到高版本的vi 编辑器了。2.换镜像源,输入以下代码。
2022-09-15 09:05:15
589
原创 树莓派配置网络实现ssh登录
来到以下界面找到ssh敲回车,然后它会让你确定你敲回车就行,我这边早就配置过了,并且后面操作也比较简单就不再做一遍了,确定后按方向右键到 back返回,然后再右键到Finish完成并退出界面,此时ssh已经打开可以用ssh登录树莓派了,最好在sudo reboot重启一下。找到wlan0,我这边192.168.87.28,就是我的网卡ip地址,每次开机都是不一样的,因为为进行静态IP配置,默认是动态ip地址,可以用windows的cmd来ping一下树莓派的ip。5.这边介绍一种简单的配置方法,
2022-09-14 16:31:13
2745
4
原创 串口方式访问树莓派
上面树莓派刷机文章中将了用HDMI 可以看到树莓派开机过程,但并不能进行树莓派的编程,所以我们用串口方式来访问树莓派,才能开始编程,用串口方式访问需要对树莓派文件进行配置。软件:SecureCRT8,Cmder,MobaXterm,FireCMD,Xshell等等,本人使用MobaXterm(感觉他比较全能),建议:MobaXterm,SecureCRT8。左边是你接你接入电脑的usb接口号,右边是波特率,上面配置"cmdline.txt"时是115200,所以这里选115200,指的是文件系统的位置,
2022-09-14 11:54:49
1319
原创 树莓派刷机
5.确认没有问题后点击Write,将树莓派系统刷入SD卡(等待他刷机成功,时间不一样,看电脑和读卡器的配置)1.使用SDFromatter软件将内存卡格式化(文件系统选择FAT或者FAT32)7.可以用HDMI接口接入显示屏然后给树莓派usb接口上电可以看到树莓派开机过程。3.在Device中选择需要刷机的磁盘(注意千万不要选择电脑自带的磁盘)准备一张sd卡(8G内存以上),读卡器以及软件包(需要私我)1。2.将sd卡插入读卡器,读卡器插入电脑。6.刷机成功将sd卡插入树莓派。
2022-09-14 09:19:04
845
转载 linux编程----exec族函数
二、带p的一类exac函数,包括execlp、execvp、execvpe,如果参数file中包含/,则就将其视为路径名,否则就按 PATH环境变量,在它所指定的各目录中搜寻可执行文件。//函数原型:int execle(const char *path, const char *arg,..., char * const envp[]);三、带v不带l的一类exac函数,包括execv、execvp、execve,应先构造一个指向各参数的指针数组,然后将该数组的地址作为这些函数的参数。...
2022-08-26 11:52:17
193
原创 DHT11收到数据返回串口
如果感觉自己没问题但就是实现不了现象可能是DHT11模块损坏,可以看我检验DHT11模块的代码。硬件:开发板(本人用的STC89C52RC),温湿度模块(DHT11),杜邦线。
2022-08-21 11:11:11
484
2
原创 检测DHT11温/湿度模块是否损坏
材料:开发板模块(本人用的STC89C52RC)DHT11温湿度模块,杜邦线若干,LED灯模块(模块上有可直接用);ps:主要温度模块的时序图;
2022-08-20 15:59:25
1683
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人