摘要: 一、引言 FIFO常被称为有名管道,不同于管道(pipe)。pipe仅适用于“有血缘关系”的IPC。但FIFO还可以应用于不相关的进程的IPC。实际上,FIFO是Linux基础文件类型中的一种,是在读写内核通道。 函数原型: 命令: mkfifo + 管道名 例:mkfifo fifo_one 操作 阅读全文
posted @ 2019-01-09 09:38 程序猿爱吃鸡 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 学习目标:分析linux内核源码下的i2c总线驱动 drivers/i2c/busses/i2c-s3c2410.c 和 driver/i2c/chips/eeprom.c 设备驱动; 一、i2c驱动框架 在drivers/i2c/目录下查看文件结构可看到: 其中, 1)Busses: I2C总线驱 阅读全文
posted @ 2019-01-08 18:59 程序猿爱吃鸡 阅读(423) 评论(0) 推荐(0) 编辑
摘要: 一、引言 管道作用于有血缘关系的进程间的通信,完成数据传递。实际为内核使用环形队列机制,借助内核缓冲区(4k)实现。有如下特质: 1) 其本质是一个伪文件(实为内核缓冲区) 2) 由两个文件描述符引用,一个表示读端,一个表示写端。可定义一个文件描述符数组,存取。 3) 规定数据从管道的写端流入管道, 阅读全文
posted @ 2019-01-08 10:58 程序猿爱吃鸡 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 一、概念 IPC: 1)在linux环境中的每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间是不能相互访问。 2)如果进程间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供 阅读全文
posted @ 2019-01-08 09:23 程序猿爱吃鸡 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 一、绪论 一个进程在终止时会关闭所有文件描述符,释放在用户空间分配的内存,但它的PCB还保留着,内核在其中保存了一些信息:如果 是正常终止则保存着退出状态,如果是异常终止则保存着导致该进程终止的信号是哪个。这个进程的父进程可以调用wait或waitpi d获取这些信息,然后彻底清除掉这个进程。 二、 阅读全文
posted @ 2019-01-07 10:42 程序猿爱吃鸡 阅读(1877) 评论(0) 推荐(0) 编辑
摘要: 学习目标:理解僵尸进程和孤儿进程形成的原因 一、孤儿进程 1. 孤儿进程: 父进程先于子进程结束,则子进程成为孤儿进程。子进程成为孤儿进程之后,init进程则会成为其新的父进程,称为init进程领养孤儿进程。 2. 例程: 编译与执行结果: 二、僵尸进程 1. 僵尸进程:一个进程使用fork创建子进 阅读全文
posted @ 2019-01-05 17:18 程序猿爱吃鸡 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 学习目标:学习IIC驱动原理; 一、IIC总线协议 IIC串行总线包括一条数据线(SDA)和一条时钟线(SCL),支持“一主多从”和“多主机”模式;每个从机设备都有唯一的地址来识别。 图 1 IIC 主从结构 二、IIC信号和时序 IIC总线有3种类型信号: 1)开始信号S SCL为高电平,SDA由 阅读全文
posted @ 2019-01-04 16:20 程序猿爱吃鸡 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 学习目标:学习使用exec函数族的重要的几个函数 一、引言 进程通过exec函数根据指定的文件名或目录名执行另一个可执行文件,当进程调用exec函数时,该进程的数据段、代码段和堆栈段完全被新程序替换,从新程序的启动例程开始执行。但调用exec并不创建新进程,所以调用exec前后该进程的id并未改变。 阅读全文
posted @ 2019-01-04 10:56 程序猿爱吃鸡 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 目标:根据USB驱动分析和上节的USB鼠标驱动,编写键盘驱动,并测试。 一、原理分析 1. 首先通过打印usb_buf[i]中的8字节数据,看一下按键按下之后会接收到什么。 1)通过按完所有键盘按键打印的结果可知,有8个按键会打印在usb_buf[0]里,即: ctrl左键 0x01 0000000 阅读全文
posted @ 2019-01-03 19:29 程序猿爱吃鸡 阅读(2264) 评论(0) 推荐(0) 编辑
摘要: 1. 串口接收数据原理(以“ls”命令为例) (1) 每个终端设备都有一个接收缓冲区,保存原始数据。shell程序一直在休眠,等待合适的字符; (2) 串口接收到'l'字符,把它保存下来; (3) 串口输出‘l’字符,这样控制台就可以显示出字符‘l’; (4) 接收字符‘s’同理,保存,输出; (5 阅读全文
posted @ 2019-01-03 16:07 程序猿爱吃鸡 阅读(885) 评论(0) 推荐(0) 编辑