艾云峰,姚 郑,覃 力
(中国科学院大学 工程管理与信息技术学院,北京100049)
嵌入式实时操作系统在嵌入式系统中得到了广泛应用,开展实时操作系统教学工作是嵌入式教育的重要组成部分。IEEE 和ACM 两大国际学术组织2004年发布的计算机工程教学计划CC2004(Computer Engineering 2004),明确规定了嵌入式系统课程中应包含的实时操作系统的具体教学内容[1]。围绕这些教学内容,国内外高校开设了大量的嵌入式实时操作系统相关课程,以适应21世纪科技发展的需要,专业涉及到计算机应用、通信工程、电子工程、自动控制和机械工程等。
我校是1978年由教育部批准成立的以研究生教育为主的高校,简称国科大。我院由工程管理和计算机工程两个系组成,从2003年开设嵌入式系统工程专业方向后,经过几年的努力,逐步建立起系统的嵌入式方向课程体系。“嵌入式实时操作系统原理与应用”作为一门核心课程,在该课程体系中占有重要的地位。
本课程主要面向来自软件工程、计算机应用、电子与通信和控制工程等四个专业的工程硕士研究生。他们一部分已经基本掌握了嵌入式实时操作系统的使用技术,但对基本概念和理论知识缺乏系统整体的理解;另外一部分则熟悉基础理论,但对于如何使用实时操作系统开发嵌入式应用软件缺乏实践经验。本课程教学目标的制定需要综合这两类学生的不同需求,做到统筹兼顾。
“嵌入式实时操作系统”课程的教学目标制定为:通过本课程的学习,理解并掌握实时操作系统的基本概念和基础理论,熟悉一种实时嵌入式内核的具体实现,使用实时操作系统开发嵌入式应用软件。该教学目标包含了三个子目标:①掌握基础理论、理解内核实现和精通应用开发;②构成从抽象到具体的层次关系;③满足不同学生知识学习层次的需求。
CC2004 计划采用了知识领域、知识单元和知识点的方法描述知识体系。CC2004 计划首次将嵌入式系统作为一个知识领域纳入到计算机工程的知识体系中,并规定了该知识领域中实时操作系统知识单元所包含的7 个知识点。这些知识点只是涉及到了实时操作系统的基本概念和基本原理,没有包含具体实时操作系统实现和实时操作系统使用的内容。我们根据课程的教学目标,在CC2004 计划的基础上,将嵌入式实时操作系统的理论教学内容扩充为8 个知识单元。
知识单元1 是嵌入式实时操作系统历史和概述。知识点包括嵌入式实时操作系统发展历史、定义、组成、功能、应用领域和发展趋势等。通过本单元的讲解,使学生建立起对于嵌入式实时操作系统的全方位认识。
知识单元2 是实时嵌入式操作系统基本概念。知识点包括前后台系统、临界段、资源、互斥、共享资源、任务、任务切换、抢占式内核、不可抢占式内核、可重入性、优先级、优先级翻转、优先级继承、同步、通信、信号量、邮箱和消息队列等内容[2]。讲解本单元的目的是使学生建立对实时操作系统的初步认识,为后面内容的学习奠定基础。
从知识单元3 到知识单元7 分别是内核的任务管理和调度、时间和中断管理、内存管理、任务间同步和通信以及内核移植。在讲解每一个知识单元时,采取的流程都是:先介绍基本概念和基本原理,再分析典型实时内核UC/OS 中的具体实现,最后通过课堂实验学习其使用方法。例如,讲解实现任务间同步的内核对象—信号量时,首先介绍信号量在实时操作系统的作用、基本概念、实现机制和内核提供的关于信号量的基本服务和信号量的使用场景等基本概念[3],接下来分析UC/OS 内核中信号量机制的具体实现,最后通过课堂实验练习信号量的各种使用方法。
知识单元8 是基于RTOS 的软件设计。讲解该单元时,先分析了几种常用的嵌入式软件体系结构[4](前后台、函数队列调度、基于实时操作系统)及其优缺点对比,接下来重点解释使用RTOS 开发应用软件的基本指导原则,最后通过分析典型开发案例点评利用RTOS 开发嵌入式软件的主要设计流程以及指导原则的使用[5]。本单元所对应的实践环节是综合实验设计,通过该环节提高学生使用实时操作系统开发嵌入式应用软件的能力。
目前嵌入式系统的教学实验平台主要有三种类型:①基于ARM 微控制器的教学平台;②基于DSP处理芯片的教学平台;③基于FPGA 的教学平台。鉴于基于ARM 的微控制器在32 位嵌入式系统处理器市场中的占有率极高,以ARM 微控制器为例讲解嵌入式微控制器的基础理论和应用技术更能满足市场对于嵌入式工程技术人才的需求,因此我们选择了基于三星S3C2440 微控制器(采用了ARM920T内核)的嵌入式教学平台。该平台的系统组成结构如图1所示。
图1 实验平台结构图
图中S3C2440 是一款基于ARM920T 处理器的嵌入式微控制芯片,内部集成了AHB 和APB 两条总线,以及连接在总线上的内存控制器、中断控制器、时钟电源管理单元、USB 主从控制器、看门狗、定时器、PWM 控制器、GPIO 控制器和SD/MMC 控制器等多种外设控制器。存储器包括64M SDRAM、4M NORFLASH 和64M NAND FLASH,人机接口设备包括640* 480 像素6 寸TFT 液晶显示模块、触摸屏、4* 5 小键盘模块和4 个GPIO 连接LED 显示灯,通信接口及设备包括串口、USB 主接口、USB 从接口、两个以太网接口、音频输入输出接口和Camera 接口等。该实验设备支持多种层次的实验,本课程所有实验均在该实验平台上完成。
本课程的实验包含了观察性实验和设计性实验两种类型,具体来讲,根据理论教学内容的前7 个知识单元,共设计了13 个课堂实验,这些课堂实验与知识点的对应关系如表1所示。
表1 课堂实验安排
在表中,编号1 和2 是观察性实验。这两个实验实现的功能相同,均将LCD 屏幕划分为左上、右上、左下和右下四个对称区域,并将用户点击的区域填涂为特定颜色。这两个实验在讲解完知识单元1后上机练习,主要目的是使学生认识基于RTOS 的软件结构与前后台系统的区别,加深对RTOS 使用的整体认识。
实验3 到实验13 均为设计性实验,工程项目源代码文件中的关键函数只给出了函数原型,学生需要根据课堂所学知识实现这些函数,完成实验过程。其中,实验3、5、6、9、11、13 为内核模拟或改进实验,要求学生编程模拟UCOS 的某个内核功能模块或者改写UCOS 代码改进其不完善的功能模块。这些实验都属于内核层的实验。实验4、7、8、10、12 为UCOS 内核使用实验,要求学生使用UCOS 内核提供的各种服务完成应用编程,这些实验属于内核应用实验。
综上所述,课堂实验主要分成了两个层次:内核实验和内核应用实验。通过这两种层次的实验设计,实现了理论和实践的结合,达到了使学生理解内核实现和精通应用开发的教学目标。
综合实验设计要求学生自行分组、分工合作,利用课下时间设计一个小规模的嵌入式应用软件,并在实验平台上完成调试运行。
为了提高学生兴趣,共挑选了了8 个游戏项目作为综合实验供学生选择:世界时钟、五子棋、电子菜单、科学计算器、汉诺塔、交通信号控制器、俄罗斯方块和五子棋。本课程也鼓励学生选择一些常见的其他娱乐游戏作为综合实验设计项目。
我们在综合实验的说明书中,给出了功能要求、控制方式和注意事项等实验开发要求。学生根据选择的实验项目的具体要求,按着软件工程的流程开发软件并撰写项目文档。项目文档至少要包含需求分析、软件设计、软件测试、使用说明、运行结果、项目分工和总结讨论等内容。
课堂实验、理论考试和综合实验在总成绩中分别占30%、40%和30%。课堂实验和理论考试由每个学生单独完成,因此对于每个学生的考核比较客观。在综合实验中,仅凭项目文档打分无法准确反映组内成员的真实水平。如何解决这一问题是我们下一步的工作。
我校已建立了课程网站评估系统,学生可以课程结束后在网上对课程教学进行评估。评估内容涵盖了教学态度、教学内容、教学方式和教学效果等四个方面。从学生的评估结果来看,他们对于本课程的教学内容选择、教学方式和考核方式等非常满意,但部分学生认为实验课时过短,应该从12 课时提高到16 课时。还有一部分学生认为总课时数仅为40课时有点偏少,建议提高到60 课时。
总体来讲,根据学生评估结果以及结合学生的考核成绩来看,课程达到了教学目标的要求,但同时在实验课设计方面需要进一步提高。本课程连续多年评估结果均为优秀。
[1] Joint Task Force on Computer Engineering Curricula. Computer Engineering 2004:Curriculum Guidelines for Undergraduate Degree Programs in Computer Engineering[R],IEEE Computer Society,Los Alamitos,CA,Jul. 2006,pp.A.43.
[2] Labrosse J J.嵌入式实时操作系统μC/OS-II[M].邵贝贝译.北京:北京航空航天大学出版社,2003:283-307.
[3] Qing Li,Caroline Yao,嵌入式系统的实时概念[M],王安生,译.北京:北京航空航天大学,2004:71-87.
[4] David E.S..嵌入式系统软件教程[M],陈向群,译.北京:机械工业出版社,2005:115-134.
[5] 周航慈,吴光文. 基于嵌入式实时操作系统的程序设计技术[M].北京:北京航空航天大学,2008:181-205.