linux系统编程与驱动基础
一起轻松学习嵌入式linux,每天一个脚印,滴水穿石,坚持就是成功!
cole10540316
这个作者很懒,什么都没留下…
展开
-
linux驱动--设备节点生成
linux驱动–设备节点生成关于设备注册于驱动注册,参考前一篇文章http://blog.csdn.net/cole10540316/article/details/51848272linux驱动一般分为三类:字符设备、块设备、网络设备,但是这三类设备并不能完全包含所有的设备,所以引入了杂项设备。linux下采用杂项设备可能包含字符设备、块设备、网络设备中的一项或者多项设备。本文是在杂项设备下生成设原创 2016-07-07 17:26:29 · 3130 阅读 · 2 评论 -
linux内核配置与驱动注册
linux 内核配置与驱动注册menuconfig使用使用menuconfig工具实现linux内核的裁剪。进入内核配置界面的方法包括以下几种:#make config这是基于文本的最为传统的配置界面,不推荐使用#make menuconfig基于文本菜单的配置界面,现在大部分都是使用这个工具来裁减配置内核的。#make xconfig要求 QT 被安装,用的比较少。#make gcon原创 2016-07-07 08:52:42 · 715 阅读 · 0 评论 -
linux 最小内核模块
linux 最小内核模块1.内核模块介绍linux内核包含的内容很多,在进行内核编译的时候,可以把所有的代码编译进内核,但是这样会引起两个问题:一是内核过大;二是 当需要添加或者删除内核时,需要重新再编译内核。而模块不需要编译到内核,放置到指定目录使用时直接加载模块,不需要使用时直接卸载模块,可以减小内核大小,并可以实现相同的效果。2.最小linux模块例程#include <linux/modul原创 2016-07-05 09:16:12 · 516 阅读 · 0 评论 -
linux web服务器搭建
linux的Web服务器搭建boa web服务器介绍boa是一款非常小巧的web服务器,执行代码大约只有60K,广泛应用于嵌入式平台。boa服务器是一个单任务网络服务器,只能依次执行用户的请求。bao下载地址(已经进10年没有更新了)http://www.boa.org/这里使用的是boa-0.94.13.tar.gz版本,接下来要做的是编译boa。boa 文件编译解压安装包文件:tar -vx原创 2016-06-30 22:44:59 · 8727 阅读 · 0 评论 -
linux网络编程--UDP协议
特点UDP 即用户数据报协议,它是一种无连接协议,因此不需要像 TCP 那样通过三次握手来建立一个连接。同时,一个 UDP 应用可同时作为应用的客户或服务器方。由于 UDP 协议并不需要建立一个明确的连接,因此建立 UDP 应用要比建立 TCP 应用简单得多。UDP和TCP协议的比较(1)对数据可靠性的要求 对数据要求高可靠性的应用需选择 TCP 协议,如验证、密码字段的传送都是不允许出错原创 2016-06-15 18:42:36 · 7155 阅读 · 1 评论 -
linux网络编程--TCP/IP协议
特点TCP协议的位于数据传输层,其上一层是应用层,因此其目的是为了实现一个应用于另一个应用之间数据传输。TCP协议需要进行三次握手实现数据发送和接收的同步。第一次握手:客户端向服务端提出连接请求。这时TCP SYN标 志置位。客户端告诉服务端序列号区域合法,需要检查。客户端 在TCP报头的序列号区中插入自己的ISN。服务端收到该TCP分 段后,。 第二次握手:接收主机通过发回具原创 2016-06-14 20:49:16 · 1032 阅读 · 0 评论 -
网络通信协议
特点TCP/IP协议将OSI协议模型简化为四层结构 网络接口层:负责将二进制流转换为数据帧,并进行数据帧的发送和接收网络层:负责将数据帧封装成IP数据报,并运行必要的路由算法传输层:负责端对端之间的通信会话连接与建立。传输协议的选择根据数据传输方式而定应用层:负责应用程序的网络访问,这里通过端口号来识别各个不同的进程各层协议网络接口层协议 网络接口层协议主要包括:ARP(Address原创 2016-06-10 23:09:36 · 1192 阅读 · 0 评论 -
linux进程通信--共享内存
特点共享内存是linux进程进行通信的一种高效的传递方式,linux内核在内存中留下一块存储区,进程通过将共享内存的地址映射到进程空间,就可以实现直接对数据进行操作,但是共享内存自身没有同步机制,因此需要适用其他的方式实现对共享内存空间的读写进行同步。通信结构简图如图1所示。 图1 多进程共享内存通信原理示意图实现过程与操作函数共享原创 2016-06-01 14:35:15 · 963 阅读 · 0 评论 -
linux进程通信--信号量
信号量的功能 信号量自身并不具有通信功能,而是在当多个进程访问同一资源时,使用信号量实现多个进程之间的互斥与同步,因此信号量相当于数据锁功能。简单的说信号量就是解决不同进程访问共享资源时,避免出现问题而产生的一种机制。 信号量是一个特殊的变量,程序对其访问都是原子操作,且只允许对它进行等待P(-1)操作和发送V(+1)操作。最简单的信号量是只能取0和1的变量,这也是信号量最常见的一种形式,原创 2016-05-31 20:33:15 · 744 阅读 · 0 评论 -
linux进程通信--消息队列
消息队列是一种消息的链表,用户可以对消息队列写入信息,读取信息。与无名管道类似,可以实现不相关进程之间的通信,但不同的是消息队列可以实现对消息的查询读取。消息队列的实现包括创建或打开消息队列、添加消息、读取消息和控制消息队列这四种操作。实现消息队列的四种操作的函数int msgget(key_t key, int msgflg);int msgsnd(int msqid, const void原创 2016-05-31 10:19:07 · 656 阅读 · 0 评论 -
linux进程通信--有名管道
在前面介绍了无名管道的通信方式,无名管道主要用于具有亲缘关系的进程通信(包括父进程与子进程通信以及兄弟进程通信),本文介绍有名管道通信,那么可想而知,有名管道是用于任意两个进程之间的通信。特点可以实现任意两个互不相关的进程之间的通信;有名管道创建后,对其操作类似于文件操作,可以使用read,open,write等操作,并且有名管道可以在文件路径下显示。有名管道的数据严格执行先进先出的规则。下面原创 2016-05-30 19:31:46 · 732 阅读 · 0 评论 -
linux进程通信--无名管道
linux无名管道通信特点无名管道是半双工的通信方式,数据只能一方发送,另一方接收。无名管道只适用于亲缘关系的进程通信。数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。#include <stdio.h>#include <stdlib.h>#include <unistd.h>void rea原创 2016-05-29 22:55:28 · 1840 阅读 · 0 评论 -
linux新建进程--fork
fork用于创建新进程,新进程与原进程具有从属关系,原进程称之为父进程,新建进程称为子进程,此进程还有其他什么关系呢? 1. 进程号 子进程的父进程应该为原进程,原进程的子进程应该为新建的进程号。 2. 返回值 使用fork新建进程返回值有三种,出错返回-1,0返回给子进程 ,大于0的正整数返回给父进程。 3. 数据共享 子进程会复制父进程的所有数据,在原创 2016-05-23 18:51:11 · 1117 阅读 · 0 评论 -
linux的main的参数传递
很多程序是需要适用main直接传递参数的,那么main的参数是怎么保存的呢。 如int main(int argc int *argv[]),这个时候执行命令 cp data1.txt /dev/udisk/ 此时参数保存的结果为 argc=3,argv[0]=”cp” argv[1]=”data1.txtx”,argv[2]=”/dev/u原创 2016-05-23 08:40:53 · 1701 阅读 · 0 评论