- 博客(20)
- 资源 (5)
- 收藏
- 关注
原创 标准IO库介绍
1、标准IO和文件IO有什么区别(1)看起来使用时都是函数,但是:标准IO是C库函数,而文件IO是linux系统的API(2)C语言库函数是由API封装而来的。库函数内部也是通过调用API来完成操作的,但是库函数因为多了一层封装,所以比API要更加好用一些。(3)库函数比API还有一个优势就是:API在不同的操作系统之间是不能通用的,但是C库函数在不同操作系统中几乎是一样的。所以C库函数具有可移植...
2018-07-11 09:16:15
1711
原创 fcntl函数介绍
1、fcntl的原型和作用(1)fcntl函数是一个多功能文件管理的工具箱,接收2个参数+1个变参。第一个参数是fd表示要操作哪个文件,第二个参数是cmd表示要进行哪个命令操作。变参是用来传递参数的,要配合cmd来使用。(2)cmd的样子类似于F_XXX,不同的cmd具有不同的功能。学习时没必要去把所有的cmd的含义都弄清楚(也记不住),只需要弄明白一个作为案例,搞清楚它怎么看怎么用就行了,其他的...
2018-07-11 09:13:15
2524
原创 文件描述符的复制
1、dup和dup2函数介绍2、使用dup进行文件描述符复制(1)dup系统调用对fd进行复制,会返回一个新的文件描述符(譬如原来的fd是3,返回的就是4)(2)dup系统调用有一个特点,就是自己不能指定复制后得到的fd的数字是多少,而是由操作系统内部自动分配的,分配的原则遵守fd分配的原则。(3)dup返回的fd和原来的oldfd都指向oldfd打开的那个动态文件,操作这两个fd实际操作的都是o...
2018-07-11 09:12:25
709
原创 文件共享的实现方式
1、什么是文件共享(1)文件共享就是同一个文件(同一个文件指的是同一个inode,同一个pathname)被多个独立的读写体(几乎可以理解为多个文件描述符)去同时(一个打开尚未关闭的同时另一个去操作)操作。(2)文件共享的意义有很多:譬如我们可以通过文件共享来实现多线程同时操作同一个大文件,以减少文件读写时间,提升效率。2、文件共享的3种实现方式(1)文件共享的核心就是怎么弄出来多个文件描述符指向...
2018-07-11 09:09:49
4537
1
原创 多次打开同一文件与O_APPEND
1、重复打开同一文件读取(1)一个进程中两次打开同一个文件,然后分别读取,看结果会怎么样(2)结果无非2种情况:一种是fd1和fd2分别读,第二种是接续读。经过实验验证,证明了结果是fd1和fd2分别读。(3)分别读说明:我们使用open两次打开同一个文件时,fd1和fd2所对应的文件指针是不同的2个独立的指针。文件指针是包含在动态文件的文件管理表中的,所以可以看出linux系统的进程中不同fd对...
2018-07-11 09:06:34
3670
原创 lseek详解
1、lseek函数介绍(1)文件指针:当我们要对一个文件进行读写时,一定需要先打开这个文件,所以我们读写的所有文件都是动态文件。动态文件在内存中的形态就是文件流的形式。(2)文件流很长,里面有很多个字节。那我们当前正在操作的是哪个位置?GUI模式下的软件用光标来标识这个当前正在操作的位置,这是给人看的。(3)在动态文件中,我们会通过文件指针来表征这个正在操作的位置。所谓文件指针,就是我们文件管理表...
2018-07-11 09:00:27
3592
原创 linux系统如何管理文件
1、硬盘中的静态文件和inode(i节点)(1)文件平时都在存放在硬盘中的,硬盘中存储的文件以一种固定的形式存放的,我们叫静态文件。(2)一块硬盘中可以分为两大区域:一个是硬盘内容管理表项,另一个是真正存储内容的区域。操作系统访问硬盘时是先去读取硬盘内容管理表,从中找到我们要访问的那个文件的扇区级别的信息,然后再用这个信息去查询真正存储内容的区域,最后得到我们要的文件。(3)操作系统最初拿到的信息...
2018-07-11 08:56:46
185
原创 文件读写的一些细节
1、errno和perror(1)errno就是error number,意思就是错误号码。linux系统中对各种常见错误做了个编号,当函数执行错误时,函数会返回一个特定的errno编号来告诉我们这个函数到底哪里错了。(2)errno是由OS来维护的一个全局变量,任何OS内部函数都可以通过设置errno来告诉上层调用者究竟刚才发生了一个什么错误。(3)errno本身实质是一个int类型的数字,每个...
2018-07-06 14:33:51
305
原创 open函数的flag详解2
1、打开不存在的文件时:O_CREAT、O_EXCL(1)思考:当我们去打开一个并不存在的文件时会怎样?当我们open打开一个文件时如果这个文件名不存在则会打开文件错误。(2)vi或者windows下的notepad++,都可以直接打开一个尚未存在的文件。(3)open的flag O_CREAT就是为了应对这种打开一个并不存在的文件的。O_CREAT就表示我们当前打开的文件并不存在,我们是要去创建...
2018-07-06 14:29:37
1144
原创 open函数的flag详解1
1、读写权限:O_RDONLY O_WRONLY O_RDWR (1)linux中文件有读写权限,我们在open打开文件时也可以附带一定的权限说明(譬如O_RDONLY就表示以只读方式打开,O_WRONLY表示以只写方式打开,O_RDWR表示以可读可写方式打开) (2)当我们附带了权限后,打开的文件就只能按照这种权限来操作。2、打开存在并有内容的文件时:O_APPEND、O_TRUNC...
2018-07-06 14:19:25
1884
原创 一个简单的文件读写实例
1.打开文件与关闭文件 (1)linux中的文件描述符fd的合法范围是0或者一个正正数,不可能是一个负数。 (2)open返回的fd程序必须记录好,以后向这个文件的所有操作都要靠这个fd去对应这个文件,最后关闭文件时也需要fd去指定关闭这个文件。如果在我们关闭文件前fd丢掉了那就惨了,这个文件没法关闭了也没法读写了。2.实时查man手册 (1)当我们写应用程序时,很多API原型都...
2018-07-06 14:15:50
611
原创 文件操作的主要接口API
(1)文件描述符其实实质是一个数字,这个数字在一个进程中表示一个特定的含义,当我们open打开一个文件时,操作系统在内存中构建了一些数据结构来表示这个动态文件,然后返回给应用程序一个数字作为文件描述符,这个数字就和我们内存中维护这个动态文件的这些数据结构挂钩绑定上了,以后我们应用程序如果要操作这一个动态文件,只需要用这个文件描述符进行区分。(2)一句话讲清楚文件描述符:文件描述符就是用来区分一个程序打开的多个文件的。(3)文件描述符的作用域就是当前进程,出了当前进程这个文件描述符就没有意义了
2018-07-06 14:06:24
1237
原创 在 Beagleboard-x15 上配置 spi 和 GPIO
环境与条件 硬件:Beagleboard-x15内核版本:linux 4.9.69-ti-rt-r85其它:sd 卡、杜邦线、示波器、引脚扩展器Enable SPI and GPIO in BeagleBoard-X15一、准备 u-boot 和 kernel1.下载 u-boot 并编译下载:~/git clone https://github.com/u-boot/u-bootcd u-boo...
2018-06-05 15:49:25
1210
4
原创 BeagleBoard-x15烧录emmc
主要有两份参考资料:1)https://elinux.org/BeagleBoardUbuntu#eMMC:_BeagleBoard-X152)http://processors.wiki.ti.com/index.php/Sitara_Linux_Program_the_eMMC_on_Beaglebone_Black
2018-04-03 14:43:11
708
原创 NFS(共享文件)协议和服务
NFS协议是一种用于文件共享的协议,它可以使得主机之间进行文件的共享。客户端可以像在本机上的文件一样操作远程主机的文件。NFS协议最初仅支持UDP协议,目前最新版本的NFS可以支持UDP和TCP协议,不过UDP协议的速度会更快。一、安装NFS服务器和客户端 NFS协议是一个十分简单的协议,它本身没有提供信息传输的协议和功能。之所以NFS能够让主机之间通过网络进行资料共享,这是因为NF...
2018-04-03 11:52:37
18708
翻译 搭建BeagleBoard-x15+linux4.9+ubuntu16.04
1.ARM交叉编译工具链:GCC1)64bit版本的:~/wget -c https://releases.linaro.org/components/toolchain/binaries/6.4-2017.11/arm-linux-gnueabihf/gcc-linaro-6.4.1-2017.11-x86_64_arm-linux-gnueabihf.tar.xztar xf gcc-lina...
2018-03-28 17:39:35
2302
2
原创 对AM572x进行引脚复用使能UART1
前提:因为需要把BeagleBoard-x15这个开发板当做OpenPLC的Server端,与IO板之间是进行UART通信,所以我这里使用的是UART1(ttyS0)这个串口,但是该引脚默认当成GPIO口,故需要修改dts文件使能该串口。另外,UART3(ttyS2)默认是打开的,已当成串口调试口,可连接开发板与PC端Linux上用minicom进行调试。开发环境:1)开发板:BeagleBoar...
2018-03-23 09:51:37
2321
原创 基于Linux4.9构建OpenPLC运行环境
一、开发环境board:BeagleBoard-X15开发板kernel:linux 4.9.69-ti-rt-r85filesystem:ubuntu 16.04OpenPLC:v2二、安装 之前已经做过OpenPLC的项目,但是后来因为一些事搁置了,现在需要给同事搭个openPLC开发环境,特此记录下。openPLC官网:http://www.openplcproject.com/1.选...
2018-03-22 15:37:29
14124
1
转载 WIN7 +Qt5.6.2+opencv3.1.0+Cmake3.7.0编译环境搭建
前言:今年大三了,所以想毕业设计做基于S5PV210上的人脸识别的项目看了很多相关的帖子和文章 首先是环境的搭建就花费了我许多的时间,也许是人比较笨也不细心,所以前后花了几天的时间,从cmake编译opencv到qt上测试都遇到不少的问题所以我现在来总结下我的整个配置过程。在此 ,首先主要感谢作者 http://blog.csdn.net/u014695839/article/deta
2016-11-23 13:46:51
1810
2
转载 LDR 和MOV 指令区别
转载自:本文 http://www.cnblogs.com/xmphoenix/p/4370081.html 感谢作者!ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。比如想把数据从内存中某处读取到寄存器中,只能使用ldr比如:ldr r0, 0x12345678就是把0x12345678这个地址中的值存放到r0
2016-03-19 11:01:19
489
deamon守护进程介绍
2018-07-23
am5728配置SPI和GPIO
2018-06-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人