嵌入式系统第10讲

上传人:ji****72 文档编号:51450815 上传时间:2018-08-14 格式:PPT 页数:88 大小:750KB
返回 下载 相关 举报
嵌入式系统第10讲_第1页
第1页 / 共88页
嵌入式系统第10讲_第2页
第2页 / 共88页
嵌入式系统第10讲_第3页
第3页 / 共88页
嵌入式系统第10讲_第4页
第4页 / 共88页
嵌入式系统第10讲_第5页
第5页 / 共88页
点击查看更多>>
资源描述

《嵌入式系统第10讲》由会员分享,可在线阅读,更多相关《嵌入式系统第10讲(88页珍藏版)》请在金锄头文库上搜索。

1、*生物医学工程学院电子技术系1第10讲 嵌入式系统内核的相关技术*生物医学工程学院电子技术系2第10章 嵌入式系统内核的相关技术n本章主要内容n进程的基本概念 、Linux下的进程间通信机制。n信号机制、管道和有名管道机制、SystemV通信机 制及其消息队列和共享存储段机制。nS3C44B0X微处理器的中断系统。nLinux设备驱动开发。*生物医学工程学院电子技术系3第1节 嵌入式系统进程间通信的原理10.1 嵌入式系统进程间通信 10.1.1 嵌入式系统进程间通信的基本原理1.Linux系统中的进程n进程是运行于自已的虚拟地址空间的一个程序。nLinux系统的3类进程:n交互进程:由she

2、ll控制和运行,既可以在前台运行,也可以在后台运行 。n批处理进程:不属于某个终端,它被提交到一个队列中,以便顺序执行。n守护进程:只有在需要时才被唤起在后台运行,一般在Linux启动时开始 执行。nLinux是一个多进程的操作系统,每个进程都有自己的权限 和任务,某一个进程的失败一般不会导致其他进程的失败 ;进程之间可以通过由内核控制的机制相互通信。*生物医学工程学院电子技术系410.1 嵌入式系统进程间通信的原理2.Linux系统中的进程间通信nLinux下进程通信的6种主要手段: 信号(signal):用于通知接收进程有某种事件发生 。除支持signal()外,还支持符合POSIX.1标

3、准的信 号函数sigaction()。 管道(pipe)及有名管道(named pipe):管道可用于 具有亲缘关系进程间的通信;有名管道克服管道 没有名字的限制,可用于亲缘和和非亲缘进程间 的通信。 报文(或消息)队列(mesage):是消息的链接表,包 括POSIX消息队列、SystemV消息队列。消息队列 克服了信号承载信息量少,管道只能承载无格式 字节流,以及缓冲区大小受限等缺点。*生物医学工程学院电子技术系510.1 嵌入式系统进程间通信的原理共享存储段:多个进程可以访问同一块内存空间。与其他 通信机制结合使用。 信号量(semaphore):主要作为进程之间及同一进程不同线 程之间

4、的同步手段。 套接字:更为一般的进程间通信机制,可用于不同机器之 间的进程间通信。Linux和SystemV的变种都支持套接字。n应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序 进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通 过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接, 许多计算机操作系统为应用程序与TCPIP协议交互提供了称为套接字 (Socket)的接口。 区分不同应用程序进程间的网络通信和连接,主要有3个参数:通信的目 的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。Socket原意是 “插座”。通过将这3个

5、参数结合起来,与一个“插座”Socket绑定,应 用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络 连接的通信,实现数据传输的并发服务。*生物医学工程学院电子技术系610.1 嵌入式系统进程间通信的原理3.信号机制n信号是在软件层次上对中断机制的一种模拟。进 程收到信号与处理器收到一个中断申请是一样的 。n信号是进程间通信机制中惟一的异步通信机制, 进程不必通过任何操作来等待信号的到达。nLinux信号机制基本继承了UNIX系统。n信号之间不存在内在的相对优先级。一个进程若 同时出现两个信号时,系统会按任意顺序提交给 进程。*生物医学工程学院电子技术系710.1 嵌入式系统进程

6、间通信的原理n信号可以由以下几种方式生成:1)由硬件异常产生:当硬件检测到无效的存储访 问、除数为0等情况时将通知内核,内核会为正在 运行的进程产生适当的信号。2)由软件产生:信号可以在一定的软件条件下产 生。例如,当检测到非规定波特率的数据时产生 SIGURG。3)由终端用户生成:用户产生的键盘序列会中断 或结束当前正在执行的进程。4)由系统调用生成:系统调用能产生信号的函数 ,kill()、sigqueue()、signal、sigaction()。*生物医学工程学院电子技术系810.1 嵌入式系统进程间通信的原理4.管道及有名管道n管道就是一种把一个进程的标准输出与另一个进 程的标准输入

7、相连接的方法。n管道的特点: 管道是半工的 管道只能用于具有亲缘关系的进程之间。 管道单独构成一种独立的文件系统。 一个进程向管道中写的内容被管道另一端的进程读出。*生物医学工程学院电子技术系910.1 嵌入式系统进程间通信的原理n在Linux系统中,管道用两个指向同一个临时性虚拟文件系 统(VFS,Virtual File System)索引节点的文件数据结构来 实现。这个临时性的VFS索引节点指向内存中的一个物理 页面。图10.2是管道的一个实例。*生物医学工程学院电子技术系1010.1 嵌入式系统进程间通信的原理5.消息队列n消息队列允许一个或多个进程向队列中写入消息 ,然后由一个或多个

8、读进程读出。图10.3是消息 队列工作机制的示意图。*生物医学工程学院电子技术系1110.1 嵌入式系统进程间通信的原理nLinux系统维护一个消息队列的表。该表是msgque 结构的数组,数组中每个元素指向一个完全描述 消息队列的msgqid_ds数据结构。一旦一个新的消 息队列被创建,则在系统内存中会为一个新的 msgqid_ds数据结构分配空间,并把它插入到数组 中。n每个msgqid_ds结构都包含ipc_perm数据结构及指 向进入该队列的消息的指针。n写入消息:有效用户标识和访问模式验证。n读取消息:*生物医学工程学院电子技术系1210.1 嵌入式系统进程间通信的原理6.共享存储段

9、n共享存储段允许一个或多个进程通过在它们的虚 拟地址空间中同时出现的存储区进行通信。n虚地址空间的页是通过共享进程的页表来访问的 ,共享存储段的访问控制是通过密钥和访问权限 检查来实现的。n一旦某一内存区域被共享了,系统就无法检查进 程如何使用这部分内存区域,系统必须使用 SystemV信号量等机制来同步对存储器的访问。n图10.4是共享存储段工作机制示意图。每个新建 的共享存储段由shmid_ds数据结构来表示,并记 录在shmid_segs向量中。*生物医学工程学院电子技术系1310.1 嵌入式系统进程间通信的原理nShmid_ds数据结构中包含共享存储段的大小,当 前使用该共享存储段的进

10、程数目及共享存储段如 何映射到进程地址空间的等信息。*生物医学工程学院电子技术系1410.1 嵌入式系统进程间通信的原理n当某一进程第一次访问共享存储段的某一页时, 系统会产生一个页失效。Linux在处理页失效时, 它会找到描述该页的vm_area_struct数据结构。 Vm_area_struct结构包含处理这种共享存储段页失 效的函数的句柄。n当进程不再使用共享存储段时,进程会执行分离 操作。若有其他进程还在使用该段,分离只影响 当前进程。进程的vm_area_struct结构会被从 shmid_ds结构中删除、释放掉,系统更新页表使 虚地址区域无效,当最后使用共享存储段的进程 执行分离

11、操作时,物理存储器中的共享页被释放 掉,同时对应的shmid_ds数据结构也会被释放。*生物医学工程学院电子技术系1510.1 嵌入式系统进程间通信的原理7.SystemV的进程间通信机制nLinux支持消息队列、信号和共享存储段3种进程 通信机制。这些System V的进程通信机制使用相 同的认证方法,即通过系统调用向内核传递这些 资源的全局惟一标识来访问它们,Linux使用访问 许可的方式检查对System V IPC对象的访问。nLinux把IPC对象的访问标识作为对系统资源表的 索引,但访问标识不是一种直接的索引,而是由 索引标识通过某些运算产生的对象索引。nLinux系统中所有代表S

12、ystem V IPC对象的数据结 构都包括ipc_perm数据结构,ipc_perm结构中含 有拥有者和创建者进程的用户标识和组标识。*生物医学工程学院电子技术系1610.1 嵌入式系统进程间通信的原理n每一个IPC对象都有一个独一无二的IPC标识符与 之相联系。n标识符的惟一性与对象的类型相关的。为了获得 一个惟一的标识符,必须使用关键字,不管是客 户端还是服务端都认可相应的关键字。*生物医学工程学院电子技术系17第2节 嵌入式系统中断原理10.2嵌入式系统中断原理n本节主要介绍S3C2410处理器的中断系统。 10.2.1嵌入式系统中断的工作原理1、S3C2410的中断类型nS3C241

13、0拥有7种不同的异常中断类型,根据ARM 系列中断处理的特点,各种异常中断对应于ARM系 列的不同工作模式 。*生物医学工程学院电子技术系1810.2 嵌入式系统中断原理*生物医学工程学院电子技术系1910.2 嵌入式系统中断原理2、异常中断的响应过程和返回过程(1)异常中断响应过程 保存CPSR到将要执行的异常中断的SPSR; 设置CPSR的值:设置CPSR相应位的值使处理器进入特定 的处理器模式,按要求屏蔽中断; 设置LR寄存器:将中断相应模式的LR寄存器的值设置为 异常中断的返回地址; 处理程序计数器PC:将PC值设为相应的中断向量的地址 。(2)异常中断返回过程 恢复CPSR:将保存在

14、中断模式中的SPSR值赋给当前的 CPSR; 将返回地址复制到PC:这样程序将返回到异常中断产生 的下一条指令或出现问题的指令处执行。*生物医学工程学院电子技术系2010.2 嵌入式系统中断原理异常中断的响应-返回流程图*生物医学工程学院电子技术系2110.2 嵌入式系统中断原理3、异常中断处理程序的安装n异常中断向量的入口地址是固定的(0x000x1c), 系统运行到满足异常中断条件而产生异常中断时 ,系统将自动跳入相应的异常中断向量表中。n 在异常向量表中保存的,正是利用跳转指令或ldr 指令指向该中断的异常中断处理程序的指令程序 ,这样就实现了异常中断处理程序的安装。*生物医学工程学院电

15、子技术系2210.2 嵌入式系统中断原理(1)利用跳转指令 特点 将BL指令放置到中断向量表的特定位置,跳 转目标地址为中断处理程序的首地址,便可直接 实现异常中断的安装。 优点 BL指令可以直接保存地址 缺点 是BL的跳转范围只有32MB的地址空间 实例 bl SWI_Handle*生物医学工程学院电子技术系2310.2 嵌入式系统中断原理(2)利用ldr指令 特点 先要将异常中断处理程序首地址的绝对地址 放在邻近的一个存储单元中,然后用ldr命令将该 内存单元中的地址读取到PC中。 优点 可调用程序的范围不受限制 实例 ldr pc, SWI_ADDRSWI_ADDR dcd SWI_Ha

16、ndle*生物医学工程学院电子技术系2410.2 嵌入式系统中断原理4、中断控制寄存器*生物医学工程学院电子技术系2510.2 嵌入式系统中断原理5、S3C2410的中断控制寄存器#define rSRCPND (*(volatile unsigned *)0x4a000000)#define rINTMOD (*(volatile unsigned *)0x4a000004)#define rINTMSK (*(volatile unsigned *)0x4a000008)#define rPRIORITY (*(volatile unsigned *)0x4a00000a) #define rINTPND (*(volatile unsigned *)0x4a000010)#define rINTOFFSET (*(volatile unsigned *)0x4a000014)*生物医学工程学院电子技术系2610.2 嵌入式系统中断原理(1)源中断申请寄存器( SRCPND)nSRCPND寄存器32位中的

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号