![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux学习笔记
文章平均质量分 87
主要介绍文件、进程、进程间通信、线程、网络编程的基本原理以及Linux C库的API,附上了相关例程。
一盆电子
嵌入式软件开发
展开
-
Linux 小项目(1)---简易FTP服务器
一、FTP服务器本小节我们通过C语言在Linux系统上编写简易FTP服务器代码。什么是FTP服务器?FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。所设计的简易FTP服务器代码包含服务器端server.c和客户端client.c。服务器通过for原创 2021-10-07 11:42:25 · 1599 阅读 · 2 评论 -
Linux 设备驱动开发(三)---基于驱动的超声波距离检测
超声波模块超声波是 4Pin(VCC, Trig, Echo, GND),工作时需要 Trig 发送触发信号,发送超声波信号,回波检测引脚 Echo 接收超声波返回信号。工作过程:1、Trig 设置成输出模式,给至少 10us 的高电平信号。2、Echo设置成输入模式,等待有信号返回,当检测到一个高电平,高电平持续的时间就是超声波从发射到返回的时间,测试距离=(高电平时间*声速(340m/s))/2。基于wiringPi库的超声波检测程序#include "wiringPi.h"#inclu原创 2021-10-05 20:31:22 · 805 阅读 · 3 评论 -
Linux 设备驱动开发(一)
前言设备有设备名字、设备号(包括主、次设备号)、设备驱动函数三个属性。在/dev目录中包含了所有Linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序,这一点和windows,dos操作系统不一样。它实际上是一个访问这些外部设备的端口。我们可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。1、什么是主设备号和次设备号?主设备号用来表示一个特定的驱动程序。次设备号用来表示使用该驱动程序的各设备。通过执行ls -l 命令,可以看到在修改日期之前,有两个用逗号分隔的数字原创 2021-10-01 10:34:01 · 305 阅读 · 0 评论 -
Linux 交叉编译
1、交叉编译(Cross Compiler)是什么?为什么要交叉编译?交叉编译是在一个平台上生成另一个平台上的可执行代码。我们在Windows上面编写C51代码,并编译成可执行代码,如xxx.hex,是在C51上面运行,不是Windows上运行我们在Ubuntu 上面编写树莓派的代码,并编译成可执行代码,如a.out,是在树莓派上运行,不是在Ubuntu Linux上面运行编译:是在一个平台生成该平台上的可执行代码。Stm32、C51:交叉编译的发生在keil(集成环境上面)为什么要交叉编译:原创 2021-09-28 00:38:55 · 2017 阅读 · 0 评论 -
Linux 设备驱动开发(二)---I/O口操控
一、知识储备总线地址:地址总线 (Address Bus;又称:位址总线) 属于一种电脑总线 (一部份),是由CPU 或有DMA 能力的单元,用来沟通这些单元想要存取(读取/写入)电脑内存元件/地方的实体位址。简单来说就是CPU能够访问内存的范围。比如装了32位的win7的系统,明明内存条8G,可是系统只识别了3.8G ,装了64位系统才能识别8G,因为 32位操作系统只能表示/访问2的32次方=4294967296 个地址,每个地址访问一个字节。所以4294967296(即2的32次方)个地址访问2的原创 2021-10-02 17:35:19 · 465 阅读 · 0 评论 -
Linux 静态库和动态库的生成及使用
1、分文件编程分模块的编程思想:假设一个项目需要用到网络、超声波、电机,程序不是都杂糅在同一个文件,而是将网络、超声波、电机需要调用的函数写在不同文件里,在主文件中直接调用即可。好处:a.功能责任划分b.方便调试c.主程序简洁2、库使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个程序函数库简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数据可以在事后供其他的程序使用。程序函数库可以使整个函数更加模块化,更容易重新编译,而且更方便升级。程序函数库可分为三种类型原创 2021-09-26 22:48:02 · 765 阅读 · 0 评论 -
Linux 进程(一)
储备知识1.什么是程序?什么是进程?有什么区别?程序是静态的概念,gcc xxx.c -o pro 磁盘中生成pro文件,叫做程序。进程是程序的一次运行活动,通俗点意思是程序跑起来了,系统中就多了一个进程。2.如何查看系统中的有哪些进程?(1)使用ps指令查看 ps -aux|grep a.out实际工作中,配合grep来查看程序中是否存在某一个进程。(2)使用top指令查看,类似windows任务管理器。3.什么是进程标识符?每个进程都有一个非负整数表示的唯一ID,叫做PID,类似身份证原创 2021-09-16 20:31:37 · 676 阅读 · 0 评论 -
Linux 线程
Linux线程介绍进程与线程一个进程可以有多个线程,同时做多件事情,每个线程各自处理独立的任务。进程是程序执行时的一个实例,是担当分配系统资源(CPU时间、内存等)的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令,数据及组织形式的描述,进程才是程序的真正运行实例。线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。进程的所有信息对该进程中的所有线程都是共享的,包括数据段、代码段、堆、栈等。在Unix和类Unix操作系统中原创 2021-09-22 14:37:11 · 115 阅读 · 0 评论 -
Linux 进程间通信(一)
前言进程间通信(简称IPC即InterProcess Communication),简单来说,就是两个进程之间的数据交换。在进程这一小节,讲过通过exit函数,使当前进程退出并向父进程传递退出状态,父进程再通过wait函数收集终止状态。不过这只能局限于父、子进程,且不能实现子进程运行过程中的数据交换。我们要用到IPC来实现任何两个进程之间的数据交换。进程间通信方式一般有以下几种:1、匿名管道(仅支持同一主机的IPC)2、命名管道:FIFO(仅支持同一主机的IPC)3、消息队列(仅支持同一主机的I原创 2021-09-18 23:34:13 · 150 阅读 · 0 评论 -
Linux 文件系统
前言Linux修改文件步骤其实和Windows系统相似,步骤如下:操作系统提供了一系列的API如Linux系统:打开 open读写 write/read光标定位 lseek关闭 close什么是文件标识符?文件描述符即索引,通过文件描述符来区分不同文件,并对相应文件进行操作。静态文件:存放在块设备中的文件系统中。动态文件:当我们去open打开一个文件时,linux内核做的操作包括:内核在进程中建立一个打开文件的数据结构,记录下我们打开的这个文件;内核在内存中申请一段内存,并且将静态文原创 2021-09-15 10:04:31 · 296 阅读 · 0 评论 -
Linux 进程(二)
前言fork创建一个子进程的一般目的有哪些呢?(1)一个父进程希望复制自己,使父、子进程同时执行不同的代码段。这在网络进程中是常见的—父进程等待客户端的服务请求。当这种请求到达时,父进程调用fork,使子进程处理此请求。父进程则继续等待下一个服务请求到达。(2)一个进程要执行不同的程序。这对shell是最常见的情况,这种情况下,子进程从fork返回后立即调用exec。上一节我们详细介绍了第一点,接下来我们介绍下第二点。我们用fork函数创建新进程后,经常在新进程调用exec函数去执行另外一个程原创 2021-09-17 20:10:17 · 142 阅读 · 0 评论 -
Linux 网络编程
网络编程网络编程即如何在程序中实现两台或多台计算机之间的通信。在进程间通信这一节,我们讲了管道、消息队列等IPC方式,不过只能限制在同一台主机上的进程间通信,满足不了不同主机之间的进程通信,而网络编程中的Socket正好可以满足。现在网络上各种各样的服务大多是基于Socket来完成通信的。套接字Socket:简单来说是IP地址与端口的结合协议组成与作用:在网络传输中用于唯一标识两个端点的链接。端点:包括(IP+Port)四个要素:客户端的地址、客户端的端口、服务器的地址、服务器端口。端口号的原创 2021-09-24 21:05:35 · 196 阅读 · 0 评论 -
Linux 进程间通信(二)
信号对于Linux来说,信号是软中断,许多重要的程序都需要处理信号。信号为Linux提供了一种处理异步事件的方法。比如,终端用户输入了ctrl+c到终端程序,会通过信号机制停止一个程序。信号其实也类似于单片机中的中断。Linux系统中信号有很多种,它们都有各自的名字和序号,可以用kill -l指令来查看。 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8原创 2021-09-20 20:31:16 · 137 阅读 · 0 评论