刘海成,邹海英,佟宁宁
(黑龙江工程学院,哈尔滨 150050)
嵌入式开发工程师的能力结构构成及培养研究*
刘海成,邹海英,佟宁宁
(黑龙江工程学院,哈尔滨 150050)
嵌入式开发工程师以其创造力改变着我们的生活,但由于嵌入式系统开发涉及到多个方面的技术,工程师的能力结构是单个专业无法覆盖的。本文在明确知识点和能力点五种属性,以及嵌入式开发的4个层面基础上,将嵌入式开发的职位分成4类,并给出了对应的能力构成、课程群特点和所适合的专业。相关专业大学生和嵌入式开发工程师可依此来完善自身的知识和能力构成,更好地服务于嵌入式开发工程师岗位。
嵌入式开发;工程师;专业;能力点;课程群
近年来,随着嵌入式技术在信息产业的广泛应用和高速发展,人们的生活方式和工作方式也正在发生快速的改变。例如身边常见的手机、平板电脑、机顶盒、智能手环、仪器仪表等都是典型的嵌入式产品,IT行业的发展也势不可挡地进入了嵌入式时代,同时也对嵌入式系统的开发者提出了新的挑战[1]。
面对IT企业对嵌入式人才的需求,国内很多高校相继开设了嵌入式系统相关课程群或设置了嵌入式系统相关专业方向,开展了各具特色的嵌入式系统教学实践。但是由于嵌入式系统具有面向应用的特点,嵌入式软硬平台和开发工具的多样性以及各个学校学科背景的不同,各个学校开设的嵌入式系统相关课程、教学内容以及实践教学环节存在较大的差异,没有形成与未来的嵌入式开发工程师需要相一致的完整教学体系。主要问题有:
① 有两类专业背景:一类是以电子、电气、通信、自动化和仪器等专业为背景的嵌入式开发工程师的能力构成;另一类是以计算机和软件等专业为背景的嵌入式开发工程师的能力构成。二者既有区别,又有联系,能力侧重点不同,所以就涉及到二者的协同和统一问题。
② 以知识点和学科体系代替能力结构,课程体系臃肿或缺少重要环节,没有明确嵌入式开发工程师的能力结构,课程群不能形成合力,与OBE(Outcomes-based Education)的基于学习产出的教育模式相背离,即课程群的教学内容还不能覆盖能够解决复杂工程问题所需要的能力点。
笔者认为,课程是由知识点和能力点共同构成的,有的问题既是知识点,也是能力点。课程群则是知识点和能力点的合理化布控,且每个学习内容的呈现都应至少具备以下5种属性之一:
① 必要或必需的基础性、常识性知识点,这些知识点不都具备工程可用性,属性为“学习不是为了直接应用”的范畴,比如,CPU的工作原理、堆栈、中断系统等。
② 基础技能型的知识点,属性为能力结构的基础,比如,汇编语言程序设计、嵌入式C程序设计、GPIO等。
③ 强应用性的综合型,以及课程群合力化知识点,以解决复杂工程问题能力为目标,通过课程群形成能力点的闭环,属性为核心应用能力,比如,采用FPGA作为嵌入式计算机的协处理器等。
④ 技术协议或规范,属性为核心工程设计能力,比如,SPI协议、I2C协议、UART协议、CAN2.0总线协议、USB协议、以太网协议、Modbus协议、SD协议等。熟练准确掌握这些协议,是基于嵌入式系统和协议规范进行工程设计的前提。
⑤ 与其他相关的课程群间的技术融合或引领性知识点,属性为学科交叉及创新能力,比如,如何在嵌入式系统中实现FFT、IIR和FIR等,则将数字信号处理课程群与嵌入式系统课程群进行了技术融合,数字信号处理课程群落地生根,由知识体系转化为能力体系。
嵌入式开发工程师的能力结构就是由这5类属性的知识点和能力点构成。
从嵌入式系统应用开发角度,嵌入式系统分为4个层面的技术,包括硬件平台层、BSP及设备驱动层、调度系统层和应用层。
(1) 硬件平台层
图1所示为硬件平台层,包括核心部分和外围功能电路两个部分。
图1 嵌入式系统的硬件平台层
嵌入式系统的核心一般是微处理器,常用的微处理器有MCU、MPU和DSP等。显然,计算机原理是嵌入式系统开发工程师的知识点,这些知识点的核心就是至少精通一种MCU/MPU/DSP的体系结构,如MCS-51和ARM等,包括:
① CPU的构成、程序指针PC与程序的自动运行、堆栈与堆栈指针、中断与中断系统等知识点[2]。
② 存储器结构及寻址方式、指令系统及汇编语言设计方法、C程序设计等知识点和能力点。
③ 系统总线、SPI总线、I2C总线、CAN总线及接口技术等。
4类电子技术构建的处理器外围电路具有强应用性和个性化的专用系统特色,与所设计系统的技术指标密切相关,是项目的核心产权部分,其既要自成面向应用的特定体系,又要方便与微处理器的接口。其优化设计的核心就是软硬件的配合及硬件的软件设计,以软代硬,合理地给处理器增负,优化外围电路的结构、面积和功耗,增强外围电路的自校准、自诊断和抗老化等能力,从而提升项目的智能化水平。
4类电子技术中,模拟电子技术和数字电子技术是基础,是电类相关专业必修基础课,受到了各个学校的广泛重视。不过仍然存在以下几个问题:
① 数字电子技术以数字逻辑设计为主体,目前的工程应用已经过渡到EDA水平,即采取CPLD或FPGA完成逻辑的验证和实现。可是教学上还处于与EDA技术“分家”的状态,尽管有些数字电子技术教材引入了硬件描述语言,但其教学地位仍定位为附属知识,而不是核心能力。换言之,数字电子技术大都停留在逻辑设计,而非复杂数字系统设计。
② 模拟电子技术以电路分析、信号与系统,以及自动控制原理等理论为基础,但一般是在开设了电路分析后就开设模拟电子技术课程,而信号与系统和自动控制原理课程开设在其后面,频域和复频域模拟电路设计方法缺失,负反馈电路分析仍停留在定性的水平。
③ 电子信息类专业会以通信电路为背景开设高频电子技术课程,基本是唯一进行非线性电路分析与设计的课程,强电、自动化、测控和计算机类专业则不开设该课程。时过境迁,这是历史顺延的结果,已经不合时宜。比如,开关电源技术作为这些专业的能力核心,其非线性电路部分就是高频电子技术课程的核心内容;仪器仪表设计中经常用到调制和解调电路实现信号变换,这更是高频电子技术课程的核心内容;智能电网和电力载波技术也要大量应用高频电子技术知识。
④ 强电、自动化和测控类专业大都开设电力电子技术实现电力变换,而电子信息类专业和计算机类则不开设该课程。然而,随着移动设备、手持设备等应用的日益广泛,尤其是电池供电的移动式手持设备(如手机、数码相机等)的大量使用,其内部的电源电路都采用基于电力电子技术的开关电源为系统供电,以提升电源的效率和延长待机时间。不同于工业电力电子设备的大电流、大电压特点,手持设备属于低压小电流电力电子电路,但核心原理和设计方法是一样的,这严重制约了电子信息类人才的整机设计能力。
可见,从事电子系统设计,这4类电子技术基础都是必备的,是从事硬件平台层开发的核心能力。嵌入式开发工程师要在专业的课程设置基础上,自学完成这4类电子技术的学习。
(2) BSP及设备驱动层
调度系统及其应用软件模块与硬件之间的接口是嵌入式系统设计的重要环节,这个中间层包含了系统中与硬件相关的大部分功能,通过特定的上层接口API与调度系统进行交互,根据调度系统的要求完成对硬件的直接操作。由于引入了一个中间层次,屏蔽了底层硬件的多样性,调度系统不再直接面对具体的硬件环境,而是面向由这个中间层次所代表的、逻辑上的硬件环境,因此,把这个中间层次叫做硬件抽象层(Hardware Abstraction Layer,HAL),也称板级支持包(Board Support Package,BSP)。通过BSP就可以实现统一的接口形式,得到广泛的认可和应用[3]。
BSP的核心作用就是使在面向应用的软件开发时不必关心硬件的具体情况。因此,BSP具有与硬件紧密耦合、与具体的调度系统相关的特点。在BSP的实现和功能上包含硬件的芯片级、板级和应用级初始化,以及与硬件相关的功能驱动两部分。图2所示为BSP及设备驱动层,基于操控底层硬件的低级语言建立硬件的抽象层。由于不同调度系统具有各自的软件层次结构,因此,不同的调度系统具有特定的硬件接口形式。所以,要在调度系统所确定的硬件相关API基础上,基于低级语言(汇编语言、C语言或C++语言)实现处理器片内硬件外设和片外硬件外设驱动的API。计算机类专业也可以从事为微处理器提供底层算法API等工作。
图2 嵌入式系统的BSP及设备驱动层
(3) 调度系统层
调度系统层用于完成嵌入式应用的任务调度和控制等核心功能,具有内核较精简、可配置、与高层应用紧密关联等特点,以调度器和操作系统(OS)两种形式存在。图3所示为调度系统层。调度器一般具有占用CPU资源极少的特点,如Protothread、时间触发调度器等;而嵌入式OS的功能更加完善,当然占用CPU的资源也较高,如freeRTOS、μC/OS(II或III)和VxWorks等。调度系统一般具有相对不变性。
图3 嵌入式系统的调度系统层
另外,根据具体应用系统的特点,调度器还需要针对内存管理、电源管理及实时性要求等进行改进,形成专用系统。
(4) 应用层
图4所示为嵌入式系统的应用层。嵌入式系统是面向特定应用对象设计的专用计算机系统,应用层运行于调度系统之上,基于调度系统提供的实时机制完成特定功能的嵌入式应用,具有专用性的特点。
图4 嵌入式系统的应用层
应用层是接收并解释用户命令的接口,包括人机接口与GUI开发、业务及算法开发、开源的应用代码移植,很多应用还包括数据库及Internet应用开发等。开发工具更偏向于高级语言、硬件平台资源和性能较强的嵌入式系统,如支持Android操作系统的平台可直接采用JAVA等面向对象的高级语言进行开发。
基于嵌入式系统的这4层构建嵌入式开发工程师的职位属性及其对应的能力结构,并基于此构建闭环的知识点或能力点体系。嵌入式开发工程师的职位主要包括硬件工程师、驱动工程师、算法工程师和应用软件工程师4类。
(1) 硬件工程师及其能力结构
硬件工程师一般以处理器为核心,在充分考量微处理器性能和特色基础上,基于4类电子技术实现硬件电路的设计,包括处理器性能测试、单元电路的设计及测试等,主要完成嵌入式系统的硬件平台层,基于FPGA进行数字逻辑电路设计也属于这个范畴。
此类工作主要面向电类相关专业。课程群中,除了计算机原理、C语言和4类电子技术,还包括信号与系统、自动控制原理和误差理论等内容。
(2) 驱动工程师及其能力结构
驱动工程师的主要工作就是针对不同的嵌入式硬件编写相应的BSP,包括测试验证等。驱动工程师不但要有低级语言及运用能力,还要有较好的软硬件接口知识基础,主此类工作要完成嵌入式系统的BSP及设备驱动层。
主要面向电类相关专业。课程群中,除了计算机原理和C外,最主要的就是各种接口协议规范,ADC和DAC的数模-模数转换接口知识也是重要的能力点。
(3) 算法工程师及其能力结构
算法工程师分为两类,一类是基于FPGA进行算法设计和实现的工程师,另一类是基于微处理器进行算法设计和实现的工程师。前者也称为FPGA工程师,算法的属性是嵌入式产品的核心竞争力产权,主要为嵌入式系统的应用层服务。
此类工作主要面向电类相关专业。课程群中,则以算法的理论设计及仿真验证为主线,包括数字信号处理、计算机控制系统等,然后基于FPGA和硬件描述实现,或基于微处理器实现,对计算数学能力有较高要求。
(4) 应用软件工程师及其能力结构
应用软件工程师则要熟悉调度系统及移植、GUI、应用协议和实时多任务编程,在调度系统基础上基于BSP和算法API实现特定应用,主要完成嵌入式系统的调度系统层和应用层。
基于高端硬件和操作系统的应用软件工程师主要面向计算机类相关专业。课程群中,除数据结构等基础知识外,最主要的就是对操作系统的应用编程非常熟悉,比如开发iPhone手机的APP,就要对iOS操作系统及应用编程进行深入学习。
而低端或专用性强的嵌入式软件设计,如DSP应用系统的软件开发,则主要面向电类相关专业。课程群中,则以应用流程或状态机为主线,基于C语言实现各任务的调度及配合,一般要求对硬件实际情况有全面的了解,对硬件资源、成本控制和功耗等进行全面掌控。有时,这类应用软件工程师也兼做驱动工程师。
嵌入式开发工程师的能力结构培养是高校和相关专业大学生共同完成的使命,但由于嵌入式系统开发涉及到多个方面的技术,单个专业是无法覆盖的。本文将嵌入式开发的职位分成4类,并给出了对应的能力构成、课程群特点和所适合的专业。大学生和嵌入式开发工程师可依此来完善自身的知识和能力构成,基于OBE形成课程群合力,更好地胜任嵌入式开发工程师岗位。
[1] 王苏峰,宁洪,陆洪毅,等.嵌入式系统课程体系及其创新实践的探索[J].计算机教育,2010(7).
[2] 张林,秦臻,邹韬.平伊利诺伊大学香槟分校电气信息类专业课程体系特色分析[J].中国大学教学,2013(4).
[3] 李文生,陆洪毅,吕燚.嵌入式人才能力结构分析及教学体系设计[J].计算机教育,2014(7).
刘海成(副教授),研究方向为信号处理与智能仪器。
编者按: 无人驾驶成为本年度新兴技术的热门。由于无人驾驶车辆是多学科综合技术载体,并联接了诸多产业和商业模式,它的发展必将撬动相关技术的突破发展。在新一轮的国际竞争中,我们要如何跟进并超越?如何普及相关技术并培养更多从业人员是现阶段迫切需要解决的问题。本文作者从无人驾驶车辆最为核心的环境感知功能实现入手,通过相关技术系列介绍和总结,以资借鉴。内容包括智能车辆环境感知技术与平台构建、智能车辆道路检测系统、智能车辆交通信号灯和交通标志检测、智能车辆行驶环境中的车辆检测。
Research on Ability Structural Formation and Cultivation for Embedded Development Engineer
Liu Haicheng,Zou Haiying,Tong Ningning
(Heilongjiang Institute of Technology,Harbin 150050,China)
Our life is being changed by the embedded development engineer with their creativity,and since various technologies are involved in embedded system development,any single specialty is not able to cover ability structure of developer.In the paper,the positions of embedded development are divided into four types,and it is proposed that corresponding ability structural formation,characteristics of curriculum group and its suitable specialties,based on clarifying five properties of knowledge and ability points and four layers of embedded development.The college students of related majors and embedded developer may improve their knowledge and ability constitution in sequence according to it,in order to be more competent to the embedded developer position.
embedded development;engineer;specialty;ability points;curriculum group
黑龙江省高等教育教学改革项目(JG2014011139);黑龙江工程学院教育教学改革工程项目(JG2014013)。
TN710.9
A
(责任编辑:薛士然2016-04-29)