当前位置:   article > 正文

什么是嵌入式系统

什么是嵌入式系统

什么是嵌入式系统

嵌入式系统(Embedded System) 是一种完全嵌入受控器件内部,为特定应用而设计的专用计算机系统。

1、仅有非常有限的硬件资源,成本大幅下降,但对软件的优化提出更高要求。

2、一般运行固定的程序或固定的操作系统,再加上可变的应用程序。

3、有些为工业系统,仅用于某个特定的控制目的;有些因为有应用程序的加入而更显灵活,如手机,平板电脑。

 

现代的嵌入式系统一般分为简单嵌入式系统和复杂嵌入式系统。

1、简单嵌入式系统一般是由单片集成控制器作为硬件核心的嵌入式系统,其核心只有一片芯片,却集成了处理器、闪存、内存、数字和模拟外设这些设略去,开发难度低。

性能一般,仅适合于自动化、运动控制、电源控制等简单控制类应用。

2、复杂嵌入式系统一般由独立的处理器和闪存构成。处理器本身不集成大量的外设,仅执行处理任务,如CPU。

系统灵活多变,性能较好,用于人机接口,智能设备,手机等性能要求高的场景。

1)基于DSP的嵌入式系统一般用于处理大量的数据,典型应用为语音处理,雷达信号处理等。

2)基于MIPS的嵌入式系统一般应用于驼用计算。

3)基于X86的嵌入式系统是把传统的计算机压缩,精简。

 

在任何时刻,CPU只能运行在一种模式,但由于外部事件(中断)或编程方式,能够切换到其它的模式。CPU ARM架构指定了以下的CPU模式:

用户模式,唯一的非特权模式。

系统模式,通过非异常的方法进入的特权模式。

SVC模式,执行SWI指令或处理器复位后进入的模式。

Abort模式,缓存没有命中时进入的模式。

未定义模式,执行非法指令时进入的模式。

干预模式,处理IRQ的模式。

快速干预模式,处于是FRQ(快速IRQ)的模式。

Hyp模式,Cortex-A 15专用的虚拟化模式。

 

ARM处理器属于精简指令集处理器(RISC)。因为指令集的减少,很多操作需分步进行,从而减少了相同周期内执行指令的个数。

 

 

 

Android系统移植的主要目的是为了能在特定的硬件上运行Android系统。

1、熟悉硬件抽象层的接口。

Android系统硬件抽象层工作在用户空间,它向下调用Linux中的驱动程序,向上提供接口,供Android系统之外的其它部分调用。

2、集成和复用已有的驱动程序。

linux中的驱动工作在系统的内核空间,这些驱动程序是Linux的标准 驱动程序。

 

Android的移植分为以下几个主要的类型:

基本图形用户界面(GUI)部分,包括显示部分和用户输入部分;

与硬件相关的加速部分,包括媒体编解码和OpenGL;

音视频输入输出环节,包括音频、视频输出和摄像头部分;

连接部分,包括无线局域网、蓝牙、GPS;

电话部分;

附属部分,包括传感器、背光、振动器等。

电源管理。

 

Android系统运行于Linux Kernel之上,但并不等同于GNU / Linux,包括Cairo,X11,Alsa,FFmpeg,GTK,Pango及Glibc等都被Android系统移除掉了。

Android系统以Bionic取代Glibc, Bionic是Android对glibc改良的版本。bionic是一个专为嵌入式系统设计的轻量级标准 库实现,优化和裁剪了一些使用频率低并且资源消耗比较高的函数,使其具有更小的体积和内存占用,提高执行效率。

bionic支持标准 C/C++库的绝大部分功能,支持数学库及NPTL线程库。实现了用于动态库创建和加载操作的Linker和Loader,以及一套使用共享内存方式实现的property系统。

以核心图形引擎Skia取代Cairo,搭配OpenGL/ES,并采用SQLite数据库系统为多媒体数据库。

以OpenCORE取代FFmpeg.

Android为了达到商业应用,必须移除被GNU GPL受权证所约束的部分。

 

Dalvik虚拟机可以有多个实例,每个Android应用程序都有一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。

Dalvik虚拟机并非运行Java字节码,而是运行一种.dex格式的文件。这一格式是Dalvik所独有的一种压缩格式,适合内存空间和处理器速度非常有限的系统。Dalvik虚拟机是基于寄存器的。

Dalvik虚拟机的输入是已经编译好的class文件或jar文件,Dalvik虚拟机首先使用dx工具将文件转换为dex文件,在这个过程中Java指令被翻译成Dalvik指令,文件占用的空间会显著缩小。

Dalvik虚拟机与Java虚拟机除了指令集和类文件格式不同以外,二者拥有差不多的特性,例如,它们都是解释执行,并且支持即时编译JIT,垃圾收集GC,Java本地方法调用JNI,和Java远程调试协义JDWP等。

 

内核的主要用途是实现对设备硬件的编程控制和接口操作,调度对硬件资源的访问,为用户程序提供一个高级的执行环境,和对硬件的虚拟接口,实现用户程序与硬件的交互。

内核实现的是一个资源管理器的功能,内核负责管理并裁定多个竞争用户对资源的访问(包括内核空间和用户空间)。

内核提供两种结构模式,整体式的单内核模式,和层次式的微内核模式。

 

Linux内核由上至下分别为:

系统调用接口,实现系统的基本功能,如read和write功能;

独立于体系结构的内核代码,这些代码是Linux所支持的所有处理器体系结构所通用的内核代码;

依赖于体系结构的代码,用于特定体系结构的处理器和特定平台的代码,构成了BSP(Board Support Package)部分。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号