来源(百度百科)

From: http://baike.baidu.com/view/657641.htm

嵌入式系统开发

嵌入式系统开发就是对于除了电脑之外的所有电子设备上操作系统的开发,开发对象有手机,掌上电脑,机电系统等。

目录

1. 简介

2. 特点

3. 核心技术

▪ 处理器技术

▪ IC技术

▪ 设计/验证技术

4. 基础知识

5. 开发流程

▪ 第一步:建立开发环境

▪ 第二步:配置开发主机

▪ 第三步:建立引导装载程序BOOTLOADER

▪ 第四步:下载已经移植好的Linux操作系统

▪ 第五步:建立根文件系统

▪ 第六步:建立应用程序的FLASH磁盘分区

▪ 第七步:开发应用程序

▪ 第八步:烧写内核

 

1. 简介

嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用 户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能

嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。

 

2. 特点

嵌入式计算机系统同通用型计算机系统相比具有以下特点:

1.嵌入式系统通常是面向特定应用的嵌入式CPU与通用型的最大不同就是嵌入式CPU大多工作在为特定用户群设计的系统中,它通常都具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,移动能力大大增强,跟网络的耦合也越来越紧密。

2.嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。

3.嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。

4.嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。

5.为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。

6.嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发。

 

3. 核心技术

处理器技术

处理器技术与实现系统功能的计算引擎结构有关,很多不可编程的数字系统也可以视为处理器,这些处理器的差别在于其面向特定功能的专用化程度,导致其设计指标与其它处理器不同。

(1)通用处理器

这类处理器可用于不同类型的应用,一个重要的特征就是存储程序,由于设计者不知道处理器将会运行何种运算,所以无法用数字电路建立程序。另一个特征就是通用的数据路径,为了处理各类不同的计算,数据路径是通用的,其数据路径一般有大量的寄存器以及一个或多个通用的算术逻辑单元。设计者只需要对处理器的存储器编程来执行所需的功能,即设计相关的软件。 在嵌入式系统中使用通用处理器具有设计指标上的一些优势。提前上市时间和NRE成本较低,因为设计者只需编写程序,而不需要做任何数字设计,灵活性高,功能的改变通过修改程序进行即可。与自行设计处理器相比,数量少时单位成本较低。

当然,这种方式也有一些设计指标上的缺陷,数量大时的单位成本相对较高,因为数量大时,自行设计的NRE成本分摊下来,可降低单位成本。同时,对于某些应用,性能可能很差。由于包含了非必要的处理器硬件,系统的体积和功 耗可能变大。

(2)单用途处理器

单用途处理器是设计用于执行特定程序的数字电路,也指协处理器、加速器、外设等。如JPEG编码解码器执行单一程序,压缩或解压视频信息。嵌入式系统设计者可通过设计特定的数字电路来建立单用途的处理器。设计者也可以采用预先设计好的商品化的单用途处理器。

在嵌入式系统中使用单用途处理器,在指标上有一些优缺点。这些优缺点与通用处理器基本相反,性能可能更好,体积与功率可能较小,数量大时的单位成本可能较低,而设计时间与NRE成本可能较高,灵活性较差,数量小时的单位成本较高,对某些应用性能不如通用处理器。

(3)专用处理器

专用指令集处理器(ASIP)是一个可编程处理器,针对某 一特定类型的应用进行最优化。这类特定应用具有相同的特征,如嵌入式控制、数字信号处理等。在嵌入式系统中使用ASIP可以保证良好的性能、功率和大小的 情况下,提供更大的灵活性,但这类处理器仍需要昂贵的NRE成本建立处理器本身和编译器,单片机和数字信号处理器是两类应用广泛的ASIP,数字信号处理器是一种针对数字信号进行常见运算的微处理器,而单片机是一种针对嵌入式控制应用进行最佳化的微处理器,通常控制应用中的常见外设,如串行通信外设、定时 器、计数器、脉宽调制器及数/模转换器等都集成到了微处理器芯片上,从而使得产品的体积更小、成本更低。

IC技术

(1)全定制/VLSI

在全定制IC技术中,需要根据特定的嵌入式系统的数字实现来优化各层,设计人员从晶体管的版图尺寸、位置、连线开始设计以达到芯片面积利用率高、速度快、功耗低的最优化性能。利用掩膜在制造厂生产实际芯片,全定制的IC设计也常称为大规模集成电路设计,具有很高的NRE成本、很长的制造时间,适用于大量或对性能要求严格的应用。

(2)半定制ASIC

半定制ASIC是一种约束型设计方法,包括门阵列设计法和 标准单元设计法。它是在芯片制作好一些具有通用性的单元元件和元件组的半成品硬件,设计者仅需要考虑电路的逻辑功能和各功能模块之间的合理连接即可。这种设计方法灵活方便、性价比高,缩短了设计周期,提高了成品率。

(3)可编程ASIC

可编程器件中所有各层都已经存在,设计完成后,在实验室里即可烧制出设计的芯片,不需要IC厂家参与,开发周期显著缩短。 可编程ASIC具有较低的NRE成本,单位成本较高,功耗较大,速度较慢。

设计/验证技术

嵌入式系统的设计技术主要包括硬件设计技术和软件设计技术两大类。其中,硬件设计领域的技术主要包括芯片级设计技术和电路板级设计技术两个方面。

芯片级设计技术的核心是编译/综合、库/IP、测试/验证。编译/综合技术使设计者用抽象的方式描述所需的功能,并自动分析和插入实现细节。库/IP技术将预先设计好的低抽象级实现用于高级。测试/验证技术确保每级功能正确,减少各级之间反复设计的成本。

 

4. 基础知识

一、软件方面的知识:

1、嵌入式微处理器结构与应用:

或传统的“微机原理与接口”课程,嵌入式是软硬件结合的技术,搞嵌入式系统的人应对ARM处理器工作原理和接口技术有充分了解,包括汇编指令系统。不了解处理器原理,就没办法写出驱动程序。在嵌入式开发的一些关键部分,如Bootloader等,主要靠汇编写程序。

2、嵌入式操作系统类课程:

从事嵌入式系统的人至少须掌握一个嵌入式操作系统(当然越多越好),目前最重要的RTOS主要包括:

(1)、传统的经典RTOS:最主要的是Vxworks操作系统,以及其Tornado开发平台。Vxworks出现早,实时性很强,并且内核可极微,可靠性较高。特别在通信设备等实时性要求较高的系统中,有比较广泛的应用。

(2)、嵌入式Linux操作系统:嵌入式Linux广泛应用的原因当然是免费、开源、支持软件多、支持者多,成本也低。

(3)、 Windows CE嵌入式操作系统:Windows CE是微软的操作系统,也有很大的市场份额,特别是在PDA、手机等界面要求较高或者要求快速开发的场合。

3、嵌入式开发的其它相关软件课程:

(1)、数字图像压缩技术:嵌入式最热门的应用领域之一,要掌握MPEG编解码算法和技术,如DVD、MP3、PDA、高清电视、机顶盒等都涉及MPEG高速解码问题。

(2)、通信协议及编程技术:大多数嵌入式设备都要连入局域网或Internet,所以首先应掌握TCP/IP协议及其编程;另外,掌握无线通信协议及编程也是是很重要的。

(3)、网络与信息安全技术:如加密技术,数字证书CA等。

二、硬件方面的知识:

模拟电路、数字电路、计算机组成原理、微处理器结构、单片机等硬件课程是从事嵌入式开发要掌握的。

嵌入式本身就是从单片机发展过来的,如今很多单片机都已经带OS,嵌入式开发领域,驱动人才非常缺乏。写驱动必须掌握操作系统的内部工作原理,包括相关的硬件知识,即所谓的软硬通吃,所以这方面的人才是一将难求。

 

5. 开发流程

第一步:建立开发环境

操作系统一般使用Redhat Linux,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(比如,arm-linux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的相关交叉编译器;

第二步:配置开发主机

配 置MINICOM,一般的参数为波特率115200 Baud/s,数据位8位,停止位为1,9,无奇偶校验,软件硬件流控设为无。在Windows下的超级终端的配置也是这样。MINICOM软件的作用是 作为调试嵌入式开发板的信息输出的监视器和键盘输入的工具。配置网络主要是配置NFS网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。

第三步:建立引导装载程序BOOTLOADER

从 网络上下载一些公开源代码的BOOTLOADER,如U.BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根据具体芯片 进行移植修改。有些芯片没有内置引导装载程序,比如,三星的ARV17、ARM9系列芯片,这样就需要编写开发板上FLASH的烧写程序,可以在网上下载 相应的烧写程序,也有Linux下的公开源代码的J-FLASH程序。如果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。这是让系统可 以正常运行的第一步。如果用户购买了厂家的仿真器比较容易烧写FLASH,虽然无法了解其中的核心技术,但对于需要迅速开发自己的应用的人来说可以极大提 高开发速度。

第四步:下载已经移植好的Linux操作系统

如 MCLiunx、ARM-Linux、PPC-Linux等,如果有专门针对所使用的CPU移植好的Linux操作系统那是再好不过,下载后再添加特定硬 件的驱动程序,然后进行调试修改,对于带MMU的CPU可以使用模块方式调试驱动,而对于MCLiunx这样的系统只能编译内核进行调试。

第五步:建立根文件系统

下 载使用BUSYBOX软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他的程序。由于默认的启动脚本一般都不会符合应用的需 要,所以就要修改根文件系统中的启动脚本,它的存放位置位于/etc目录下,包括:/etc/init.d/rc.S、/etc/profile、 /etc/.profile等,自动挂装文件系统的配置文件/etc/fstab,具体情况会随系统不同而不同。根文件系统在嵌入式系统中一般设为只读, 需要使用mkcramfs genromfs等工具产生烧写映像文件。

第六步:建立应用程序的FLASH磁盘分区

一 般使用JFFS2或YAFFS文件系统,这需要在内核中提供这些文件系统的驱动,有的系统使用一个线性FLASH(NOR型)512KB~32MB,有的 系统使用非线性FLASH(NAND型)8MB~512MB,有的两个同时使用,需要根据应用规划FLASH的分区方案。

第七步:开发应用程序

可以放入根文件系统中,也可以放入YAFFS、JFFS2文件系统中,有的应用不使用根文件系统,直接将应用程序和内核设计在一起,这有点类似于μC/OS-II的方式。

第八步:烧写内核

根文件系统和应用程序,发布产品。[1]

 

参考资料

  • 1. 嵌入式开发系统流程 .亚嵌教育 .2013-04-28 [引用日期2013-04-28] .

 

Link: http://www.asm32.net/article_details.aspx?id=6526