软件专业嵌入式系统课程体系研究
作者:admin      发布时间:2014/9/26

摘要:嵌入式系统已被广泛地应用于工业控制系统、信息家电、通信设备、医疗仪器、智能仪器仪表等众多领域,可谓无处不在。为了向学生介绍嵌入式系统知识,培养嵌入式系统技术人才,在高校范围内开设嵌入式系统课程已成为一种趋势。本文围绕清华大学及北京航空航天大学软件学院嵌入式系统课程,提出了“32位嵌入式微处理器”+“实时操作系统”+“工程实践”嵌入式系统教学模式,并介绍了课程的目标和考核体系,以及具体的教学环节和实践环节的课程设置,最后并对课程的教学效果进行了分析。

关键词:嵌入式系统;嵌入式软件;课程体系;微处理器;实时操作系统

 

嵌入式系统已被广泛地应用于工业控制系统、信息家电、通信设备、医疗仪器、智能仪器仪表等众多领域,如手机、PDAMP3、手持设备、智能电话、机顶盒等,可以说嵌入式技术无处不在。由于社会对掌握嵌入式技术人才的大量需求,使嵌入式软硬件工程师成为未来几年最为热门的职业之一。与嵌入式系统普遍应用的趋势相比,国内的嵌入式系统教育与培训还处于初期阶段,虽然部分高校开设了嵌入式系统课程,但大都做为选修课,课时很短,还没有形成统一的教学体系和人才培养模式。

 广义上讲,嵌入式系统是嵌入式到电子设备内部的专用计算机系统。这个定义是根嵌入式系统的外部表现形态给出的,并没有对嵌入式系统的功能、速度和应用给出界定和要求。按照这个定义,从4位、8位、16位的微控制器,到32位、64位的微处理器构成的系统都可以称之为嵌入式系统。这也给很多人造成一种疑惑:既然如此,很多高校以前所开设的微机原理和单片机等课程也可以归属于嵌入式系统课程的范畴。那么是否还有必要单独开设嵌入式系统课程呢?

从微处理器技术的发展历程看,从最初的Intel公司的4004,到最近各种基于ARMMIPS等架构的SOC,微处理器经过30多年的发展,已经达到很高的技术和应用水平。尤其是随着近年来移动通讯市场的需求拉动,出现了更多的高性能的嵌入式微处理器。它们的特点是体积更小、速度更快、集成度更高。针对这种高性能的嵌入式微处理器,对其上面运行的软件也提出了更高的要求,要求能够实现更复杂的功能,一般需要有嵌入式操作系统对微处理器及其外围设备进行管理,支持多任务、多线程的设计模式,以简化系统软件设计,便于应用软件移植。

为了满足人们学习使用这一类高性能微处理器软硬件设计的需求,嵌入式系统设计课程应运而生。很显然,这类课程与传统的微机原理和单片机课程有着本质的区别。首先,单片机课程基本是面向硬件的,只有少部分软件内容,而且大多是基本汇编语言的,而嵌入式系统课程利用高性能嵌入式微处理器能够进行复杂运算的优势,侧重于软件设计。其次,单片机课程往往以某种特定的微控制器作为案例进行教学,相关知识很难映射到其它不同的微控制器上;而嵌入式系统课程以实时操作操作系统(RTOS)作为软件基础,进行驱动程序、应用软件等共性知识的教学,课程内容很容易移植到不同微处理器平台上[1-2]

从课程内容上看,嵌入式系统设计是一门综合性的课程,对学生的基础要求基础较高。要求学生同时具有计算机学科(计算机体系结构、操作系统、程序设计等)和电子学科(电子技术、微机原理等)的相关课程基础。此外,嵌入式系统是面向应用领域的,为了培养学生具备从事嵌入式产品设计的技能,还要求学生具备某些应用学科的知识。很显然,让学生同时掌握计算机、电子和应用学科的知识是很困难的。因此,在制定嵌入式系统课程体系的时候,必须考虑学生的理解能力和接受程度,达到期望的教学效果。

       本文介绍了清华大学及北京航空航天大学软件学院嵌入式系统课程体系的设置情况,介绍了具体的教学环节和实践环节的课程设置,并对课程的教学效果进行了分析。

1.课程体系和考核方法

本文所提出的课程体系是针对清华大学软件学院硕士生《嵌入式系统及其软件工具》课程和北京航空航天大学硕士生《嵌入式系统开发》课程制定的,课程的性质是选修课,课时为36个学时。由于课程是面向软件工程硕士开设的,因此课程的目标也定位在培养学生理解嵌入式系统的理论知识和掌握嵌入式系统设计的基本技能方面。由于嵌入式系统面向应用的主要特点,在课程设置中特别强调培养学生动手实践的能力。基于以上教学目标,参考国内外嵌入式系统课程体系的建设经验,我们提出了“32位嵌入式微处理器”+“实时操作系统”+“工程实践”的嵌入式系统教学模式。

《嵌入式系统及其软件工具》和《嵌入式系统开发》课程采用讲课与实验相结合的方式,着重培养学生的实际动手能力。在授课内容方面,课程以32ARM嵌入式微处理器和实时操作系统mC/OS-II做为主要内容,重点介绍嵌入式系统的基本概念、设计方法、ARM微处理器的体系结构、mC/OS-II实时操作系统内核分析、mC/OS-II操作系统在ARM微处理器的移植方法、基于ARM的硬件设计和基于mC/OS-II的嵌入式软件设计等课程内容[3]

在实践内容方面,其目标是培养学生实际的嵌入式软硬件设计能力。由于嵌入式系统通常采用宿主机/目标机的开发方法,需要专用的软硬件开发工具和开发环境,因此在嵌入式课程实践中也需要选择主流的嵌入式软硬件开发平台,并制定适当的,易于掌握的实验体系。课程的实验平台选用北京博创兴业科技有限公司的UP-NETARM300平台,该平台硬件采用ARM7架构的微处理器,可以运行mC/OS-IIuCLinux两种操作系统。在实验内容方面,通过数字I/OA/D、存贮器接口、触模屏驱动、USB接口等由学生在课内完成基础实验,使学生能够了解嵌入式软硬件开发环境,掌握基本的嵌入式系统设计方法。为了考核学生嵌入式软硬件开发技能,还安排了小游戏、无线点菜系统开放式大作业,由学生独立或分组协作在课外完成。

考核是嵌入式系统课程中另外一个棘手的问题。如何制定一种合适的课程考核体系,能够真实地反映出学生对课程的掌握程度,是每一位开设嵌入式系统课程的教师需要考虑的主要问题之一。

《嵌入式系统及其软件工具》和《嵌入式系统开发》课程的考核采用笔试+大作业的方式,其中笔试占50%,大作业占50%。笔试以微处理器、实时操作系统等基本概念、硬件接口知识、程序设计与分析等内容为主,重点考核学生对嵌入式系统基本概念和设计方法的掌握程度。大作业重点考核学生协作完成嵌入式软件项目的实践能力,一般由2-3人组成一个开发团队,在课程开始一个月内提交项目方案设计书,包括题目、设计目标、团队分工、开发进度、预期成果等内容。大作业完成期限为3个月,最终需要提交设计说明书、软件设计流程、代码和可执行目标文件。大作业的评分标准主要考查软件设计质量、文档、技术难度、协作精神和开发进度等方面。

2.实验课程的设置

    嵌入式系统是面向应用的,实践是整个嵌入式系统课程体系中最重要的环节。考虑到大多数学生此前没有嵌入式系统设计开发经验,在课程的实践环节上采用循序渐进的方式。把课程的实验内容分为基本知识、基础技能和综合应用三个层次。基本知识部分通过两次实验(4个学时),让学生掌握嵌入式系统基本软硬件开发环境和流程,学会编写简单的嵌入式应用程序;基本技能部分安排四次实验(8个学时),让学生掌握数字I/O、触摸屏应用和多任务编程等深入的嵌入式开发方法;综合应用部分是在前面实验的基础上让学生完成一个嵌入式软硬件件设计的大作业,培养学生独立或协作完成嵌入式项目开发的能力。

2.1 基本知识部分

    目的是让学生了解(认识)嵌入式软件和硬件的一般开发环境与流程,熟悉(某一种)实验开发工具,并掌握实验开发工具的操作方法及使用,熟悉软件编程环境,为更进一步实验做准备。基本知识部分安排两个实验内容:

l         实验一:ARM微处理器开发环境介绍。本实验介绍一般的嵌入式开发流程,并介绍一种开发流程中使用的软件和硬件的安装与调试,同学通过此实验了解和熟悉嵌入式的软硬件平台。

l         实验二:开发基本的嵌入式应用程序。本实验通过一个最简单,最基本的嵌入式应用程序,介绍基本的嵌入式应用程序的开发方法。并在实际应用程序的开发过程中,进一步熟悉开发调试环境。并通过此实验,学生理解基本的程序设计方法与流程,为后续的实例应用程序的设计打基础。

第一层次的实验内容结束以后,同学们对实验开发环境比较熟悉,掌握基本的软件编程方法,能够读懂实验源程序。

2.2 基础技能部分

    目的是让同学掌握基本的嵌入式程序开发,可以根据实验指导书内容进行实验的调试,能读懂实验源程序。能对实验源码进行一定程度的修改,从而实现其他类似的功能。基本技能部分安排以下四个实验内容:

l         实验三:交通管制信号灯模拟实验——I/O接口。通过模拟交通灯,掌握ARM微处理器中I/O接口的使用,以实现对外围设备开关量的控制。

l         实验四:模拟电子画板实验——触摸屏应用。通过在UP-NETARM300实验平台的触摸屏上开发一个电子画板,掌握触摸屏的设计和使用方法。

l         实验五:图形界面设计实验。图形界面可以使嵌入式应用程序更加友好易用,通过使用UP-NETARM300平台提供的图形接口函数,学生可以一个开发嵌入式图形界面,了解并掌握嵌入式图形图面的设计方法。

l         实验六:多通道仪表信号采集实验——多任务与A/D转换。嵌入式处理器的主频越来越高,功能越来越强,通过嵌入式操作系统的使用,可以使得嵌入式处理器具有多任务处理能力。本实验在mC/OS-II操作系统的基础上,用多任务模拟一个多通道的仪表信号采集器。根据任务优先级的不同,可以实现对仪表信号进行监控。

    第二层次的四个实验,将采取精讲精练的方式进行。课前向学生提出明确的实验要求,并请学生提前预习,课堂对所涉及内容进行介绍,并要求学生补充实验中的关键源码。

2.3 综合应用部分

    综合应用即大作业设计部分。让学生在基本知识和基础技能实验的基础上,综合运行前面所学习和掌握的嵌入式软硬件开发知识和方法,由2-3人组成团队,完成大作业的设计。大作业提供了两个题目:

l         题目一:基于局域网的电子菜单控制设计。不久的将来,高级饭店里的服务员可能不复存在,因为通过连入局域网的电子点菜设备,可以直接查看菜谱,进行实时点菜。这个题目要求学生协作完成一个电子点菜系统,所涉及技术点包括UDP网络、触摸屏、LCD显示等。

l         题目二:面向游戏图形界面的LCD控制与应用。手持式设备中具有游戏功能将是一种趋势。这个题目要求学生在现有实验平台上完成一个嵌入式小游戏,如贪吃蛇、俄罗斯方块等。通过对LCD的控制,通过图形编程,实现简单的游戏,并实现一些常见的图形、动画效果。

学生也可以选择其它自己感兴趣的题目进行大作业设计,大作业完全是一种开放的课外实践,由学生自主完成,其间提供必要的答疑和指导。其目的是培养学生独立或协作完成一个嵌入式开发项目的能力,锻炼学生实际的嵌入式软硬件设计能力。

3.课程体系的应用效果分析

    采用本文所提出的课程体系,笔者先后承担了清华大学软件学院200220032004年秋季软件工程硕士(MSE)《嵌入式系统及其软件工具》课程的教学任务,以及北京航空航天大学软件学院2003年春季、2004年春季和秋季MSE《嵌入式系统开发》的教学任务,在20032004年秋季还承担了清华大学软件学院本科生(3年级)《嵌入式系统及其软件工具》的教学任务(与MSE为同一课程)。

从总体上看,学生对嵌入式系统这种教学与实践相结合的课程非常感兴趣,学习的积极性也非常高。下面以2004年秋季清华大学软件学院本科生和MSE的课程教学情况为例进行分析。

    选修《嵌入式系统及其软件工具》课程的本科生18人,软件工程硕士及研究生共57人,课程的考核采用大作业(占60%+笔试(占40%)的方式。MSE的课程成绩如图1所示,其中不及格(60分以下)2人,及格(6069分)4人,中(7079分)21人,良(8089分)20人,优(90100分)10人。

                1 MSE的课程成绩统计

                1 MSE的课程成绩统计

    本科生的课程成绩如图2所示,其中成绩为中3人,良11人,优4人。从成绩上看,本科生的成绩比MSE要略好一些,这与MSE学生来自不同专业,基础差别较大有关。

在大作业方面,大部分学生选择了嵌入式游戏开发这个内容,其中有相当一部分同学做得非常优秀。图3是学生完成的部分作业,其中分别是俄罗斯方块、五子棋和电子点菜系统。在完成大作业过程中,学生通力协作、合理分工,有的负责总体架构、有的负责算法、有的负责界面实现。大部分学生用于完成大作业的课外时间为20-30学时,有的甚至更多一些。

    大多数学生对嵌入式系统这类理论结合实践的课程充满了的兴趣,在独立或协作完成一个完整的嵌入式软件开发(大作业)后,都体会到了以前课程所没有的成就感。作为一门课程来说,学生的这种成就感非常重要,因为这将激发他们对嵌入式系统学习新的兴趣,在以后的学习和工作中继续从事嵌入式系统的研究。下面是学生的一些反馈意见:

  l         独立完成一个有趣的游戏设计以后,心中的自豪感是不言而喻的,也正是由于前些阶段的小练习,才让我们有能力完成现在的大实验,总的来说我们觉得通过本学期的实验,我们收获很大。

  l           尽管我们遇到了如上这些困难和问题,我们还是深切地体会到在ucos系统下进行嵌入式程序开发的乐趣。当我们的俄罗斯方块程序跑起来时,确实是非常兴奋!我们相信,经过今后的继续学习,我们将进一步提高嵌入式系统开发的能力,走进嵌入式系统开发的圣殿!

  l           通过一学期的学习和实践,我们初步掌握了嵌入式开发的知识,在这次大作业之后,对这种软硬结合的编程方式有了更深一层的认识。

  l           虽然大作业只是以前小实验的综合,可是具体实现起来我们遇到了很多问题,一个小知识点,能让大家花上几十分钟甚至几小时,一个小Bug让我们对一段代码重复检查。曾经有一次,我们编程到凌晨4点,可是那成功后的快乐和成就感是不能用言语表达的。

  l         完成大作业后,我们了解了嵌入式编程的大致框架,知道了很多细节的地方,毕竟做过确实不一样,总的来说,这次大作业,花了很多时间和精力,同时,收获也是很大的。可以说嵌入式编程这门课很成功。

  l         这次对贪吃蛇的开发可以说是第一次开发一个完整的嵌入式应用程序。通过这次完整的开发过程,对嵌入式开发有了新的认识。

  l         嵌入式软件开发与硬件的关系比常规的软件开发密切的多。在编程的过程中曾经因为一些硬件上的支持问题而耽误了不少时间。比如,在我们实验的ARM嵌入式设备上,对“%”——求余运算的支持不好,在一些函数里无法使用。由于在通用平台上的开发习惯,自然而然地使用了这种运算,因此也就出现了运行时错误。可见,在嵌入式平台上开发应用程序,首先需要针对自己操作的嵌入式硬件平台做充分的了解,否则在开发的过程中肯定会处处碰壁。

  l         最后不得不提,在这次开发中,我们成功地将实际的软件开发与曾经学过的专业理论课结合到了一起。数据结构课是计算机科学的一门重要的专业基础课。上这门课时学习了许多复杂的数据结构,却很少找到实际应用的地方。本次开发贪吃蛇的游戏,首次用到了链表和静态链表的思想,也看到了一些经典理论在实际的开发中发挥的作用。这成为了以后学习专业理论课的一个巨大动力。

学生也对课程提出了一些宝贵的建议。他们认为嵌入式系统是一门比较新的课程,而且应用的背景很强,这正是大学本科教育需要的课程。认为课程的实验非常好,给同学提供了真正接触嵌入式开发的机会,但是也感觉在课程的学习过程中存在的理论知识和实验的关系不够紧密问题,建议可以有针对性地介绍课程使用的嵌入式开发设备以及这个设备上的应用编程接口。还有的同学建议在授课时重点介绍与实践密切相关的知识,特别是嵌入式操作系统的设计以及实例,如mC/OS-II操作系统,可以把这个主题用三次甚至更多的课时来讲解。这些建议将对我们进一步改进课程体系和教学实践内容提供有益的参考。

4.结论

    IEEE计算机协会和ACM共同制定的2004版计算机类课程体系中,嵌入式系统已经被列为核心课程之一[4]。此外,电子工程、软件、自动化等学科也将陆续开设嵌入式系统课程,对各学科嵌入式系统课程的研究与实践将是一个长期的过程。本文结合清华大学软件学院和北京航空航天大学软件学院嵌入式系统教学应用的情况,介绍了嵌入式系统课程体系的设置和课程的考核方法,并对课程的教学效果进行了分析。希望这些内容能够对国内其它院校相关专业开设嵌入式系统课程提供借鉴和参考。

 

致谢

    本文所提出的课程体系在教学实践中得到了清华大学软件学院和北京航空航天大学软件学院有关领导的大力支持,同时也得到了很多参加课程学习的学生的支持和帮助,在这些向他们深表谢意。

 

参考文献

1 Wayne Wolf and Jan Madsen, “Embedded systems education for the future,” Proceedings of the IEEE, 88(1), January 2000, pp. 23-30.

2 Wayne Wolf, Computers as Components: Principles of Embedded Computer System Design, San Francisco: Morgan Kaufman, 2000.

3】王田苗编著,《嵌入式系统设计与实例开发—基于ARM微处理器与µCOS-II实时操作系统》(第二版),清华大学出版社,2003.9.

4 IEEE Computer Society/ACM Task Force on Computing Curriculum, Computing Curricula –Computer Enginnering “Iron –Man Draft”, June 8, 2004.(http://www.eng.auburn.edu/ece/CCCE/).

 

"
北京航空航天大学软件学院版权所有 地址:北京市海淀区学院路35号北航世宁大厦1003室 邮编:100191
邮箱:qianrushi@126.com 电话:王老师:010-82160911 ,13911256605d