Linux
文章平均质量分 80
JIWilliams
这个作者很懒,什么都没留下…
展开
-
Linux创建虚拟块设备并格式化为文件系统
环境 为了方便学习文件系统的原理和原始数据的分析,需要创建虚拟块设备并格式化为ext4文件系统;Linux创建虚拟块设备 losetup命令 -a 显示所有已经使用的回环设备状态 -d 卸除回环设备 -f 寻找第一个未使用的回环设备 -e <加密选项> 启动加密编码[root@rhel6 ~]# losetup -f //查...转载 2019-09-03 15:30:05 · 2883 阅读 · 0 评论 -
Linux:非阻塞O_NONBLOCK与O_NDELAY的区别
O_NONBLOCK和O_NDELAY所产生的结果都是使I/O变成非阻塞模式(non-blocking),在读取不到数据或是写入缓冲区已满会马上return,而不会阻塞等待。它们的差别在于:在读操作时,如果读不到数据,O_NDELAY会使I/O函数马上返回0,但这又衍生出一个问题,因为读取到文件末尾(EOF)时返回的也是0,这样无法区分是哪种情况。因此,O_NONBLOCK就产生出来,它在读取...转载 2019-06-05 23:16:29 · 31655 阅读 · 1 评论 -
Linux:struct stat结构体
在使用这个结构体和方法时,需要引入:<sys/types.h><sys/stat.h>struct stat这个结构体是用来描述一个linux系统文件系统中的文件属性的结构。可以有两种方法来获取一个文件的属性:1、通过路径:int stat(const char *path, struct stat *struct_stat);int lst...转载 2019-06-05 23:10:04 · 1228 阅读 · 0 评论 -
Linux:Socket CAN开发官方说明文档
文档原名称:can.txt,位于 linux-3.2.0-m3352/Documentation/networking/can.txt。CAN 控制器局域网络协议族之 Readme 文件(aka Socket CAN)。另外在该文档的后边附加一个CAN收发测试程序,用于与下位机通信。目录1 概述 / 什么是 Socket CAN?2 目的 / 为什么要使用 socket API?3 so...转载 2019-03-04 09:55:20 · 2056 阅读 · 0 评论 -
Linux:Ubuntu系统解决不能上网问题
问题:Ubuntu系统不能上网,如何修改IP解决:(1)查询系统当前的ip地址配置信息,输入ifconfig命令进行查看,如果符合当前需要的ip配置,则不用修改(2)之前查询的ip信息没有设置或不符合当前需要,则输入vi /etc/network/interfaces,进入ip配置文件编辑(3)address ip地址gateway 网关netmask 子网掩码 ...原创 2019-03-03 10:16:36 · 17102 阅读 · 2 评论 -
Linux:解决U盘可以识别,但在/dev目录下只有sda,却无设备节点(sda1)的问题
问题:U盘接入,系统可以识别,但在/dev目录下只有sda(或其他),却无设备节点sda1(或其他)?解决:(1)查看U盘是否分区#fdisk /dev/sda /*进入fdisk命令操作空间*/#Command (m for help): m /*命令查看*/Command a...原创 2019-03-02 12:57:12 · 12932 阅读 · 0 评论 -
Linux CAN编程详解
最近写了个自认为不错的基于linux socket can程序,主要功能:程序具备全部CAN功能,包括CAN标准帧/扩展帧接收与发送、CAN总线错误判断、环回等功能 适用基于LINUX SOCKET机制实现的CAN接口,可用于嵌入式LINUX的CAN测试 程序采用标准LINUX命令行参数选项形式,接受用户参数现把源码进行分享功能介绍SOCKET CAN工具程序 – Ver1.0 ...转载 2019-03-02 08:13:29 · 2739 阅读 · 0 评论 -
linux下用time(NULL)函数和localtime()获取当前时间
time()函数所需头文件 #include <time.h> 函数原型 time_t time(time_t *timer) 函数用途 得到机器的日历时间或者设置日历时间 函数传入值 timer=NULL时,得到机器日历时间 timer=时间数值时,用于设置日历时间 函数返回值 time_t(time_t是一个long类型) ...转载 2019-03-01 11:00:45 · 1677 阅读 · 0 评论 -
正则表达式
字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。...转载 2018-12-28 09:47:18 · 150 阅读 · 0 评论 -
进程 vs 线程
我们介绍了多进程和多线程,这是实现多任务最常用的两种方式。现在,我们来讨论一下这两种方式的优缺点。首先,要实现多任务,通常我们会设计Master-Worker模式,Master负责分配任务,Worker负责执行任务,因此,多任务环境下,通常是一个Master,多个Worker。如果用多进程实现Master-Worker,主进程就是Master,其他进程就是Worker。如果用多线程实现...转载 2018-12-27 19:55:47 · 150 阅读 · 0 评论 -
Linux:mmap()函数
mmap函数是unix/linux下的系统调用,mmap系统调用并不是完全为了用于共享内存而设计的。它本身提供了不同于一般对普通文件的访问方式,进程可以像读写内存一样对普通文件的操作。而Posix或系统V的共享内存IPC则纯粹用于共享目的,当然mmap()实现共享内存也是其主要应用之一。mmap系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进程可以像访...转载 2019-06-06 00:20:16 · 1350 阅读 · 0 评论 -
Exynos4412 OV5640摄像头(二)—— 内核配置
摄像头OV5640内核配置内核里已经包含OV5640驱动代码,只需要将它编译进内核,并生成镜像zImage即可。内核配置步骤如下:1.如下图,进入“Device Drivers --->”。2.如下图,选中并进入“Multimedia support --->”。3.如下图,选中并进入“Video capture adapters --->”。...原创 2019-06-08 16:30:26 · 1978 阅读 · 1 评论 -
Exynos4412 OV5640摄像头(一)—— 驱动
以下是迅为4412开发板提供的OV5640摄像头驱动,将OV5640注册为I2C设备,提供设备节点/dev/video0。驱动下载:https://download.csdn.net/download/q1449516487/11231317详情参考代码:#include <linux/init.h>#include <linux/module.h>#in...原创 2019-06-08 16:20:58 · 7341 阅读 · 2 评论 -
在vim上实现跳转到定义处的方法
首先要安装了ctags,在程序的根目录下运行ctags -R,生成tags文件(当前版本vim自带ctags)。然后在编辑程序时按Ctrl+]就会跳转到当前光标所在东西的定义处,也可以通过 ctrl+鼠标单击实现跳转。若有多个tag,直接输入tags标识,回车进行选择。按Ctrl+o即可跳回。不过,当修改过代码后,需要重新生成tags。...转载 2019-09-02 11:42:54 · 446 阅读 · 0 评论 -
github上的嵌入式开源代码库
github 上部分开源代码库的地址,主要是嵌入式方向,包含其他的一些算法比如slam等一些知识库的地址,在学习中不断积累,有些好的会继续补充到这里来。项目名称 地址 备注 seeed-studio https://github.com/Seeed-Studio seeed-studio的代码库,矽递科技的产品主要面向物联网IOT领域 AliOS-Things...转载 2019-08-30 10:54:18 · 1719 阅读 · 0 评论 -
buildroot配置实例
一、网址官网:https://buildroot.org/下载地址:https://buildroot.org/download.html二、使用解压后,执行makemenuconfig1.Target options (目标板配置)Target Architecture:目标架构,这里选择 ARM(little endian),...转载 2019-08-26 14:54:17 · 713 阅读 · 0 评论 -
Linux下的程序调试方法汇总
搞电子都知道,电路不是焊接出来的,是调试出来的。程序员也一定认同,程序不是写出来的,是调试出来的。那么调试工具就显得尤为重要,linux作为笔者重要的开发平台,在linux中讨论调试工具主要是为那些入门者提供一些帮助。调试工具能让我们能够监测、控制和纠正正在运行的程序。我们在运行一些程序的时候,可能被卡住或出现错误,或者运行过程或结果,没能如我们预期,此时,最迫切需要明白究竟发生了什么。为了修复...转载 2019-07-05 15:22:21 · 704 阅读 · 0 评论 -
gdb基本命令(非常详细)
gdb基本命令本文介绍使用gdb调试程序的常用命令。主要内容:[简介][举例][其他][简介]=============GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。同时GDB也具有例如ddd这样的图形化的调试端。一般来说,GDB主要完成下...转载 2019-07-10 13:59:05 · 32620 阅读 · 0 评论 -
SRAM SROM DRAM DROM DDR NAND FLASH EMMC的区别
SRAM SROM DRAM DROM DDR NAND FLASH EMMC的区别RAM(Random Access Memory)的全名为随机存取记忆体,它相当于PC机上的移动存储,用来存储和保存数据的。它在任何时候都可以读写,RAM通常是作为操作系统或其他正在运行程序的临时存储介质(可称作系统内存)。不过,当电源关闭时RAM不能保留数据,如果需要保存数据,就必须把它们写入到一个长期的存...转载 2019-07-03 15:18:03 · 5964 阅读 · 0 评论 -
通过gdbserver及arm-linux-gdb远程调试开发板上的程序
一.前言嵌入式Linux系统中,应用开发过程中,很多情况下,用户需要对一个应用程序进行反复调试,特别是复杂的程序。采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采用gdb+gdbserver的方式进行调试。 Gdbserver在目标系统中运行,gdb则在宿主机上运行。目标系统必须包括gdbserver程序,宿主机也必须安装gdb程序。在此我们还不能直接采用...原创 2019-07-08 10:23:45 · 568 阅读 · 0 评论 -
ubuntu如何实现双屏显示
在ubuntu系统下使用xrandr实现双屏幕显示:一.首先直接运行xrandr命令,查看设备的相关信息:运行之后会显示当前连接设备的屏幕信息,如下图,LVDS和VGA-0,而HDMI屏幕为disconnect,意为没有连接:二.设置双屏幕显示:(1)打开外接显示器,双屏幕显示相同的内容--克隆,(auto为最高分辨率)CODE: xrandr --output...转载 2019-07-08 09:04:15 · 3003 阅读 · 0 评论 -
Exynos4412 OV5640摄像头(三)—— 应用程序
内核配置完并且烧录镜像后,就可以编写应用程序了。这里使用迅为提供的测试程序,该程序的功能是通过OV5640录制一段50帧(大小可设置)的视频,并生成out.yuv视频文件,可以通过yuv播放器或二进制编辑器进行验证。该程序调用了V4L2,那什么是V4L2呢?V4L2为linux下视频设备程序提供了一套接口规范。包括一套数据结构和底层V4L2驱动接口。只能在linux下使用。它使程序有发现设备...原创 2019-06-08 16:59:26 · 2086 阅读 · 0 评论 -
同步IO和异步IO的概念
IO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口。比如你打开浏览器,访问新浪首页,浏览器这个程序就需要通过网络IO获取新浪的网页。浏览器首先会发送数据给新浪服务器,告诉它我想要首页的HTML,这个动作是往外发数据,叫Output,随后新浪服务器把网页发过来,...转载 2018-12-26 17:59:09 · 1308 阅读 · 0 评论 -
Linux小游戏——单机掷骰子
一、前言最近在阅读《unix-linux编程实践教程》,这本书很适合学习完Linux基础编程后想码点东西实践的朋友。它主要是通过带领读者学习编写Linux系统中常用的命令(ls、more等)来巩固基础知识。本人从中收获颇丰,在这里推荐给各位想学习Linux系统编程的朋友。下载路径:https://download.csdn.net/download/q1449516487/10724621...原创 2018-10-27 11:36:57 · 2601 阅读 · 2 评论 -
Linux进程间通信——管道
一、现在在Linux中使用较多的进程间通信方式主要有以下几种:(1)管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道除具有管道所觉有的功能外,它还允许无亲缘关系进程间的通信。(2)信号(Signal):信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效果上可...原创 2018-08-07 13:12:23 · 897 阅读 · 0 评论 -
Linux进程控制开发——进程控制编程
1.fork()(1)函数说明 fork()函数用于在已存在的进程中创建一个新进程。新进程称为子进程,而原进程称为父进程。子进程可以看做父进程的复制品,继承了父进程的整个地址空间,包括进程上下文、代码段、进程堆栈、内存信息、打开的文件描述符、信号控制设定、进程优先级、进程组号、当前工作目录、根目录、资源限制和控制终端等,而子进程独有的只有它的进程号、资源使用和计时器等。for...原创 2018-08-07 00:51:51 · 363 阅读 · 0 评论 -
Linux进程控制开发——进程概述
一、进程的基本概念1.进程的定义 进程是一个程序的一次执行的过程,同时也是资源分配的最小单元。它和程序是有本质区别的,程序是静态的,它是一些保存在磁盘上的指令的有序集合,没有任何执行的概念;而进程是一个动态的概念,它是程序执行的过程,包括动态创建、调度和消亡的整个过程。它是程序执行和资源管理的最小单元。因此,对系统而言,当用户在系统中键入命令执行一个程序的时候,它将启动一个进...原创 2018-08-06 17:56:34 · 674 阅读 · 0 评论 -
Linux文件IO编程——底层文件I/O操作
一、Linux中文件及文件描述符概述 在Linux中对目录和设备的操作都等同于文件的操作,Linux中文件主要分为4种:普通文件、目录文件、链接文件和设备文件。 内核通过文件描述符来区分和引用特定的文件。对Linux而言,所有设备和文件的操作都是使用文件描述符来进行的。文件描述符是一个非负的整数,它是一个索引值,并指向在内核中每个进程打开文件的记录表。当打开一个现存...原创 2018-08-06 14:54:00 · 3148 阅读 · 0 评论 -
Linux文件IO编程——系统调用及用户编程接口(API)
1.系统调用 所谓系统调用指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务。例如用户可以通过进程控制相关的系统调用来创建进程、实现进程调度、进程管理等。 Linux为了更好地保护内核空间,将程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态),它们分别运行在不同的级别上,在逻辑上是相互隔离的。...原创 2018-08-05 23:55:07 · 784 阅读 · 0 评论 -
Linux文件系统——NFS
1.简介(1)NFS为Netword File System的简称,是基于UDP/IP协议的应用。(2)NFS的最大功能就是可以通过网络让不同的机器,不同的操作系统彼此共享文件,可以通过NFS挂载远程主机的目录,访问该目录就想访问本地目录一样,所以也可以简单地将它看做是一个文件服务器。(3)通过NFS服务,我们可以实现在线调试文件系统或应用程序,而不用像传统的方式生成文件系统镜像。通过...原创 2018-08-05 16:19:58 · 226 阅读 · 0 评论 -
Linux服务配置——tftp
1.简介tftp是简单文件传输协议。它分为客户端和服务器端两种,首先在宿主机上开启tftp服务器端服务,设置好tftp的跟目录内容,接着在目标板上开启tftp的客户端程序。这样把目标板和宿主机用直线相连之后,就可以通过tftp协议传输可执行文件了。2.tftp服务配置(1)安装xinetd:sudo apt-get install xinetd(2)安装tftp和tftpd:sud...原创 2018-08-05 14:07:33 · 904 阅读 · 0 评论 -
Linux工程管理器——make
1.简介所谓工程管理器,是用于管理较多的文件。当项目文件很庞大时,修改其中的几个文件,gcc不得不把这些文件重新编译一边。而make工程管理器的作用正是为了解决这个问题,它能够根据文件的时间戳自动发现更新过的文件而减少编译的工作量。2.Makefile基本结构Makefile是make读入的唯一配置文件。在一个makefile中通常包含如下内容:(1)需要由make工具创建的目标体...原创 2018-08-05 13:15:02 · 924 阅读 · 0 评论 -
Linux编译器——gcc
1.简介GNU CC(简称gcc)是GNU项目中符合ANSI C标准的编译系统,能够编C、C++、Object C、java、Fortran、Pascal、Modula-3和Ada等多种语言,而且gcc是一个交叉平台编译器,能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译。gcc所支持后缀名解释 后缀名 所对应的语言 后缀名 ...原创 2018-08-05 12:03:50 · 513 阅读 · 0 评论 -
Linux进程间通信——信号
一、信号概述 信号是在软件层面上对中断机制的一种模拟,是一种异步通信方式。信号可以直接进行用户空间进程和内核空间进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件。它可以再任何时候发给某一进程,而无需知道该进程的状态。如果该进程当前并未处于执行态,则该信号就由内核保存起来,直到该进程恢复执行再传递给它为止;如果一个信号被进程设置为阻塞,则该信号的传递被延迟,...原创 2018-08-07 20:48:37 · 353 阅读 · 0 评论 -
Linux进程间通信——信号量
一、信号量概述 Linux是一个多进程操作系统,因此会存在进程间争夺有限资源(如硬件资源和软件资源)的情况,这种情况称为竞态,进程之间的关系称为互斥关系。 信号量是用来解决进程之间的同步与互斥问题的一种进程之间通信机制,包括一个称为信号量的变量和在该信号量下等待资源的进程等待队列,以及堆信号量进行的两个原子操作(PV操作)。其中信号量对应于某一种资源,取一个非负...原创 2018-08-07 23:28:31 · 339 阅读 · 0 评论 -
Linux调试工具——gdb
1.简介gdb调试工具是一款GNU开发组织并发布的UNIX/Linux下的程序调试工具。虽然,它没有图形化的友好界面,但是它强大的功能也是足以与微软Visual Studio等工具媲美的。2.gdb使用流程(1)首先编辑一段c代码,如下所示:/*test.c*/#include <stdio.h>int sum(int );int main(){ in...原创 2018-11-09 17:03:55 · 734 阅读 · 0 评论 -
Linux常用命令大全
作者:Number_oneEngineer 来源:CSDN 原文:https://blog.csdn.net/Number_oneEngineer/article/details/83215694 版权声明:本文为博主原创文章,转载请附上博文链接!系统信息arch 显示机器的处理器架构(1)uname -m 显示机器的处理器架构(2)uname -r 显示正在使用的内核版本dmi...转载 2018-11-12 09:34:29 · 171 阅读 · 0 评论 -
linux开发工程师主要是干什么的?
转载自:http://emb.hqyj.com/linux/10328.html作者:清华远见在新手眼里,大多数都不知道linux开发工程师主要是干什么的。其实linux开发工程师的主要工作内容有很多,需要学习的知识点也挺多的。学习这些东西以后,就可以做很多事情了。下面来归纳一下,linux开发工程师主要会干什么!一:C语言:嵌入式Linux开发工程师的学习需要具备一定的C语言基础...转载 2018-11-14 16:17:50 · 16002 阅读 · 2 评论 -
Linux进程间通信——消息队列
一、消息队列概述 消息队列是一些消息的列表。用户可以从消息队列中添加消息和读取消息等。消息队列具有一定的FIFO特性,但是它可以实现消息的随机查询,比FIFO具有更大的优势。这些消息存在于内核中,由“队列ID”标识。二、消息队列的应用(1)函数说明 消息队列的实现包括创建或打开消息队列、添加消息、读取消息和控制消息队列:(1) msgget()创建...原创 2018-08-08 12:44:43 · 377 阅读 · 0 评论 -
Linux进程间通信——共享内存
一、共享内存概述 共享内存是一种最为高效的进程间通信方式。内核为进程提供一块内存区,每个进程可以将其映射到自己的私有空间,并且可以直接对内存进行读写,因此进程不需要对数据进行复制。当一个进程对数据进行修改时,其他进程可以立即响应。但是由于共享内存的共享性质,因此需要互斥锁和信号量机制来进行同步。二、共享内存的应用1.函数说明 共享内存的实现可分为三步:...原创 2018-08-08 01:27:40 · 968 阅读 · 0 评论