完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
1.1、嵌入式软件体系结构
1.1、无操作系统的情形
负责处理异步事件,这部分看做前台系统。而后台系统一般是一个无限的循环。 1.2、设备驱动层 1.2.1、版本支持包 设备驱动层也叫版本支持包(Board Support Package,BSP),BSP的思想是把所有与硬件相关的代码都封装起来,并向上提供一个虚拟的硬件平台,而操作系统就运行在这个虚拟的硬件平台上。一般来说,BSP只要包括两个方面的内容:引导加载程序BootLoader和设备驱动程序。 1.2.2、引导加载程序 引导加载程序是BootLoader是嵌入式系统加电后运行的第一段软件代码,在PC机中,她的引导加载程序是由两部分组成:位于ROM中的BIOS和位于硬盘主引导记录(Master Boot Record,MBR)中的BootLoader引导程序。 BootLoader就是在操作系统内核运行之前运行的一小段程序。通过这段程序可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境设置到一个合适的状态。 1.2.3、设备驱动程序 设备驱动程序就是一组库函数,用来对硬件进行初始化和管理,并向上提供良好的访问接口。 1.3、嵌入式中间件 嵌入式中间件的基本思路:把原本属于应用软件层的一些通用的功能模块抽取出来,形成独立的一层软件。 2、嵌入式操作系统概述 2.1、嵌入式操作系统概念 所谓的内核是指系统当中的一个组件,它包含了OS的主要功能。这些功能包括:任务管理、存储管理、输入/输出(I/O)设备管理和文件系统管理。
3.1、进程、线程和任务 3.1.1、进程 进程,简单的说,是一个正在运行的程序。 进程与程序既有联系又有区别,主要表现为下面结构方面:
3.1.2、线程 线程就是代码在进程的资源平台上的一条执行流程。对于同一个进程当中的各个线程来说, 他们可以共享该进程的大部分资源。线程的CUP上下文和栈这两种资源是不能与其他线程共享的。 3.1.3、任务 在VxWorks以及uc-OS-II中,任务指的就是线程,而在Linux中任务指的就是进程。 任务的状态有三种,运行状态、就绪状态以及阻塞状态,转换的关系如下图 3.1.2、任务的调度 任务的调度主要有两种方式:可抢占调度和不可抢占调度。
任务的高级通信方式主要包括共享内存、消息传递和管道三类。
4.1、分区存储管理 把整个分区划分为两大部分,即系统区和用户区。在具体实现上由可以分为两类:固定分区和可变分区。 固定分区的利用率不高,内碎片会造成很大的浪费。 可变分区会产生外碎片,就是各个占用的分区之间,有难以利用的一些空余空间,这通常是一些比较小的空闲分区。 在内存的算法上,当一个新任务到来时,需要为他寻找一个空闲分区,其大小必须大于等于该任务的要求,若是大于该要求,则将该分区分割成两个小的分区,其中一个分区为要求的代销并标记为占用,另一个分区为余下的部分并标记为空闲。 通常分区匹配的算法有:最先匹配法、下次匹配法、最佳匹配法以及最坏匹配法。 4.2、地址映射 为了保证CPU在执行指令的时候,可以正确的访问内存单元,需要将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址,这个过程就称为地址映射。 用户的程序经过汇编或者或者编译后形成的目标代码,而目标代码通常采用的就是相对地址的形式,其首地址为0,其余指令中的地址都是相对于这个首地址来编址的。 4.2.1、静态地址映射 当用户程序被装载到内存时候,直接对指令代码进行修改,一次性第实现逻辑地址到物理地址的转换。 4.2.2、动态地址映射 当用户程序被装载到内存时,不对指令代码做任何修改,而是杂程序的运行过程中,当它需要访问内存单元时,再来进行地址转换。 4.3、页式存储管理 4.4、虚拟存储管理 5、设备管理 5.1、设备管理基础 在嵌入式系统中存在各种类型的输入/输出(I/O)设备,包括键盘、触摸屏、液晶显示器。 一个I/O单元通常由两部分组成:一个是机械部分,既I/O本身;另一个是电子部分,既设备控制器或设备控制器。I/O设备本身不予CPU打交道,而是通过它的设备控制器与CPU打交道。 那么CPU如何来访问设备控制器中的这些寄存器呢,主要有三种:I/O独立编址、内存映像编译和混合编址。 5.1.1 I/O独立编址 对于设备控制器中的每一个寄存器,分配一个唯一的I/O端口编号,然后通过专门的I/O指令来对这些端口操作。 5.1.2 内存映像编址 把设备中的每一个寄存器都映射为一个内存单元,这些内存单元用于I/O操作,对这些内存单元的读写方式与平常的内存访问时完全相同的。 5.1.3 混合编址 对于设备控制器当中的寄存器,采用独立编址的方法。对于设备当中的缓冲区则采用内存映像编址的方法。 5.2、I/O控制方式 I/O设备的控制方式有三种:程序循环检测、中断驱动和直接内存访问。 5.2.1 程序循环检测 在程序当中。通过不断的检测I/O设备的当前状态,来控制一个I/O操作的完成,也称为繁忙等待法或轮训方式。缺点:在进行I/O设备的控制时候,需要一直占用CPU,就会浪费CPU时间。 5.2.2 中断驱动方式 当用户需要I/O操作时,会去调用相应的系统函数,由这个函数发起I/O操作,并将任务阻塞起来,然后去调度其他的任务去使用CPU。当所需的I/O操作完成时候,相应的设备就会向CPU发送一个中断,系统在中断的地方发现还有数据需要处理,就在次启动I/O操作。 5.2.3 直接内存访问方式 在中断驱动的控制方式下,每一次的数据读写还是通过CPU来完成的,如果每一次处理的数据量比较小如1个字节,中断出现的频率就很高,而中断处理需要额外的系统开销,所以也会浪费一些CPU时间。 人们就提出了新的解决方法,就是直接内存访问(Direct Memory Acess, DMA)的控制方式。让DMA控制器来代替CPU完成I/O设备与内存之间的数据传送,从而节省更多的CPU时间。 5.3、I/O软件 设备管理软件的分为四个层次,中断处理程序、设备驱动程序、设备独立的I/O软件以及用户空间的I/O软件。 5.3.1 中断处理程序 当一个用户程序需要某种I/O服务时,它回去调用相应的系统函数,而这个函数又会去调用相应的设备驱动程序。在设备驱动程序去启动I/O操作,并且被阻塞起来,直到这个I/O操作完成后,将产生一个中断,并跳到相应的中断处理程序。之后再中断处理程序中,将会唤醒阻塞的驱动程序。 5.3.2 设备驱动程序 设备驱动程序的基本任务就是接受来自于上层I/O软件的抽象请求,并且去执行这个请求。 5.3.3 设备独立的I/O软件 在这个层面上实现的主要功能有:设备驱动程序的管理、设备驱动程序的统一接口、设备命名、设备保护、缓冲威廉希尔官方网站 、出错报告以及独占设备的分配与释放。 5.3.4 用户空间的I/O软件 通常大部分的I/O软件都是包含在操作系统当中,是操作系统的一部分,但也有一小部分的I/O软件,他们运行在系统内核之外。主要有两部分
|
|
|
|
只有小组成员才能发言,加入小组>>
663 浏览 0 评论
1083 浏览 1 评论
2454 浏览 5 评论
2783 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2618 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
638浏览 9评论
636浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
766浏览 6评论
610浏览 5评论
651浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 11:48 , Processed in 1.048639 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号