嵌入式开发流程是什么
嵌入式开发是指利用分立元件或集成器件进行电路设计、结构设计,再进行软件编程(通常是高级语言),实验,经过多轮修改设计、制作,最终完成整个系统的开发。那么嵌入式开发流程是什么呢?
一、嵌入式开发流程
当前,嵌入式开发已经逐步规范化,在遵循一般工程开发流程的基础上,嵌入式开发有其自身的一些特点。主要包括系统需求分析(要求有严格规范的技术要求)、体系结构设计、软硬件及机械系统设计、系统集成、系统测试,最终得到产品。
(1)系统需求分析。确定设计任务和设计目标,并提炼出设计规格说明书,作为正式设计指导和验收的标准。系统的需求一般分功能性需求和非功能性需求两方面。功能性需求是系统的基本功能,如输入输出信号、操作方式等;非功能性需求包括系统性能、成本、功耗、体积、重量等因素。
(2)体系结构设计。描述系统如何实现所述的功能和非功能性需求,包括对硬件、软件和执行装置的功能划分,以及系统的软件、硬件选型等。一个好的体系结构是设计成功与否的关键。
(3)硬件/软件协同设计。基于体系结构,对系统的软件、硬件进行详细设计。为了缩短产品开发周期,设计往往是并行的。嵌入式系统设计的工作大部分都集中在软件设计上,面向对象技术、软件组件技术、模块化设计是现代软件工程经常采用的方法。
(4)系统集成。把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进单元设计过程中的错误。
(5)系统测试。对设计好的系统进行测试,看其是否满足规格说明书中给定的功能要求。
嵌入式系统开发模式最大特点是软件、硬件综合开发。这是因为嵌入式产品是软硬件的结合体,软件针对硬件开发、固化、不可修改。
二、嵌入式开发结构
标准嵌入式开发架构有两大体系: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.开发过程中的相关技术
在嵌入式系统开发过程中,主要包括宿主机与目标机两个部分的开发,宿主机能够对嵌入式系统中的代码编译、定址及链接进行执行,而目标机则是嵌入式系统中的硬件平台。在对嵌入式系统进行开发时,需要将应用程序转换成相应的二进制代码,这些二进制代码能够在目标机中运行。在上述开发过程中,主要可分为三个步骤,分别是编译过程;链接过程与定址过程,其中,嵌入式系统中的交叉编译器能够进行编译,交叉编译器属于一种计算机平台中的代码生成编译器,较为常见的交叉编译器是GNU C/C++(gcc),它会将所有编译完成的目标文件均和一个目标文件进行链接,这便是链接过程。而定址过程则会在目标文件的各个偏移位置对相应的物理存储器地址进行指定,在定址过程中所生成的文件便是二进制文件。在嵌入式系统调试过程中,主要是利用交叉调试器来进行,其调试方式通常采用宿主机-目标机形势,宿主机与目标机之间的连接是通过以太网或串行口线来实现的,在交叉调试任务中,主要包括任务级调试、汇编级调试与源码级调试,在调试过程中需要将宿主机中存储的系统内核与应用程序分别下载到目标机当中的RAM或ROM当中。当目标机运行后,会对宿主机中的调试器控制命令进行接收,同时配合调试器来对应用程序进行下载、运行与调试,然后将调试信息发送到宿主机当中。
2.软件移植技术
在嵌入式系统开发中,软件移植技术无疑是其中的一项关键技术,其是以移植协议来完成软件功能移植的,在移植协议中主要包括三个部分,分别是字节顺序、字节对齐与位段空间分配。在字节顺序中,现有的字节顺序主要包括小段字节与大段字节两种方式,小段字节顺序是依据存储地址中的数据排列顺序来实现的,也就是低地址用于存储低字节数据,高地址则用于存储高字节数据。而大段字节则恰好与小段字节的排序顺序是对调的。在字节对齐方面,现有的字节对齐方式非常多,其主要是以GCC中的MakeFile命令来编译字节,然后对这些字节进行对齐,不过这种对齐方式会存在一些缺陷,因此需要在收数据包位置与发数据位置中分别加入相应的拆包函数与组包函数,以此提高嵌入式系统中软件的互通性与移植性。位段空间分配也是软件移植技术中的重要因素,通常在对位段进行分配时,其顺序应从左至右进行,也有一部分系统是从右向左进行的。通过位段排序来确保嵌入式系统对数据进行准确保存,并利用编程方法来编译位段排序,这样在位段排序过程中只需要将对应的程序进行直接调用即可