传统计算机采用冯·诺依曼(VonNeumann)结构,也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。
特点:
是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址、独立访问。
特点:
在冯诺依曼架构中,指令和数据共享同一个存储器,CPU 只能执行一条指令,因为它需要等待指令和数据都被读取到 CPU 中。可以这样理解,冯诺依曼架构是单车道。
哈佛架构中,指令和数据存储在不同的内存中,CPU 可以同时访问指令和数据内存,因此可以同时执行多条指令。可以这样理解,而哈佛架构是多车道。
冯诺依曼架构的好处,就是简单、易于实现和设计。
哈佛架构的好处,可以使用不同的技术来优化性能。
冯·诺依曼架构适用于大多数通用计算机,因为它能够灵活地处理各种不同的计算任务,同时还可以使用缓存等技术来优化性能。
哈佛架构则适用于一些特定的应用领域,例如需要高效地处理大量数据的嵌入式系统,或数字信号处理器等领域。
一般有多种分类标准,可以根据处理器的字长宽度、系统集成度、用途等方式进行划分
根据嵌入式微处理器的字长宽度(同时能够处理数据的字长),可分为4位、8位、16位、32位和64位。
一般把16位及以下的称为嵌入式微控制器(Embedded Micro Controller, MCU)
32位及以上的称为嵌入式微处理器。
如果按系统集成度划分,可分为两类:
如果根据用途分类,一般分为:
嵌入式微控制器MCU的典型代表是单片机,其片上外设资源比较丰富,适合于控制。MCU芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、看门狗、110、串行口、脉宽调制输出、A/D、DIA、FIaSh RAM、EEPROM等 各种必要功能和外设。和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高,其片上外设资源一般较丰富,适合于控制,是嵌入式系统工业的主流。
领域:遥控器、汽车音响、车载电脑、空调、微波炉油烟机、电磁炉、电饭煲、电风扇、计算器、智能充电器、POS机、收银机、显示器、打印机、扫描仪、无人机、电控门、考勤机等等等
嵌入式微处理器MPU 由通用计算机中的CPU演变而来。它的特征是具有32位以上的处理器,具有较高的性能,当然其价格也相应较高。但与计算机处理器不同的是,在实际嵌入式应用中只保留和嵌入式应用紧密相关的功能硬件,去除其他的兄余功能部分,这样就以最低的功耗和资源实现嵌入式应用的特殊要求。与工业控制计算机相比,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点。目前常见的有ARM、MIPS、POWER PC等。
MCU | MPU | |
---|---|---|
应用领域 | 汽车电子(33%)工控医疗(25%)、计算机网络(23%)消费电子(11%,含智能家居、物联网) | 计算机CPU(50%,含PC、服务器、平板电脑)、手机应用处理器(30%)、嵌入式微处理器(20%,含智能家居、物联网) |
运行系统 | 仅能运行RTOS(实时操作系统) | 可运行完整操作系统,如Linux、Android、 Windows |
主要功能 | 根据外界信号执行控制功能(运动) | 执行处理和运算功能(计算) |
设计结构 | RAM、ROM、计时器等集成在芯片内部 | RAM、ROM、计时器等在CPU外部 |
运算性能 | 通常300MHZ以下 | 通常300MHZ以上 |
嵌入式数字信号处理器DSP 是专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,具有很高的编译效率和指令的执行速度。采用哈佛结构,流水线处理,其处理速度比最快的CPU还快10-50倍。在数字滤波、FFT、光谱分析等各种仪器上DSP获得了大规模的应用。
通信领域:DSP广泛应用于调制解调、信道编解码、信道均衡、自适应滤波等方面。例如,GSM、CDMA、LTE等通信系统都使用DSP技术
音频领域:DSP应用于音频编解码、声音增强、降噪、回声抑制、语音识别等方面。例如,现代音频系统、手机、耳机等都使用DSP技术
图像处理领域:DSP应用于图像压缩、图像滤波、图像增强、边缘检测、图像分割等方面。例如,数字相机、手机摄像头、安防监控、医疗图像等都使用DSP技术。
雷达和信号处理领域:DSP应用于雷达信号处理、目标跟踪、信号分析、故障检测等方面。例如,航空、军事、汽车、火车等领域都使用DSP技术。
控制领域:DSP应用于控制系统、机器人、航天飞行器、汽车控制等方面。例如,自适应控制、PID控制、预测控制等都使用DSP技术。
生物医学领域:DSP应用于心电信号处理、医学影像处理、脑电信号处理、医学数据分析等方面。例如,心电图机、脑电图机、CT、MRI等医疗设备都使用DSP技术。
族入式片上系统SOC,是追求产品系统最大包容的集成器件。SoC最大的特点是成功实现了软硬件无缝结合,直接在处理器片内嵌入操作系统的代码模块。是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。(集成了软件系统)
领域:高端SoC芯片主要集中于手机、平板电脑服务器市场等,次高端SoC芯片多应用于安防、智能音频、物联网等领域,专用型SoC芯片多应用于TWS耳机和智能手表等。
多核指多个微处理器内核,是将两个或更多的微处理器封装在一起,集成在一个电路中。多核处理器是单枚芯片,能够直接插入单一的处理器插槽中。多核与多CPU相比很好的降低了计算机系统的功耗和体积。在多核技术中,由操作系统软件进行调度,多进程,多线程并发都可以。
将2颗完全一样的处理器封装在一个芯片内,达到双倍或接近双倍的处理性能,节省运算资源。
2个处理内核彼此不同,各自处理和执行特定的功能,在软件的协调下分担不同的
计算任务。
(当有多个任务运行时,如何进行CPU的分配)
嵌入式软件是指应用在嵌入式计算机系统当中的各种软件,除了具有通用软件的一般特性,还具有一些与嵌入式系统相关的特点,包括:规模较小、开发难度大、实时性和可靠性要求高、要求固化存储。
由于嵌入式系统一般是在恶劣的环境条件下工作,与一般处理器相比,嵌入式处理器应可抵抗恶劣环境的影响,比如高温、寒冷、电磁、加速度等环境因素。为适应恶劣环境,嵌入式处理器芯片除满足低功耗、体积小等需求外,根据不同环境需求,其工艺可分为民用、工业和军用等三个档次。
是指除嵌入式处理器以外的构成系统的其他硬件,包括存储器、定时器、总线、IO接口以及相关专用硬件
是指运行在嵌入式系统中的基础软件,主要用于管理计算机资源和应用软件。与通用操作系统不同,嵌入式操作系统应具备实时性、可剪裁性和安全性等特征。
是指为应用软件开发与运行提供公共服务、软件开发、调试能力的软件,支撑软件的公共服务通常运行在操作系统之上,以库的方式被应用软件所引用。
应用软件是指为完成嵌入式系统的某一特定目标所开发的软件。
嵌入式系统面向特定应用需求,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统的小型化。
嵌入式系统将先进的计算机技术、通信技术、半导体技术和电子技术与各个行业的具体应用相结合,是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
软件是嵌入式系统的主体,有IP核。嵌入式系统的硬件和软件都可以高效地设计,量体裁衣,去除冗余,可以在同样的硅片面积上实现更高的性能。
由于嵌入式系统通常只完成少数几个任务。设计时考虑到其经济性,不能使用通用CPU,这就意味着管理的资源少,成本低,结构更简单。
为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存在磁盘中。
嵌入式系统本身不具备开发能力,即使设计完成以后,用户通常也不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。
根据不同用途可将嵌入式系统划分为嵌入式实时系统和嵌入式非实时系统两种,而实时系统又可分为强实时系统和弱实时系统。如果从安全性要求看,嵌入式系统还可分为安全攸关系统和非安全攸关系统。
嵌入式系统分为:
介于主板硬件和操作系统中驱动层程序之间的一层,隶属于设备驱动层,一般认为它属于操作系统一部分主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。
BootLoader是嵌入式系统加电后运行的第一段软件代码,是在操作系统内核运行之前运行的一小段程序,通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境设置到一个合适的状态,以便为最终调用操作系统内核做好准备。一般包括以下功能:
在一个嵌入式系统当中,操作系统是可能有也可能无的。但无论如何,设备驱动程序是必不可少的。所谓的设备驱动程序,就是一组库函数,用来对硬件进行初始化和管理,并向上层软件提供良好的访问接口。
对于不同的硬件设备来说,它们的功能是不一样的,所以它们的设备驱动程序也是不一样的。但是一般来说,大多数的设备驱动程序都会具备以下的一些基本功能:
一个完整的EDBMS由若于子系统组成,包括主数据库、同步服务器、嵌入式数据库和连接网络等几个子系统
嵌入式移动数据库在实际应用中必须解决好数据的一致性(复制性)、高效的事务处理和数据的安全性等关键问题
嵌入式实时系统是一种完全嵌入受控器件内部,为特定应用而设计的专用计算机系统。在嵌入式实时系统中,要求具有:
可预测性是指系统在运行之前其功能、响应特性和执行结果是可预测的;确定性是指系统在给定的初始状态和输入条件下,在确定的时间内给出确定的结果。
当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,并控制所有实时任务协调一致运行。因而,提供及时响应和高可靠性是其主要特点。
实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的:软实时则只要按照任务的优先级,尽可能快地完成操作即可。
计时精度是影响实时性的一个重要因素。在实时应用系统中,经常需要精确确定实时地操作某个设备或执行某个任务,或精确的计算一个时间函数。这些不仅依赖于一些硬件提供的时钟精度也依赖于实时操作系统实现的高精度计时功能。
一个实时应用系统通常需要处理多种外部信息或事件,但处理的紧迫程度有轻重缓急之分。有的必须立即作出反应,有的则可以延后处理。因此,需要建立多级中断嵌套处理机制,以确保对紧迫程度较高的实时事件进行及时响应和处理。
实时操作系统不仅要及时响应实时事件中断,同时也要及时调度运行实时任务。但是,处理机调度并不能随心所欲的进行,因为涉及到两个进程之间的切换,只能在确保“安全切换”的时间点上进行实时调度机制包括两个方面,一是在调度策略和算法上保证优先调度实时任务:二是建立更多“安全切换”时间点,保证及时调度实时任务。
嵌入式系统要进行低功耗设计,主要技术有:编译优化技术、软硬件协同设计、算法优化。
嵌入式系统软件的特点:规模较小、开发难度大、实时性和可靠性要求高、要求固化存储
一个典型的交叉平台开发环境,包含三个高度集成的部分:
嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的CPU需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。嵌入式系统的开发需要借助宿主机(通用计算机)来编译出目标机的可执行代码。
嵌入式软件经过编译和链接后即进入调试阶段,调试是软件开发过程中必不可少的一个环节,嵌入式软件开发过程中的交叉调试与通用软件开发过程中的调试方式有很大的差别。
在嵌入式软件开发中,调试时采用的是在宿主机和目标机之间进行的交叉调试,调试器仍然运行在宿主机的通用操作系统之上,但被调试的进程却是运行在基于特定硬件平台的嵌入式操作系统中,调试器和被调试进程通过串口或者网络进行通信,调试器可以控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。
用于编写嵌入式源代码程序,从理论上来说,任何一个文本编辑器都可以用来编写源代码。各种集成开发环境会提供功能强大的编辑器,如VS系列、eclipse、keil、cSs等。常见的独立编辑器:UE、Source Insight、vim等。
编译阶段的工作是用交叉编译工具处理源代码,生成可执行的目标文件,在嵌入式系统中,由于宿主机和目标机系统不一样,需要使用交叉编译,GNU CIC++(gcc)是目前常用的一种交叉编译器,支持非常多的宿主机/目标机组合。
在开发嵌入式软件时,交叉调试是必不可少的一步。
嵌入式软件调试特点:调试器运行在宿主机上,被调试程序运行在目标机上
调试器通过某种通信方式与目标机建立联系,如串口、并口、网络、JTAG等。在目标机上一般有调试器的某种代理,能配合调试器一起完成对目标机上运行程序的调试,可以是软件或支持调试的硬件。
gdb是GNU开源组织发布的一个强大的程序调试工具。