自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zjy900507的博客

联系方式qq:175633121。介绍:zjy,已婚,育有一女。自动化专业,曾系统自学嵌入式,qnx,unix,Linux操作系统。曾从事嵌入式ARM-Linux系统开发和移植,网络协议栈。对于网络通讯编程,驱动程序编写,shell和phyon精通。

  • 博客(125)
  • 资源 (6)
  • 收藏
  • 关注

转载 Linux进程间通信(IPC)编程实践(七)共享内存的使用-System V共享内存(API)

上一篇博文提到的系统调用mmap通过映射一个普通文件实现共享内存。那么本文中介绍的System V 共享内存则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件。执行过程是先调用shmget,再调用shmat。对于每个共享的内存区,内核维护如下的信息结构,定义在<sys/shm.h>头文件中。[cpp] view ...

2018-04-27 13:07:57 147

转载 Linux进程间通信(IPC)编程实践(六)共享内存的使用-mmap

共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据(如图)。共享内存和其他进程间通信方式的比较:用管道或者消息队列传递数据:使用共享内存传递数据:共享内存生成之后,传递数据并不需要再走Linux内核,共享内存允许两个或多个进程共享一个给定的存储区域,数据并不需要在多个进程之间进行复...

2018-04-27 12:14:57 205

转载 Linux进程间通信(IPC)编程实践(五)消息队列实现回射客户/服务器

在我的上一篇博文中,讲解了关于消息队列的msgsnd和msgrcv函数的使用,这里我们试着来实现一个回射客户/服务器。基本框架如下:对于客户端: 用进程的PID进行区分类型,发往服务器的类型(mtype)总是1,包含自己的PID,还有一行消息。对于回射服务器端: 创建一个消息队列,指定键值是1234,服务器不停地接受类型是1的消息,解析出数据部分的pid(mtext的前四个字节)——回射即可。注意...

2018-04-26 22:49:05 189

转载 Linux进程间通信(IPC)编程实践(四) 详解System V消息队列(2)(msgsnd & msgrcv)

本文主要介绍消息队列发送/接收消息的API:msgsnd函数[cpp] view plaincopyint msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);   参数   msgid: 由msgget函数返回的消息队列标识码, 也可以是通过ipcs命令查询出来的一个已经存在的消息队列的ID号   msgp:是一个指针,指针...

2018-04-26 22:41:57 287

转载 Linux进程间通信(IPC)编程实践(三) 详解System V消息队列(1)

消息队列简介消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法(本机);每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值。消息队列也有管道一样的不足: (1)每个消息的最长字节数的上限(MSGMAX); (2)系统中消息队列的总条数也有一个上限(MSGMNI); (3)每个消息队列所能够保存的总字节数是有上限的(MSGMNB) . 消息队列与管道的区别:最主要的区...

2018-04-26 22:29:20 209

转载 Linux进程间通信(IPC)编程实践(二) FIFO命名管道

在前一篇文章中,我们讲解了如何使用匿名管道来在进程之间传递数据,同时也看到了这个方式的一个缺陷,就是这些进程都由一个共同的祖先进程启动,这给我们在不相关的的进程之间交换数据带来了不方便。这里将会介绍进程的另一种通信方式——命名管道,来解决不相关进程间的通信问题。什么是命名管道    命名管道也被称为FIFO文件,它是一种特殊类型的文件,它在文件系统中以文件名的形式存在,但是它的行为却和之前所讲的没...

2018-04-26 22:28:50 116

转载 Linux进程间通信(IPC)编程实践(一) 基本概念和匿名管道

       进程间通信至少可以通过传送打开文件来实现,不同的进程通过一个或多个文件来传递信息,事实上,在很多应用系统里,都使用了这种方法。但一般说来, 进程间通信(IPC:InterProcess Communication)不包括这种似乎比较低级的通信方法。Unix系统中实现进程间通信的方法很多,而且不幸的是,极少方法能在所有的Unix系 统中进行移植(唯一一种是半双工的管道,这也是最原始的一...

2018-04-26 10:31:37 145

转载 Linux进程间通信(IPC)编程实践(0) 进程间通信简述和PV原语

进程的同步与互斥   进程同步: 多个进程需要相互配合共同完成一项任务。   进程互斥: 由于各进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥;系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源, 而在进程中涉及到互斥资源的程序段叫临界区.对于多个进程的并发状态,进程是基于CPU时间片轮转的。我们可以从下面司机和售票员的关系...

2018-04-26 09:38:18 253

转载 linux配置本地yum源方法

示例:文件名字为以.repo扩展名结尾[local_yum]name=local_yumbaseurl=file:///mnt/cdromenabled=1gpgckeck=1gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7

2018-04-25 16:40:31 395

转载 根文件系统及Busybox简介

目录1.根文件系统简介...22.Busybox简介...22.1Busybox简介...22.2Busybox目录结构简介...22.3init进程简介...33.构建自己的根文件系统...93.1编译Busybox.93.2向Busybox中添加新命令...194.附录...264.1Busybox实现的简单分析...264.2Busybox配置选项说明...27               ...

2018-04-24 09:29:04 451

转载 Linux 文件系统与设备文件系统 (二)—— sysfs 文件系统与Linux设备模型

      提到 sysfs 文件系统 ,必须先需要了解的是Linux设备模型,什么是Linux设备模型呢?一、Linux 设备模型1、设备模型概述     从2.6版本开始,Linux开发团队便为内核建立起一个统一的设备模型。在以前的内核中没有独立的数据结构用来让内核获得系统整体配合的信息。尽管缺乏这些信息,在多数情况下内核还是能正常工作的。然而,随着拓扑结构越来越复杂,以及要支持诸如电源管理等...

2018-04-24 09:28:49 251

转载 Linux 下 NFS服务的搭建

NFS是Network File System的简写,即网络文件系统。   网络文件系统是许多操作系统都支持的文件系统中的一种,也被成为NFS。NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户可以像访问本地文件一样访问远端系统上的文件。   NFS所提供的共享文件服务是建议在高度信任的基础上的,所以,向其他用户释放共享资源之前,一定要确保对方的可靠性。   NFS的...

2018-04-24 09:28:36 386

转载 Socket编程(4)TCP粘包问题及解决方案

转载:http://www.cnblogs.com/QG-whz/p/5537447.html① TCP是个流协议,它存在粘包问题TCP是一个基于字节流的传输服务,"流"意味着TCP所传输的数据是没有边界的。这不同于UDP提供基于消息的传输服务,其传输的数据是有边界的。TCP的发送方无法保证对等方每次接收到的是一个完整的数据包。主机A向主机B发送两个数据包,主机B的接收情况可能是产生粘包问题的原因...

2018-04-24 09:28:10 153

转载 Socket编程实践(3) 多连接服务器实现与简单P2P聊天程序例程

Socket编程实践(3) 多连接服务器实现与简单P2P聊天程序例程阅读目录SO_REUSEADDR选项处理多客户的服务器实现一个P2P简单聊天程序 正文回到顶部SO_REUSEADDR选项在上一篇文章的最后我们贴出了一个简单的C/S通信的例程。在该例程序中,使用"Ctrl+c"结束通信后,服务器是无法立即重启的,如果尝试重启服务器,将被告知:bind: Address already in us...

2018-04-24 09:28:05 304

转载 Socket编程实践(2) Socket API 与 简单例程

阅读目录socket()函数bind() 函数listen()函数accept()函数connect()函数一个简单的socket 通信例程 正文在本篇文章中,先介绍一下Socket编程的一些API,然后利用这些API实现一个客户端-服务器模型的一个简单通信例程。该例子中,服务器接收到客户端的信息后,将信息重新发送给客户端。回到顶部socket()函数socket()函数用于创建一个套接字。这就好...

2018-04-24 09:27:58 569

转载 Socket编程实践(1) 基本概念

阅读目录1. 什么是socket2. IPV4套接口地址结构3. 网络字节序4. 字节序转换函数5. 地址转换函数6. 套接字类型 正文回到顶部1. 什么是socketsocket可以看成是用户进程与内核网络协议栈的编程接口。TCP/IP协议的底层部分已经被内核实现了,而应用层是用户需要实现的,这部分程序工作在用户空间。用户空间的程序需要通过套接字来访问内核网络协议栈。套接口是全双工的通信,它不仅...

2018-04-24 09:27:53 134

转载 Linux下的socket编程实践(十一) 基本UDP编程细节

在我的这两篇博客中,简单介绍并实现了基于UDP(TCP)的windows(UNIX下流程基本一致)下的服务端和客户端的程序,本文继续探讨关于UDP编程的一些细节。http://blog.csdn.net/nk_test/article/details/47733307http://blog.csdn.net/nk_test/article/details/47756381下图是一个简单的UDP客户...

2018-04-24 09:27:44 2282

转载 浅谈网络I/O多路复用模型 select & poll & epoll

我们首先需要知道select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的。select的基本用法:http://blog.csdn.ne...

2018-04-24 09:27:36 145

转载 Ubuntu 的软件管理工具

 Ubuntu 软件管理的工具使用方法  使用Ubuntu的第一步就是应该学会如何管理软件。以下?原几种方法是目前我用到的,整理一下,怕时间久了就会忘记。一、APT命令安装  APT全称Advanced Packaging Tool,可以自动下载,配置,安装二进制或者源代码格式的软件包,因此简化了Linux系统上管理软件的过程。现在Debian和其衍生发行版(如 Ubuntu)中都包含了APT。A...

2018-04-24 09:27:20 3671

转载 Linux下的socket编程实践(十) epoll实现高并发的原理及其使用

在 linux 没有实现 epoll 事件驱动机制之前,我们一般选择用 selec t或者 poll 等IO多路复用的方法来实现并发服务程序(详见此链接)。在大数据、高并发、集群等一些名词唱得火热之年代,select 和 poll的用武之地越来越有限,风头已经被 epoll 占尽。 本文便来介绍 epoll 的实现机制,并通过对比其不同的实现机制,真正理解为何 epoll 能实现高并发。Epoll...

2018-04-23 10:28:44 1208

转载 Linux下的socket编程实践(九) Select的限制和poll(并发的初步知识)

select的限制用select实现的并发服务器,能达到的并发数一般受两方面限制:1)一个进程能打开的最大文件描述符限制。这可以通过调整内核参数来改变。可以通过ulimit -n(number)来调整或者使用setrlimit函数设置(需要root权限),但一个系统所能打开的最大数也是有限的,跟内存大小有关,可以通过cat /proc/sys/fs/file-max 查看。2)select中的fd...

2018-04-23 10:27:48 359

转载 Linux下的socket编程实践(八) I/O多路复用技术之select模型

在进入今天的select模型的主题之前,我们先来简单了解一下五种I/O模型:(1)阻塞I/O(默认采用这种方式)在服务端socket编程中,我们常见的accpet函数、recv函数都是采取的阻塞形式。以recv为例: 当上层应用App调用recv系统调用时,如果对等方没有发送数据(Linux内核缓冲区中没有数据),上层应用Application1将阻塞;当对等方发送了数据,Linux内核recv端...

2018-04-23 10:26:50 277

转载 Linux下的socket编程实践(七)Unix域协议和socketpair传递文件描述符

UNIX域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务器通信的一种方法,所用API与在不同主机上执行客户/服务器通信所使用的API相同。UNIX域协议可以视为IPC方法之一,Unix域协议主要用在同一台机子(仅能用于本地进程间的通信)的不同进程之间传递套接字。为什么不用TCP或者UDP套接字呢?1)在同一台主机上, UNIX域套接字更有效率, 几乎是TCP的两倍(由于UNIX域套接字...

2018-04-23 10:25:43 357

转载 Linux下的socket编程实践(六)设置套接字I/O超时的方案

(一)使用alarm 函数设置超时[cpp] view plain copy#include <unistd.h>   unsigned int alarm(unsigned int seconds);   它的主要功能是设置信号传送闹钟。信号SIGALRM在经过seconds指定的秒数后传送给目前的进程,如果在定时未完成的时间内再次调用了alarm函数,则后一次定时器设置将覆盖前面的...

2018-04-23 10:18:39 261

转载 Linux下的socket编程实践(五)TCP的粘包问题和常用解决方案

TCP粘包问题的产生由于TCP协议是基于字节流并且无边界的传输协议, 因此很有可能产生粘包问题。此外,发送方引起的粘包是由TCP协议本身造成的,TCP为提高传输效率,发送方往往要收集到足够多的数据后才发送一个TCP段。若连续几次需要send的数据都很少,通常TCP会根据优化算法把这些数据合成一个TCP段后一次发送出去,但是接收方并不知道要一次接收多少字节的数据,这样接收方就收到了粘包数据。具体可以...

2018-04-23 10:17:49 697

转载 Linux下的socket编程实践(四)TCP服务端优化和常见函数

并发下的僵尸进程处理只有一个进程连接的时候,我们可以使用以下两种方法处理僵尸进程:1)通过忽略SIGCHLD信号,避免僵尸进程    在server端代码中添加    signal(SIGCHLD, SIG_IGN);2)通过wait/waitpid方法,解决僵尸进程[cpp] view plain copysignal(SIGCHLD,onSignalCatch);        void on...

2018-04-23 10:17:01 112

转载 Linux下的socket编程实践(三)端口复用和 P2P多进程服务器

Socket端口复用先说为什么要使用socket端口复用?如果你遇到过这样的问题:server程序重启之后,无法连接,需要过一段时间才能连接上? 1.一个监听(listen)server已经启动  2.当有client有连接请求的时候,server产生一个子进程去处理该client的事物.3.server主进程终止了,但是子进程还在占用该连接处理client的事情.虽然子进程终止了,但是由于子进程...

2018-04-23 10:15:58 317

转载 Linux下的socket编程实践(二)socket编程基本API简介

Socket是什么      socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。Socket就是该模式的一个实现, socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)。 说白了Socket是应用层与TCP/IP协议族通信...

2018-04-23 10:14:40 303

转载 Linux下的socket编程实践(一) 网络基本知识以及 TCP/IP简述

ISO/OSI七层参考模型1.物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。(标志:RJ-45)2.数据链路层:定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和...

2018-04-23 10:13:49 174

转载 Linux 文件系统与设备文件系统 (一)—— udev 设备文件系统

版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.csdn.net/zqixiao_09/article/details/50864014一、什么是Linux设备文件系统      首先我们不看定义,定义总是太抽象很难理解,我们先看现象。当我们往开发板上移植了一个新的文件系统之后(假如各种设备驱动也移植好了),启动开发板,我们用串口工具进入开发板,查看系统/dev目录,...

2018-04-21 20:13:24 1159

转载 Exynos4412 文件系统制作(三)—— 文件系统移植

       根文件系统一直以来都是所有类Unix操作系统的一个重要组成部分,也可以认为是嵌入式Linux系统区别于其他一些传统嵌入式操作系统的重要特征,它给Linux带来了许多强大和灵活的功能,同时也带来了一些复杂性。我们需要清楚的了解根文件系统的基本结构,以及细心的选择所需要的系统库、内核模块和应用程序等,并配置好各种初始化脚本文件,以及选择合适的文件系统类型并把它放到实际的存储设备的合适位置...

2018-04-21 20:13:18 231

转载 Exynos4412 文件系统制作(一)—— 文件系统的启动过程分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.csdn.net/zqixiao_09/article/details/50822783

2018-04-21 20:13:11 195

转载 4412开发环境

使用的是讯为自己做好的虚拟机开发环境,Ubuntu12.04.2_V2.0,下面是readme压缩与解压(1)压缩格式为:7Z,(2)压缩软件为:"2345好压"(3)文件压缩时,所在操作系统为Win7-64位(4)网盘中有16个压缩文件包,解压后有31.2G(5)Ubuntu系统默认设置60G硬盘(6)解压的盘符剩余空间有100G左右比较合适。Ubuntu12.04.2_V2.0和原始的系统有以...

2018-04-21 20:12:59 384

转载 PCIe 配置空间读写内核实现

1     PCI及PCI-E配置空间介绍   PCI-E是用来互联如计算和通信平台应用中外围设备的第三代高性能I/O总线。PCI-E采用了与PCI相同的使用模型和读写(load-store)通信模型,支持各种常见的事务,如存储器读/写、IO读/写和配置读/写事务。其存储器、IO和配置地址空间与PCI的地址空间相同。PCI Express与PCI系统是软件向后兼容的。PCI-E的配置空间大小为40...

2018-04-21 20:12:16 2696

转载 linux内核中的GPIO系统之(1):软件框架

linux内核中的GPIO系统之(1):软件框架作者:linuxer 发布于:2014-7-21 14:40 分类:GPIO子系统一、前言作为一个工作多年的系统工程师,免不了做两件事情:培训新员工和给新员工分配任务。对于那些刚刚从学校出来的学生,一般在开始的时候总是分配一些非常简单的任务,例如GPIO driver、LED driver。往往CPU datasheet的关于GPIO或者IO por...

2018-04-21 20:12:09 188

转载 《UNIX环境高级编程》笔记75--行控制函数、终端标识、终端窗口大小

1.行控制函数下列4个函数提供了终端设备的行控制能力,其中,参数filedes引用一个终端设备,否则出错返回,errno设置为ENOTTY。[cpp] view plain copy#include<termios.h>  int tcdrain(int filedes);  int tcflow(int filedes, int action);  int tcflush(int f...

2018-04-21 20:11:59 185

转载 《UNIX环境高级编程》笔记73--特殊输入字符

POSIX.1定义了11个在输入是做特殊处理的字符。实现定义了另外一些特殊字符。下表摘要列出了这些特殊字符。POSIX.1允许禁用这些字符。若将c_cc数组中的某项设置为_POSIX_VDISABLE的值,则禁用相应的特殊字符。可以使用tcsetattr函数进行操作。使用函数tcgetattr和tcsetattr可以获得或设置termios结构。[cpp] view plain copy#incl...

2018-04-21 20:11:47 152

转载 《UNIX环境高级编程》笔记72--终端IO

终端IO有两种不同的工作模式:1.规范模式输入处理。在这种模式中,终端输入以行为单位进行处理。对于每个读要求,终端驱动程序最多返回一行。例如,若shell把标准输入重定向到终端,2.非规范模式输入处理。输入字符并不组成行。终端设备是由一般位于内核中的终端驱动程序控制的。每个终端设备有一个输入队列和一个输出队列。大多数UNIX系统在一个称为终端行规程(terminal line discipline...

2018-04-21 20:11:41 198

转载 《UNIX环境高级编程》笔记71--UNIX域套接字

1.非命名的UNIX域套接字UNIX套接字用于在用一台机器上运行的进程之间通信。UNIX套接字比因特网域套接字的效率更高。UNIX与套接字提供和数据报两种接口,UNIX域数据报服务是可靠的,就不会丢失消息也不会传递出错。UNIX域套接字是套接字和管道之间的混合物。为了创建一对非命名的,相互连接的UNXI域套接字,用户可以使用socketopair函数。[cpp] view plain copy#i...

2018-04-21 20:11:31 127

转载 select_socket详解

Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方式...

2018-04-20 12:03:20 1582

qnx spi库资源

里面是可以使用在6.6. 或者6.5 bsp上的库文件。* QNX是一个微内核实时操作系统,其核心仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,其进程在独立的地址空间运行。所有其它OS服务,都实现为协作的用户进程,因此QNX核心非常小巧(QNX4.x大约为12Kb)而且运行速度极快。

2018-06-21

linux视频教程 韩顺平.txt

linux视频教程 韩顺平,里面是迅雷下载地址,速度快。韩顺平linux视频教程迅雷下载地址,从第0讲到第21讲的下载地址

2018-06-21

嵌入式Linux SPI总线应用编程.pdf

本文主要介绍基于 AM3352 处理器的 SPI 总线应用编程,适用于 M3352 核心板, 其使 用原理也适用于基于 AM3352 处理器的工控核心板以及其他基于 AM3352 系列处理器的产 品。

2018-04-02

iTOP4412-SDIO WiFi移植文档.pdf

近期需要把 WiFi 无线网络功能移植到 iTOP-4412 开发平台,查阅了相关资料,经过 一段时间的研究、调试,终于成功的将 WiFi 功能移植到了开发板上面,这里笔者记录移植过 程及注意事项,方便以后工作需要。 iTOP-4412 开发板的 WiFi 模块与板卡之间的连接采用 SDIO 接口,WiFi 硬件模块使用的 是 MTK 的 MT6620 芯片,MTK 提供了 Android4.0 及 Android4.4 的 driver, Porting Guid,有 了这些就为我们的移植工作做了总体性的指导。 但是仅仅有 MTK 提供的文档还是远远不够的,毕竟硬件接口定义不同,kernel 版本也 不同,Android层与 MTK提供的代码也有差异,这就需要我们在 MTK文档的指导下,Step by Step 进行 Porting 工作.

2018-02-27

DDR区别与联系

严格的说DDR应该叫DDR SDRAM,人们习惯称为DDR,部分初学者也常看到DDR SDRAM,就认为是SDRAM。DDR SDRAM是Double Data Rate SDRAM的缩写,是双倍速率同步动态随机存储器的意思。

2016-10-31

HDLC程序.zip

HDLC程序 这个程序是由C++进行编程 的

2015-10-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除