嵌入式系统第10讲.ppt
《嵌入式系统第10讲.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统第10讲.ppt(88页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、09 四月 2023生物医学工程学院电子技术系1第10讲 嵌入式系统内核的相关技术09 四月 2023生物医学工程学院电子技术系2第10章 嵌入式系统内核的相关技术n本章主要内容n进程的基本概念、Linux下的进程间通信机制。n信号机制、管道和有名管道机制、SystemV通信机制及其消息队列和共享存储段机制。nS3C44B0X微处理器的中断系统。nLinux设备驱动开发。09 四月 2023生物医学工程学院电子技术系3第1节 嵌入式系统进程间通信的原理10.1 嵌入式系统进程间通信10.1.1 嵌入式系统进程间通信的基本原理 1.Linux系统中的进程n进程是运行于自已的虚拟地址空间的一个程序
2、。nLinux系统的3类进程:n交互进程:由shell控制和运行,既可以在前台运行,也可以在后台运行。n批处理进程:不属于某个终端,它被提交到一个队列中,以便顺序执行。n守护进程:只有在需要时才被唤起在后台运行,一般在Linux启动时开始执行。nLinux是一个多进程的操作系统,每个进程都有自己的权限和任务,某一个进程的失败一般不会导致其他进程的失败;进程之间可以通过由内核控制的机制相互通信。09 四月 2023生物医学工程学院电子技术系410.1 嵌入式系统进程间通信的原理 2.Linux系统中的进程间通信nLinux下进程通信的6种主要手段:信号(signal):用于通知接收进程有某种事件
3、发生。除支持signal()外,还支持符合POSIX.1标准的信号函数sigaction()。管道(pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信;有名管道克服管道没有名字的限制,可用于亲缘和和非亲缘进程间的通信。报文(或消息)队列(mesage):是消息的链接表,包括POSIX消息队列、SystemV消息队列。消息队列克服了信号承载信息量少,管道只能承载无格式字节流,以及缓冲区大小受限等缺点。09 四月 2023生物医学工程学院电子技术系510.1 嵌入式系统进程间通信的原理共享存储段:多个进程可以访问同一块内存空间。与其他通信机制结合使用。信号量(sema
4、phore):主要作为进程之间及同一进程不同线程之间的同步手段。套接字:更为一般的进程间通信机制,可用于不同机器之间的进程间通信。Linux和SystemV的变种都支持套接字。n应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCPIP协议交互提供了称为套接字(Socket)的接口。区分不同应用程序进程间的网络通信和连接,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。Soc
5、ket原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。09 四月 2023生物医学工程学院电子技术系610.1 嵌入式系统进程间通信的原理 3.信号机制n信号是在软件层次上对中断机制的一种模拟。进程收到信号与处理器收到一个中断申请是一样的。n信号是进程间通信机制中惟一的异步通信机制,进程不必通过任何操作来等待信号的到达。nLinux信号机制基本继承了UNIX系统。n信号之间不存在内在的相对优先级。一个进程若同时出现两个信号时,系统会按任意顺序提交给进程。09 四月 2
6、023生物医学工程学院电子技术系710.1 嵌入式系统进程间通信的原理n信号可以由以下几种方式生成:1)由硬件异常产生:当硬件检测到无效的存储访问、除数为0等情况时将通知内核,内核会为正在运行的进程产生适当的信号。2)由软件产生:信号可以在一定的软件条件下产生。例如,当检测到非规定波特率的数据时产生SIGURG。3)由终端用户生成:用户产生的键盘序列会中断或结束当前正在执行的进程。4)由系统调用生成:系统调用能产生信号的函数,kill()、sigqueue()、signal、sigaction()。09 四月 2023生物医学工程学院电子技术系810.1 嵌入式系统进程间通信的原理 4.管道及
7、有名管道n管道就是一种把一个进程的标准输出与另一个进程的标准输入相连接的方法。n管道的特点:管道是半工的管道只能用于具有亲缘关系的进程之间。管道单独构成一种独立的文件系统。一个进程向管道中写的内容被管道另一端的进程读出。09 四月 2023生物医学工程学院电子技术系910.1 嵌入式系统进程间通信的原理n在Linux系统中,管道用两个指向同一个临时性虚拟文件系统(VFS,Virtual File System)索引节点的文件数据结构来实现。这个临时性的VFS索引节点指向内存中的一个物理页面。图10.2是管道的一个实例。09 四月 2023生物医学工程学院电子技术系1010.1 嵌入式系统进程间
8、通信的原理 5.消息队列n消息队列允许一个或多个进程向队列中写入消息,然后由一个或多个读进程读出。图10.3是消息队列工作机制的示意图。09 四月 2023生物医学工程学院电子技术系1110.1 嵌入式系统进程间通信的原理nLinux系统维护一个消息队列的表。该表是msgque结构的数组,数组中每个元素指向一个完全描述消息队列的msgqid_ds数据结构。一旦一个新的消息队列被创建,则在系统内存中会为一个新的msgqid_ds数据结构分配空间,并把它插入到数组中。n每个msgqid_ds结构都包含ipc_perm数据结构及指向进入该队列的消息的指针。n写入消息:有效用户标识和访问模式验证。n读
9、取消息:09 四月 2023生物医学工程学院电子技术系1210.1 嵌入式系统进程间通信的原理 6.共享存储段n共享存储段允许一个或多个进程通过在它们的虚拟地址空间中同时出现的存储区进行通信。n虚地址空间的页是通过共享进程的页表来访问的,共享存储段的访问控制是通过密钥和访问权限检查来实现的。n一旦某一内存区域被共享了,系统就无法检查进程如何使用这部分内存区域,系统必须使用SystemV信号量等机制来同步对存储器的访问。n图10.4是共享存储段工作机制示意图。每个新建的共享存储段由shmid_ds数据结构来表示,并记录在shmid_segs向量中。09 四月 2023生物医学工程学院电子技术系1
10、310.1 嵌入式系统进程间通信的原理nShmid_ds数据结构中包含共享存储段的大小,当前使用该共享存储段的进程数目及共享存储段如何映射到进程地址空间的等信息。09 四月 2023生物医学工程学院电子技术系1410.1 嵌入式系统进程间通信的原理n当某一进程第一次访问共享存储段的某一页时,系统会产生一个页失效。Linux在处理页失效时,它会找到描述该页的vm_area_struct数据结构。Vm_area_struct结构包含处理这种共享存储段页失效的函数的句柄。n当进程不再使用共享存储段时,进程会执行分离操作。若有其他进程还在使用该段,分离只影响当前进程。进程的vm_area_struct
11、结构会被从shmid_ds结构中删除、释放掉,系统更新页表使虚地址区域无效,当最后使用共享存储段的进程执行分离操作时,物理存储器中的共享页被释放掉,同时对应的shmid_ds数据结构也会被释放。09 四月 2023生物医学工程学院电子技术系1510.1 嵌入式系统进程间通信的原理 7.SystemV的进程间通信机制nLinux支持消息队列、信号和共享存储段3种进程通信机制。这些System V的进程通信机制使用相同的认证方法,即通过系统调用向内核传递这些资源的全局惟一标识来访问它们,Linux使用访问许可的方式检查对System V IPC对象的访问。nLinux把IPC对象的访问标识作为对系
12、统资源表的索引,但访问标识不是一种直接的索引,而是由索引标识通过某些运算产生的对象索引。nLinux系统中所有代表System V IPC对象的数据结构都包括ipc_perm数据结构,ipc_perm结构中含有拥有者和创建者进程的用户标识和组标识。09 四月 2023生物医学工程学院电子技术系1610.1 嵌入式系统进程间通信的原理n每一个IPC对象都有一个独一无二的IPC标识符与之相联系。n标识符的惟一性与对象的类型相关的。为了获得一个惟一的标识符,必须使用关键字,不管是客户端还是服务端都认可相应的关键字。09 四月 2023生物医学工程学院电子技术系17第2节 嵌入式系统中断原理10.2嵌
13、入式系统中断原理n本节主要介绍S3C2410处理器的中断系统。10.2.1嵌入式系统中断的工作原理 1、S3C2410的中断类型nS3C2410拥有7种不同的异常中断类型,根据ARM系列中断处理的特点,各种异常中断对应于ARM系列的不同工作模式 。09 四月 2023生物医学工程学院电子技术系1810.2 嵌入式系统中断原理09 四月 2023生物医学工程学院电子技术系1910.2 嵌入式系统中断原理 2、异常中断的响应过程和返回过程 (1)异常中断响应过程保存CPSR到将要执行的异常中断的SPSR;设置CPSR的值:设置CPSR相应位的值使处理器进入特定的处理器模式,按要求屏蔽中断;设置LR
14、寄存器:将中断相应模式的LR寄存器的值设置为异常中断的返回地址;处理程序计数器PC:将PC值设为相应的中断向量的地址。(2)异常中断返回过程恢复CPSR:将保存在中断模式中的SPSR值赋给当前的CPSR;将返回地址复制到PC:这样程序将返回到异常中断产生的下一条指令或出现问题的指令处执行。09 四月 2023生物医学工程学院电子技术系2010.2 嵌入式系统中断原理 异常中断的响应-返回流程图09 四月 2023生物医学工程学院电子技术系2110.2 嵌入式系统中断原理 3、异常中断处理程序的安装n异常中断向量的入口地址是固定的(0 x000 x1c),系统运行到满足异常中断条件而产生异常中断
15、时,系统将自动跳入相应的异常中断向量表中。n 在异常向量表中保存的,正是利用跳转指令或ldr指令指向该中断的异常中断处理程序的指令程序,这样就实现了异常中断处理程序的安装。09 四月 2023生物医学工程学院电子技术系2210.2 嵌入式系统中断原理 (1)利用跳转指令特点 将BL指令放置到中断向量表的特定位置,跳转目标地址为中断处理程序的首地址,便可直接实现异常中断的安装。优点 BL指令可以直接保存地址缺点 是BL的跳转范围只有32MB的地址空间实例 bl SWI_Handle 09 四月 2023生物医学工程学院电子技术系2310.2 嵌入式系统中断原理 (2)利用ldr指令特点 先要将异
16、常中断处理程序首地址的绝对地址放在邻近的一个存储单元中,然后用ldr命令将该内存单元中的地址读取到PC中。优点 可调用程序的范围不受限制 实例 ldrpc,SWI_ADDRSWI_ADDRdcdSWI_Handle09 四月 2023生物医学工程学院电子技术系2410.2 嵌入式系统中断原理 4、中断控制寄存器09 四月 2023生物医学工程学院电子技术系2510.2 嵌入式系统中断原理 5、S3C2410的中断控制寄存器#definerSRCPND(*(volatileunsigned*)0 x4a000000)#definerINTMOD(*(volatileunsigned*)0 x4a
17、000004)#definerINTMSK(*(volatileunsigned*)0 x4a000008)#definerPRIORITY(*(volatileunsigned*)0 x4a00000a)#definerINTPND(*(volatileunsigned*)0 x4a000010)#definerINTOFFSET(*(volatileunsigned*)0 x4a000014)09 四月 2023生物医学工程学院电子技术系2610.2 嵌入式系统中断原理 (1)源中断申请寄存器(SRCPND)nSRCPND寄存器32位中的每一位对应着一个中断源。某一位被设置为1,则相应的中
18、断源产生中断请求并且等待中断被服务。n能够通过向这个寄存器写一个数据来清除SRCPND寄存器的相应位 。09 四月 2023生物医学工程学院电子技术系2710.2 嵌入式系统中断原理 (1)源中断申请寄存器(SRCPND)09 四月 2023生物医学工程学院电子技术系2810.2 嵌入式系统中断原理09 四月 2023生物医学工程学院电子技术系2910.2 嵌入式系统中断原理 (2)中断模式寄存器(INTMOD)n中断模式寄存器(INTMOD)的32位中的每一位对应一个中断源,当INTMOD中的每一位都设置为1,则ARM920T内核将以FIQ(快速中断)模式操作那个中断。否则,将以IRQ(普通
19、中断)模式操作。09 四月 2023生物医学工程学院电子技术系3010.2 嵌入式系统中断原理09 四月 2023生物医学工程学院电子技术系3110.2 嵌入式系统中断原理09 四月 2023生物医学工程学院电子技术系3210.2 嵌入式系统中断原理 (3)中断请求寄存器(INTPND)n中断请求寄存器32位中的每一位对应着相应的中断请求。经过优先级逻辑后,INTPND寄存器只能有一位被设为1,并且向CPU产生中断请求。n能够通过向这个寄存器写一个数据来清除INTPND寄存器的相应位 。09 四月 2023生物医学工程学院电子技术系3310.2 嵌入式系统中断原理09 四月 2023生物医学工
20、程学院电子技术系3410.2 嵌入式系统中断原理09 四月 2023生物医学工程学院电子技术系3510.2 嵌入式系统中断原理/*Functionname:ClearPendingParameter:bit:相应的中断位Description:清除相应的中断请求*/voidClearPending(intbit)rSRCPND=bit;rINTPND=bit;09 四月 2023生物医学工程学院电子技术系3610.2 嵌入式系统中断原理 (4)中断屏蔽寄存器(INTMSK)n在INTMSK寄存器中,32位依次对应着每个中断源。如果指定位被设为1,CPU将不响应相应中断源的中断请求。如果屏蔽位为
21、0,则中断请求能被响应。09 四月 2023生物医学工程学院电子技术系3710.2 嵌入式系统中断原理09 四月 2023生物医学工程学院电子技术系3810.2 嵌入式系统中断原理09 四月 2023生物医学工程学院电子技术系3910.2 嵌入式系统中断原理/*Functionname:EnableIrqParameter:bit:相应的中断位Description:使能相应的中断*/voidEnableIrq(intbit)rINTMSK&=(bit);09 四月 2023生物医学工程学院电子技术系4010.2 嵌入式系统中断原理/*Functionname:DisableIrqParame
22、ter:bit:相应的中断位Description:禁止相应的中断*/voidEnableIrq(intbit)rINTMSK|=(bit);09 四月 2023生物医学工程学院电子技术系4110.2 嵌入式系统中断原理 (5)中断偏移寄存器(INTOFFSET)n中断偏移寄存器中的值显示了INTPND寄存器中哪个IRQ模式的中断请求。这个位在清除SRCPND和INTPND后被自动清除。09 四月 2023生物医学工程学院电子技术系4210.2 嵌入式系统中断原理09 四月 2023生物医学工程学院电子技术系4310.2 嵌入式系统中断原理 (6)中断优先寄存器(PRIORITY)nThe p
23、riority logic for 32 interrupt requests is composed of seven rotation based arbiters:six first-level arbiters and onensecond-level arbiter.09 四月 2023生物医学工程学院电子技术系4410.2 嵌入式系统中断原理优先级产生框图09 四月 2023生物医学工程学院电子技术系4510.2 嵌入式系统中断原理09 四月 2023生物医学工程学院电子技术系4610.2 嵌入式系统中断原理09 四月 2023生物医学工程学院电子技术系4710.3 嵌入式Linu
24、x驱动程序开发10.3 嵌入式Linux驱动程序开发10.3.1嵌入式Linux的设备管理nLinux将设备分成两大类:一类是块设备,类似磁盘以记录块或扇区为单位,成块进行输入/输出的设备;另一类是字符设备,类似键盘以字符为单位,逐个进行输入/输出的设备。网路设备是介于块设备和字符设备之间的一种特殊设备。n块设备接口仅支持面向块的I/O操作,所有I/O操作都通过在内核地址空间中的I/O缓冲区进行,它可以支持随机存取的功能。文件系统通常都建立在块设备上。n字符设备接口支持面向字符的I/O操作,由于它们不经过系统的快速缓存,所以它们负责管理自己的缓冲区结构。字符设备接口只支持顺序存取的功能,一般不
25、能进行任意长度的I/O请求,而是限制I/O请求的长度必须是设备要求的基本块长的倍数。09 四月 2023生物医学工程学院电子技术系4810.3 嵌入式Linux驱动程序开发n处理器与设备间数据交换方式n处理器与外设之间传输数据的控制方式通常有3种:查询方式、中断方式和直接内存存取(DMA)方式。1查询方式n设备驱动程序通过设备的I/O端口空间,以及存储器空间完成数据的交换。例如,网卡一般将自己的内部寄存器映射为设备的I/O端口,而显示卡则利用大量的存储器空间作为视频信息的存储空间。利用这些地址空间,驱动程序可以向外设发送指定的操作指令。通常来讲,由于外设的操作耗时较长,因此,当处理器实际执行了
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 10
限制150内