顾恺琦,韩建峰,徐福敬,叶镓恺
(内蒙古工业大学 信息工程学院,内蒙古 呼和浩特 010051)
嵌入式技术是计算机、电子、通信等多学科的交叉领域,在社会生产与生活领域应用十分广泛。随着市场需求的增长,嵌入式系统已逐渐渗透到日常生活的各个领域。文献[1]中作者根据近30年嵌入式教学和研究经验指出,嵌入式人才的缺乏是阻碍我国嵌入式发展的首要因素。为弥补这一缺陷,很多高等院校的相关专业都开设了嵌入式技术类课程。然而,嵌入式技术涉及面广、程度深、难度大。当前,对于嵌入式技术的教学仍停留在处理器体系结构和操作系统原理等方面,涉及工程应用、实例编程等实践的知识较少[2]。如何建立一套面向应用领域的嵌入式技术教学体系成为当前本科院校教学中一个十分重要的课题。本文从嵌入式技术学习的特点入手,针对当前嵌入式技术教学普遍应用性不强的问题,提出一种嵌入式课程设置与教学方案。
(1)综合性强:嵌入式技术的基础知识涉及面广,横跨众多领域,需要技术人员同时具备软硬件知识,既包括各种编程语言,如C语言、汇编语言等,又涉及各种硬件知识,如微机原理与接口技术、单片机原理等,需要了解微处理器、存储器,外围设备和接口,能够自行设计电子电路[3]。
(2)实践性强:嵌入式技术在通信、智能终端、汽车电子、航天航空等诸多领域的应用越来越广泛,因此嵌入式技术教学的基本特征应以实践为主。
(3)社会市场应用性强:嵌入式技术的发展离不开社会市场,高校嵌入式技术课程的兴起与市场需求有着密不可分的关系,倘若课程的应用性不强,很难培养市场需要的专业人才,这将会严重制约高校对嵌入式技术人员的培养[4]。
(1)嵌入式技术课程定位:嵌入式技术这门课程的特色和学生的兴趣点在于嵌入式操作系统和嵌入式技术的工程应用开发,根据电子信息工程和通信工程本科教学计划,《微机原理与接口技术》《单片机原理与应用》作为专业必修课程,而《嵌入式操作系统》却做为专业限选课程,总学时偏少,导致学生积极性不高[5]。
(2)实验课时较少:嵌入式技术是时下新开的课程,优秀的嵌入式课程教材较为匮乏。教材过于理论化,没有相应的实验和案例与之匹配,导致教学实践性差、学习内容较浅薄。
(3)课程实验太过注重验证性,缺乏设计性:课程实验往往过于注重基础实验,缺乏设计和创新,影响了学生的积极性和主动性。且嵌入式是一门对实践性需求很强的技术,没有与实际工程应用相结合的课程设计,培养出的学生将难以适应当前社会的嵌入式工作发展需求[6-7]。
针对嵌入式技术学习的特点,本文提出了一种适合嵌入式技术实验教学的嵌入式系统设计及应用课程教学方案,包括硬件平台的选取、操作系统的选择、专业课程的培养与实验、综合创新性项目的开发。本教学从基础课程到专业课程,再从基础实验到最后完成综合创新性项目,教学内容从理论到实验,直至完成项目开发,循序渐进,层次清晰,使学生明确学习任务,培养学生的编程能力与嵌入式技术开发能力。
实践教学的开展是一个系统工程,需要选择合适的实验设备来开展实践教学活动,单靠课堂上的仿真软件和编程软件难以达到预期效果,选择合适的硬件平台是嵌入式教学的关键。目前,ARM(Advanced RISC Machines,ARM)系列微处理器在嵌入式领域中被广泛应用,基于 ARM 技术的微处理器应用约占32位RISC微处理器市场份额的75%。ARM系列微处理器提供多种型号来满足不同应用领域的需求[8]。Cortex-M系列内核相对简单,市场运用广泛,且可移植小型操作系统,如µC/OS-II。而ARM9系列性能优越,适合作为高端产品的开发平台,符合本嵌入式教学方案硬件平台需求。因此本教学方案实验部分采用搭载Cortex-M3内核的STM32单片机及搭载ARM9内核的32位S3C2440芯片的开发板做为课程实践部分的硬件平台[9-11]。
嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、通信协议等。嵌入式操作系统负责嵌入式系统的全部软硬件资源的分配、任务调度,控制、协调并发活动。目前在嵌入式领域广泛使用的操作系统包括嵌入式实时操作系统µC/OS-II、嵌入式Linux、VxWorks等,本嵌入式开发教学根据嵌入式教学特点以及当前社会嵌入式现状选择下述两种操作系统进行教学。
μC/OS-II(Micro-Controller Operating System Two)是一个可基于ROM运行、可裁剪、抢占式、实时多任务的内核,具有高度的可移植性与广泛的扩展性。文献[12]指出了嵌入式系统教学中开展μC/OS-II教学的必然性,本教学方案引入μC/OS-II的目的是使学生初步了解操作系统,认知操作系统及其原理。
Linux是一套基于POSIX和UNIX的多用户、多任务、支持多线程的操作系统。目前正在开发的嵌入式系统中,约50%的项目选择Linux作为嵌入式操作系统。本教学方案引入新兴热点Linux,使学生们在嵌入式技术的学习方面走在时代前沿、贴近时代热点[13-14]。
嵌入式技术专业培养目标偏向嵌入式软件设计开发。其课程体系的设置应该体现“注重工程能力培养的嵌入式系统人才知识体系”。根据学生的接受能力,嵌入式知识的学习应体现层次性、由易到难的渐进性、注重实践性[15]。其知识结构由基础知识、专业基础知识、专业知识这样一个层次结构组成,本课程与实验结构框图如图1 所示。
图1 课程与实验结构框图
(1)基础知识及专业基础知识:基础课程阶段主要学习理工科的基础课程,程序设计语言(C语言)、模拟电子技术、数字电子技术。专业基础课包括微机原理与接口技术、单片机原理。
(2)专业知识:专业课开设方案包括操作系统μC/OS-II原理、Linux基础知识、ARM开发基础,该课程体系的目标是培养嵌入式系统软件设计师。嵌入式基础实验有固定的课时安排,主要采取先讲解再实验,现场辅导的方法,目的是让学生了解操作系统原理以及ARM的体系结构,掌握 ARM指令编程、I/O 端口的调用及编写等,为后续实验打基础。
(3)实验部分:该部分主要由 6 个实验组成,实验过程中向学生提供详细的实验指导书。指导书内容包括实验内容、实验目的、实验原理、实验步骤和实验源代码,要求学生根据实验指导书内容进行实验调试,并读懂实验源程序。详细的实验内容见表1所列。为培养学生嵌入式开发应用的能力,提高学生在嵌入式领域的创造性思维,实验内容分为三部分,即μC/OS-II实验、Linux实验及S3C2440基础实验。
该部分提倡学生按实验题目自主选择、自主设计完成方案。详细综合性拓展项目见表2所列。整个开发过程中,要求综合所学到的基础知识和基础实验所给的经验、明确功能、程序处理流程、任务的定义及实现、熟练调试与排错、撰写实验结果与心得。该部分可有效调动学生学习的积极性、主动性和创造性,提高学生独立思考的能力。本教学拓展实验为学生进行嵌入式开发积攒了丰富的项目经验,能够使学生尽快融入将来的嵌入式开发工作。
表1 实验部分内容
表2 综合性拓展项目
通过基于嵌入式项目的综合性、设计性及创新性实验,培养学生通过本教学方案前期掌握相关基础课程,并自主完成实验任务的能力,同时还能依靠稳固的基础知识大胆创新,根据实验过程中遇到的问题提出具体实施办法。在与教师的探讨中提炼出设计题目与所需的流程和方法,达到拥有能自主开发嵌入式项目的能力。
“基于μC/OS-II的多任务定时闹钟实验”的重点在于精确计时、多任务并行和任务间消息传递。由于初步学习了μC/OS-II基本原理,学生们很快定制了以SysTick定时器计数为核心、采用“消息”进行多任务间信息传递的项目方案。在SysTick定时器初始化代码编写的实验过程中,学生们依靠本教学方案基础知识和专业基础知识部分所掌握的基础知识课程,以72 MHz系统时钟频率确定其中断时间间隔,并配置相关寄存器,轻松解决了闹钟实验的核心难点问题。
在本教学方案最后的综合性拓展实验中,学生们在实验中的表现与项目成果极佳。本教学改革方案的实践中选取的部分完成开发的项目成果如图2和图3所示。
其中,部分学生选择了远程监控移动机器人的设计项目,该项目以S3C2440处理器为控制核心,涉及的知识包括ARM体系结构、程序流程、调试等。学生依靠前期所掌握的嵌入式课程基础知识,明确了嵌入式项目开发的核心本质。有了前期所积累的基础知识,在项目开发过程中,学生们思路清晰,目标明确,分析了现有操作系统的优劣,选择了植入μC/OS-II作为机器人下位机驱动部分的操作系统。大胆创新,结合当前社会环境所需,将项目方向定义为灾区搜救机器人,为此添加多种气体检测传感器,通过Linux操作系统下的SER2NET软件将串口数据转化成网络传输传感器检测的数据。经过后期改进、调试,最终设计出一款基于μC/OS-II操作系统与 Linux系统相结合的灾区搜救机器人,图3所示为学生们由远程监控移动机器人项目拓展完成开发的灾区搜救机器人项目,该机器人所具备的主要功能如下:
(1)用户可通过上位机远程实时观看机器人现场采集的图像;
(2)用户可通过电脑发送控制指令,调控机器人运动;
(3)机器人配备多种传感器,可检验环境气体如一氧化碳、甲烷等浓度,数据通过网络传输。
项目已初步具备多种面向灾区救援的相关功能,若加以改良,对项目进行策划包装,可投入到相应社会领域。
图2 基于S3C2440的移动机器人的设计项目
图3 监控移动机器人的设计项目
通过上述一系列课程教学改革,包括嵌入式系统设计及应用课程教学体系,解决了嵌入式实验中偏重基础验证性且实验课程较少的问题,有效调动了学生学习的积极性、主动性和创造性,提高了学生分析解决问题和独立思考的能力,取得了良好的教学效果。本教学改革方案中的实践活动加深了学生对专业基础知识的理解与掌握,提升了学生嵌入式系统方向的工程素质,培养了学生嵌入式系统软硬件开发的工程实践能力、工程设计能力和工程创新能力。实践教学为学生从事嵌入式开发领域打开了视角、创造了平台、积累了经验,为学生未来从事嵌入式相关工作打下一定的基础。