APP下载

嵌入式软件开发方法的应用

2018-09-20漆震云

无线互联科技 2018年15期
关键词:开发方法嵌入式系统

漆震云

摘要:文章从学习嵌入式系统开发所需要具备的计算机专业理论基础、硬件和软件方面的基本知识、基本技能和基本方法入手,从软件工程方法角度提出嵌入式系统开发方法及其工程应用,为构建嵌入式系统开发人员智能结构基础做了一些有益的探索。

关键词:嵌入式系统;开发方法;智能结构

嵌入式系统是以单个或几个特定功能程序加上相关操作系统存储在ROM中的、以实现特定控制功能为目的的专用的嵌入式处理器控制单元。嵌入式系统的开发设计与实现以计算机专业技术和相关应用领域专业知识为基础,通过以嵌入式处理器为核心的硬件与软件有机结合、优势互补的专门设计,满足特定应用项目对控制功能、外形尺寸、功率损耗、经济成本、可靠性等方面的特殊需求。

ARM+Linux是目前比较流行的嵌入式系统开发组合模式,从硬件方面,需要学习ARM接口电路设计和C语言的板级编程,从软件方面,需要学习ARM处理器的操作系统层面的驱动与移植。

本文从学习嵌入式系统开发需要具备的计算机专业理论基础、硬件和软件方面的基本知识、基本技能和基本方法入手,从软件工程方法角度提出嵌入式系统开发方法及其工程应用。

1 嵌入式软件开发需要具备的知识

1.1 理论基础方面的基本知识与基本技能

嵌入式软件开发需要具备理论基础知识方面包括以下内容。

(1)理论基础知识。微机原理及接口技术、单片机原理及接口技术等。(2)嵌入式专业基础知识。单片机包括STM32, MSP430, AVR等。嵌入式FPGA:逻辑设计、协议转换、算法设计等。嵌入式DSP:DSP算法开发、DSP驱动开发等。嵌入式ARM:系统内核、驱动开发、应用开发、bootloader开发等。(3)嵌入式专业应用基础知识。信号多媒体领域应用基础知识包括音频、视频和图像等;通信领域应用基础知识包括通信原理、随机信号自适应等;控制领域应用基础知识包括控制原理、人工智能、机器学习等。

1.2 硬件方面的基本知识与基本技能

嵌入式软件开发需要具备硬件方面的基本知识与基本技能包括以下内容。

(1)电路与电子技术基础:电路分析基础、模拟电子技术、数字电子技术、微处理器技术、电子元器件基本知识。(2)电路图识图与制图。(3)PCB基础:PCB制图、PCB加工工艺等。(4)高速信号电路与电源等。

嵌入式系统开发需要具备硬件方面的基础知识与基本技能主要包括嵌入式微处理器的体系结构和硬件总线接口。嵌入式处理器的体系结构既可以采用冯·诺依曼体系结构,也可以采用哈佛体系结构。指令系统既可以选用精简指令系统(Reduced Instruction Set Computer,RISC),也可以选用复杂指令系统(Complex Instruction Set Computer,CISC)。RISC由于在数据通道中只包含最有用的指令,可以确保指令的快速执行,从而节约了指令执行时间、提高了指令执行效率,并使得嵌入式系统硬件设计更加简捷。

目前应用比较广泛的嵌入式处理器包括ARM,MIPS,PowerPC,DSP等,建议首先以目前主要流行的嵌入式处理器的一种,作为入门性学习,从而掌握嵌入式处理器的基本知识与基本技能,然后根据学习和工作需要,再进行针对性的强化学习和补充,采取精通一个,触类旁通的学习方法。需要预先学习微机原理、单片机原理作为基础。

嵌入式处理器的硬件总线接口基本知识与基本技能,目前主要流行的嵌入式处理器的硬件总线接口包括模/数(Analog to Digit,A/D)转换接口、数/模(Digit to Analog,D/A)转换接口,I/O接口包括RS-232串行通信接口、Ethernet以太網接口、USB通用串行总线接口、SPI串行外围设备接口、Audio音频接口、VGA视频输出接口、IrDA红外线接口、IIC集成电路总线、UART通用异步串行总线接口、MDIO管理数据输入输出串行总线接口等。

各种外部设备都必须通过硬件总线接口与嵌入式微处理器监控系统进行物理连接,熟悉和掌握各种硬件总线接口基本知识与基本技能,对于嵌入式驱动软件的开发具有极其重要的意义。

1.3 软件方面的基本知识与基本技能

⑴工具类包括C语言,C++语言(Qt,MFC), Python,Matlab,LabVIEW等。(2)程序类包括程序算法、数据结构等。(3)系统类包括Linux系统、Windows系统等。

嵌入式软件开发以C语言为基本开发语言,C语言是一门通用的计算机程序设计语言,C语言包括数据类型、运算符与表达式、程序结构、顺序、选择、循环、数组、函数、预处理命令、指针、结构体与共用体、文件、位运算等内容。

熟悉和掌握指针、结构指针、指针函数、数据类型及转换的基本知识,对const,static,volatile,packed,aligned等常用关键字的意义与功能的理解。

C语言既具有高级语言的结构化特点,又具有汇编语言的实用性特点,还具有可移植性的特点。C语言具有很多低级处理功能,同时具有代码级别跨平台运行特点,以标准规格编写的C语言程序可运用于多种操作系统,如Windows,DOS,UNIX等操作系统,也适用于在大、中、小、微型计算机以及嵌入式单片机平台进行编译。

具备超强的数据处理能力使得C语言广泛应用于系统软件开发、应用软件开发、二维与三维图形和动画设计等各类科研生产生活领域。

在嵌入式系统开发设计与实现过程中,C语言既可以用于编写嵌入式系统的系统程序,也可以用于编写不依赖于嵌入式系统硬件的应用程序。

1.4 嵌入式软件开发的基本方法与基本技能

嵌入式软件开发的基本方法与基本技能的形成,首先是嵌入式软件开发环境的构建与嵌入式软件开发流程的熟悉,其次是嵌入式软件驱动程序开发和嵌入式软件应用程序开发的基本知识与基本训练,学习理解和掌握嵌入式软件设计理念和方法,最后就是把以上这些基本知识、基本技能和基本方法,通过编程实践,融会贯通形成自己的设计理念与方法,运用到嵌入式软件开发工程项目的设计与实现之中,循环往复不断提升。

嵌入式系统具有鲜明的专用性,必须结合项目需求具体实际情况,以嵌入式处理器为核心的硬件与软件有机结合、优势互补的专门设计,才能满足应用系统项目对控制功能、外形尺寸、功率损耗、经济成本、可靠性等方面的特殊需求。

通过构建相对通用的嵌入式系统开发所需要的软硬件环境平台,开发出适应各种功能需要的应用系统,是嵌入式系统开发人员的初衷与愿望。目前嵌入式系统的核心内容往往是一个只有几K或几十K微内核,根据项目需求实际情况,对微内核进行功能扩展或裁剪是比较高效快捷的嵌入式系统软件开发方法。

嵌入式系统的构架分成4个部分:嵌入式微处理器、存储器(SDRAM,ROM,Flash)、输入输出(A/D,D/A,I/O)接口、操作系统软件和应用软件。

嵌入式系统装置由嵌入式计算机控制系统和执行机构组成,执行机构接受嵌入式计算机控制系统发出的控制指令,执行相关特定的操作功能。执行机构既可以很简单,也可以很复杂。根据项目应用需求,集成相关数量和种类的微小型控制电机以及相关数量和种类的传感器,从而感受各种状态信息并执行相关特定的功能动作。

从嵌入式系统开发设计实现角度分析,嵌入式系统由硬件层、中间层、系统软件层和应用软件层组成。

(1)硬件层就是在一片芯片上集成嵌入式处理器电路、存储器(SDRAM,ROM,Flash)电路和输入输出(A/D,D/A,I/O)电路、电源电路、时钟电路等功能电路,嵌入式操作系统软件和应用软件都固化在ROM中。多功能的高度集成使得其具有体积小和高效率、高可靠性等特点。(2)中间层也称为硬件抽象层(Hardware Abstraction Layer,HAL)或板级支持包(Board Support Package,BSP),包括嵌入式系统硬件初始化和硬件相关的设备驱动程序初始化。中间层把系统软件层与硬件层分离开,使得软件开发仅根据BSP层提供的接口,而无需关注硬件的具体情况。(3)系统软件层由多任务实时操作系统(Real Time Operating System,RTOS)、文件系统、图形用户接口(Graphical User Interface,GUI)、网络系统及通用组件模块组成,在系统开发中根据项目需求进行移植。(4)应用软件层主要包括在操作系统下的编程接口函数调用、嵌入式数据库设计、网络编程、应用层面的应用开发。

2 嵌入式软件开发方法

软件开发方法历经面向过程、面向对象、面向服务的模式转换,不断改善项目需求客户与系统开发人员之间的有效聯系与沟通,使得软件开发从设计到实现以及维护各环节,内容逐步明晰与效率不断提高。

2.1 结构化的软件开发方法

结构化的软件开发方法采用自顶向下逐步求精的方法,把整个软件开发任务抽象为一系列功能模块的组合。结构化的软件开发方法具有系统稳定性低、功能适应性低、开发效率低、开发周期较长的特点。

2.2 面向对象的软件开发方法

面向对象的软件开发方法针对结构化的软件开发方法的功能适应性低的不足,主要采取把同一范围内各个相似功能统一抽象为一个类,并提供一个统一接口供其他类调用的方法。显著降低了软件开发成本、提高了软件开发效率。适用于较大规模软件项目的开发。

2.3 模型驱动开发方法

模型驱动开发方法通过构建系统模型来驱动整个系统的开发,实现系统分析、系统设计、系统实现与测试的自动化。以模型驱动为中心改变了以编写代码为中心,适用于更广泛的应用项目开发。

2.4 基于组件的开发方法

基于组件的开发方法通过把特定功能封装为一个独立的功能组件,各组件独立于编程语言与开发平台。极大提高了功能组件对于不同项目软件开发的复用性、功能组件对于不同软件开发平台的可移植性、功能组件对于不同软件架构适应性,让系统开发人员更多精力专注于项目需求的逻辑分析与综合,提高开发效率、缩短开发周期。适用于大型软件开发项目。

3 结语

以上关于嵌入式系统开发方法的应用设想,是笔者结合自己在工作实践中的心得体会提出的教学改革基本设想,以期为构建嵌入式系统开发人员智能结构基础做出一些有益的探索。

猜你喜欢

开发方法嵌入式系统
基于FANUC PICTURE的虚拟轴坐标显示界面开发方法研究
办公自动化系统的设计
嵌入式系统课程“中断、异常与事件”教学实践及启示
面向实践创新人才培养的嵌入式系统教学研究
面向移动互联网的用电管理平台设计
初中信息技术中的生活因素开发
基于模型开发方法(MBD)的ABS控制器开发
职业教育课程开发方法应用研究