嵌入式开发就是指在嵌入式操作系统下进行开发,包括在系统化设计指导下的硬件和软件以及综合研发。除暂且分离硬件的EDA研发以外,侧重的就是在一定硬件条件下的系统化设计和软件研发。
一、嵌入式开发的定义
嵌入式开发是指利用分立元件或集成器件进行电路设计、结构设计,再进行软件编程(通常是高级语言),实验,经过多轮修改设计、制作,最终完成整个系统的开发。这种嵌入式开发,适用于未来产品比较单一,产量比较大,产品开发周期比较长,成本控制比较严格的系统。
嵌入式技术不是单纯的软件技术,也不是单纯的硬件技术,是一门如何在一个特定的硬件环境上开发与构建特定的可编程软件系统的综合技术。嵌入式技术是在嵌入式系统的发展中应运而生的,它是依附于嵌入式系统,并推动嵌入式系统不断向前发展的核心动力。嵌入式是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是是由单个程序实现整个控制逻辑。嵌入式技术近年来得到了飞速的发展,但是嵌入式产业涉及的领域非常广泛,彼此之间的特点也相当明显。例如,很多行业:手机、PDA、车载导航、工控、军工、多媒体终端、网关、数字电视等。
二、主流的嵌入式开发平台
主流的嵌入式平台有三种:ARM平台、DSP平台和FPGA平台。
1、ARM
ARM微处理器是由ARM公司提供IP(Intellectual Property,知识产权)授权,交付多个芯片设计厂商整合生产的。在2007年,意法半导体(ST)公司成为第一个引入ARM Cortex-M授权的半导体厂商,开启了高性能、低成本、低功耗的ARM嵌入式芯片新时代,其生产的STM32系列微处理器是最流行的Cortex-M微处理器。ARM嵌入式系统广泛应用于自动检测与控制、智能仪器仪表、机电一体化设备、汽车电子及日常消费电子产品中,其优越的性能和完善的开发环境得到广大电子工程师的青睐。
2、DSP平台
嵌入式DSP处理器(Embedded Digital Signal Processor,EDSP),是专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,芯片内部采用程序和数据分开存储及传输的哈佛结构,具有专门硬件乘法器,采用流水线操作,提供特殊的DSP指令,可用来快速地实现各种数字信号处理算法,具有很高的编译效率和指令的执行速度,在数字滤波、FFT、谱分析等各种仪器上获得了大规模的应用。
3、FPGA平台
随着平台级FPGA产品的出现和EDA设计工具软件的不断发展,利用现有的FPGA和EDA工具,人们也可以很方便地在FPGA中嵌入RISC(Reduced Instruction Set Computer,精简指令集)处理器内核、DSP算法、存储器、专用ASIC模块、其它数字IP Core以及用户定制逻辑等,构建成一个可编程的片上系统(SOPC),把原来需要在PCB上采用处理器、DSP、若干ASIC芯片才能实现的功能全都集成到了单片FPGA上。
FPGA内部嵌入了丰富的乘法器(DSP)资源、高速收发器(GTP/GTX)资源、以太网MAC资源、嵌入式处理器(Power PC)资源、时钟及锁相环资源、存储器(BRAM)资源等,甚至在Xilinx公司最新推出的Zynq-7000系列芯片之中嵌入了ARM资源,将传统的FPGA演变成了ARM+FPGA的扩展开发平台。这些嵌入的硬件资源极大地增强了传统FPGA的功能,提升了FPGA的工作效率和灵活性,使得一块FPGA平台就可适用于多种产品,进行各种扩展。开发者只需要掌握Verilog HDL等硬件描述语言和嵌入式系统开发的相关知识,就可对整个系统进行编程和控制。
三、嵌入式开发的硬件环境需求
(1)嵌入式处理器:MPU、DSP。
(2)存储器系统:Flash+RAM+MEM card+mini HD。
嵌入式系统有别于一般的通用计算机系统,它不具备像硬盘那样大容量的存储介质,而用静态易失型存储器(RAM、SRAM)、动态存储器(DRAM)和非易失型存储器(ROM、EPROM、EEPROM、FLASH)作为存储介质,其中FLASH凭借其可擦写次数多、存储速度快、存储容量大、价格便宜等优点,在嵌入式领域内得到了广泛应用。
(3)输入设备:键盘,视/音频输入,A/D。
(4)输出设备:显示(LED/LCD/OLED)装置,视/音频输出,A/D。
(5)通讯接口:Ehternet(802.3),WIFI(802.11)。
(6)总线接口:RS232/RS485,USB,1394(Firewire)。
(7)电源管理:待机、休眠、功耗管理等。
嵌入式开发的硬件平台选择主要是嵌入式处理器的选择。在具体应用中处理器的选择决定了其市场竞争力。在一个系统中使用什么样的嵌入式处理器主要取决于应用领域、用户的需求、成本、开发的难易程度等因素。在开发过程中,选择最适用的硬件平台是一项很复杂的工作,包括要考虑其他工程的影响以及缺乏完整或准确的信息等。
四、嵌入式开发的结构
标准嵌入式开发架构有两大体系:CISC(Complex Instruction Set Computer,复杂指令集计算机)和RISC(Reduced Instruction Set Computer,精简指令集计算机)。
早期的CPU全部是CISC架构,它的设计目的主要用最少的机器语言指令来完成所需的计算任务。这种架构会增加CPU结构的复杂性和对CPU工艺的要求,但对于编译器的开发十分有利。只有Intel及其兼容CPU还在使用CISC架构。RISC架构要求软件来指定各个操作步骤,可以降低CPU的复杂性以及允许在同样的工艺水平下生产功能更强大的CPU,但对于编译器的设计有更高的要求。占主要地位的是RISC处理器。
RISC体系的阵营非常广泛,从ARM、MIPS到PowerPC、ARC、Tensilica等,都是属于RISC处理器范畴。不过这些处理器虽然同样是属于RISC体系,但是在指令设计与处理单元的结构上都各有不同,因此彼此完全不能兼容,在特定平台上所开发的软件无法直接为另一硬件平台所用,而必须重新经过编译。CISC和RISC正在逐步走向融合,Pentium Pro、Nx586、K5就是一个明显的例子,它们的内核都是基于RISC体系结构的,它们接受CISC指令后将其分类成RISC指令以便在同一时间内能够执行多余指令。
五、嵌入式开发的流程
当前,嵌入式开发已经逐步规范化,在遵循一般工程开发流程的基础上,嵌入式开发有其自身的一些特点。主要包括系统需求分析(要求有严格规范的技术要求)、体系结构设计、软硬件及机械系统设计、系统集成、系统测试,最终得到产品。
(1)系统需求分析。确定设计任务和设计目标,并提炼出设计规格说明书,作为正式设计指导和验收的标准。系统的需求一般分功能性需求和非功能性需求两方面。功能性需求是系统的基本功能,如输入输出信号、操作方式等;非功能性需求包括系统性能、成本、功耗、体积、重量等因素。
(2)体系结构设计。描述系统如何实现所述的功能和非功能性需求,包括对硬件、软件和执行装置的功能划分,以及系统的软件、硬件选型等。一个好的体系结构是设计成功与否的关键。
(3)硬件/软件协同设计。基于体系结构,对系统的软件、硬件进行详细设计。为了缩短产品开发周期,设计往往是并行的。嵌入式系统设计的工作大部分都集中在软件设计上,面向对象技术、软件组件技术、模块化设计是现代软件工程经常采用的方法。
(4)系统集成。把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进单元设计过程中的错误。
(5)系统测试。对设计好的系统进行测试,看其是否满足规格说明书中给定的功能要求。
嵌入式系统开发模式最大特点是软件、硬件综合开发。这是因为嵌入式产品是软硬件的结合体,软件针对硬件开发、固化、不可修改 。
六、嵌入式开发的主要特征
嵌入式系统国内普遍认同的定义是:以计算机技术为基础,以应用为中心,软件、硬件可剪裁,适合应用系统对功能可靠性、成本、体积、功耗严格要求的专业计算机系统。在构成上,嵌入式系统以微处理器及软件为核心部件,两者缺一不可;在特征上,嵌入式系统具有方便、灵活地嵌入到其他应用系统的特征,即具有很强的嵌入性。
按嵌入式微处理器类型划分,嵌入式系统可分为以单片机为核心的嵌入式单片机系统;以工业计算机板为核心的嵌入式计算机系统;以DSP为核心组成的嵌入式数字信号处理器系统;以FPGA为核心的嵌入式SOPC(System On a Programmable Chip,可编程片上系统)系统等。
嵌入式系统在含义上与传统的单片机系统和计算机系统有很多重叠部分。为了方便区分,在实际应用中,嵌入式系统还应该具备下述三个特征:
(1)嵌入式系统的微处理器通常是由32位及以上的RISC(Reduced Instruction Set Computer,精简指令集计算机处理器)组成,例如ARM、MIPS等。
(2)嵌入式系统的软件系统通常是以嵌入式操作系统为核心,外加用户应用程序。
(3)嵌入式系统在特征上具有明显的可嵌入性。
七、嵌入式开发的关键性技术
1.开发过程中的相关技术
在嵌入式系统开发过程中,主要包括宿主机与目标机两个部分的开发,宿主机能够对嵌入式系统中的代码编译、定址及链接进行执行,而目标机则是嵌入式系统中的硬件平台。在对嵌入式系统进行开发时,需要将应用程序转换成相应的二进制代码,这些二进制代码能够在目标机中运行。在上述开发过程中,主要可分为三个步骤,分别是编译过程;链接过程与定址过程,其中,嵌入式系统中的交叉编译器能够进行编译,交叉编译器属于一种计算机平台中的代码生成编译器,较为常见的交叉编译器是GNU C/C++(gcc),它会将所有编译完成的目标文件均和一个目标文件进行链接,这便是链接过程。而定址过程则会在目标文件的各个偏移位置对相应的物理存储器地址进行指定,在定址过程中所生成的文件便是二进制文件。在嵌入式系统调试过程中,主要是利用交叉调试器来进行,其调试方式通常采用宿主机-目标机形势,宿主机与目标机之间的连接是通过以太网或串行口线来实现的,在交叉调试任务中,主要包括任务级调试、汇编级调试与源码级调试,在调试过程中需要将宿主机中存储的系统内核与应用程序分别下载到目标机当中的RAM或ROM当中。当目标机运行后,会对宿主机中的调试器控制命令进行接收,同时配合调试器来对应用程序进行下载、运行与调试,然后将调试信息发送到宿主机当中。
2.软件移植技术
在嵌入式系统开发中,软件移植技术无疑是其中的一项关键技术,其是以移植协议来完成软件功能移植的,在移植协议中主要包括三个部分,分别是字节顺序、字节对齐与位段空间分配。在字节顺序中,现有的字节顺序主要包括小段字节与大段字节两种方式,小段字节顺序是依据存储地址中的数据排列顺序来实现的,也就是低地址用于存储低字节数据,高地址则用于存储高字节数据。而大段字节则恰好与小段字节的排序顺序是对调的。在字节对齐方面,现有的字节对齐方式非常多,其主要是以GCC中的MakeFile命令来编译字节,然后对这些字节进行对齐,不过这种对齐方式会存在一些缺陷,因此需要在收数据包位置与发数据位置中分别加入相应的拆包函数与组包函数,以此提高嵌入式系统中软件的互通性与移植性。位段空间分配也是软件移植技术中的重要因素,通常在对位段进行分配时,其顺序应从左至右进行,也有一部分系统是从右向左进行的。通过位段排序来确保嵌入式系统对数据进行准确保存,并利用编程方法来编译位段排序,这样在位段排序过程中只需要将对应的程序进行直接调用即可。
八、嵌入式开发主要的考虑因素
嵌入式系统是以实际应用为主要考虑对象的专用计算机系统,嵌入式的特点就是软硬件可配置、功能可靠、成本低、体积小、功耗低、实时性强。因此,嵌入式系统受功能和具体应用环境的约束,其开发流程就不同于一般的通用计算机系统。在嵌入式系统设计开发时必须考虑以下因素:
·功能可靠实用,便于升级;
·实时并发处理,及时响应;
·体积符合要求,结构紧凑;
·接口符合规范,易于操作;
·配置精简稳定,维护便利;
·功耗严格管理,成本低廉 。