樊 华, 仵欣杰, 马珊珊, 张 佳, 张 珂, 叶星宁
(1.电子科技大学电子科学与工程学院,成都610054;2.上海安路信息科技有限公司,上海201203;3.成都海威华芯科技有限公司,成都610299)
纵观我国工程教育的改革与发展,要更加注重的关键是对工程科学研究型人才和工程技术型人才以及具备工程背景的其他领域人才的培养[1]。嵌入式环境的变化,迫使对嵌入式系统教学必须进行改革,发展更具吸引力的课程模式。近年来,各高校已开始了新教学模式的探索。例如:国防科技大学提出了合作式实践教学方案[2]和参与式学习方式[3]。
作为“知识型”“创新型”的国家——瑞典[4],其高等教育体系位居世界前列。它注重发展学生理性的思考能力,鼓励学生不断创新与探索。在不断推动欧洲高等教育一体化的背景下,瑞典历经了从学位结构到课程安排的一系列改革[5]。瑞典嵌入式系统的教学在教学理念、教学体系、课程实现等方面都发展得比较成熟。本文从瑞典嵌入式系统实验课程出发,对瑞典嵌入式系统教学的成功进行总结;对比研究我国与瑞典的嵌入式系统教学的优缺点;结合我国当前工程高等教育改革的现状对未来的嵌入式系统教学模式提出新的思考。
嵌入式系统以应用为中心,集软硬件技术为一体[6]。嵌入式系统课程更偏向于实践类型的课程,需要做好理论与实践的两两结合[7-9]。其涉及的基础课程较多(比如模拟电路基础、数字电路基础、计算机系统结构、C语言、汇编语言等),这使得嵌入式系统的教学纷繁复杂。嵌入式系统教学最传统的方法就是“自下而上”的教学理念[10]。即先向学生介绍位级微控制器,然后再介绍操作系统级别。我国由于嵌入式系统发展较晚,近年来爆发式发展,使得嵌入式系统教学还未形成最优化的教学模型并存在以下问题:
(1)课程理论化。当前的教育体制主要偏向于理论教育,所以在短短的几十个学时的课程中,能充分理解知识点并掌握实践应用对学生来说,更是难上加难。且嵌入式系统入门门槛较高,初学者需要花费大量时间熟悉开发环境和相关流程,例如在命令行界面中操作,设置环境变量和内核配置[11]。
(2)理论与实践脱节。理论课程内容老旧,无法与当前行业发展相结合。
(3)验证性实验居多。实验课程一般是按部就班性质的。在实验过程中,学生按照老师讲解的思路,课本的指导,一步步地完成实验。这样枯燥无味的实验,难以发散学生思维,也难以将其与未来研究相结合。
(4)实验设备落后。针对嵌入式系统的实践环节,实践设备的配置和实践内容的设置问题不容忽视[12]。
笔者近期在瑞典皇家理工学习了1 年,深入了解了瑞典嵌入式系统的教学方法。瑞典嵌入式系统教学发展成熟,为嵌入式系统提供了专门研究涵盖嵌入式系统开发理论和实践方面的教学模式。其中特别强调软件和硬件的集成,系统设计、集成、验证等工程技能的应用与实践。并提供了4 个方向供学生选择,分别是:嵌入式电子技术、嵌入式平台、嵌入式控制、嵌入式软件。针对不同的方向,设定了对应的必修和选修课程。每门课程都是由讲座、实验、研讨课的形式组成。课程内容丰富多样,避免了教学形式单一、课堂枯燥沉闷。讲座除去基础的知识讲解还有针对当前行业最新的技术探究分享。实验主要通过合作探究的方式完成。这样带给学生最大的好处是通过互动带动思考,有利于发现问题解决问题。研讨课针对当前行业的热门主题在教授的指导下,以小组的形式,围绕主题,同学之间各抒己见、畅所欲言。
瑞典的嵌入式系统专业的教学体系始终围绕着“自由”与“合作”。
(1)自由度。学生可充分考虑自身情况选择最合适自己的专业方向。课程安排上,大学鼓励学生全方位发展,除了本专业建议推荐的选修课,还可任意选择其他专业的课程。
(2)合作性。①研讨会形式。这种授课模式相对于国内大学来说还是比较陌生的,国外大学发展比较成熟。研讨会会事先确定主题内容,学生围绕主题在课前做好准备工作。研讨会以组内的讨论为主,每位学生都需陈述自己的见解。最后,在教授的引导下,开展组与组之间的探究思考。在这种模式下,合作探究促进了学生之间的互动性。②小组实验形式。主要以合作探究型实验形式开展。学生自由分组,且学生有很大的自由度,在给定的实验要求下,学生除自主探究如何完成实验还会就实验中所遇到的问题扩展探究。一方面,实验促使学生自主合作学习,合作讨论;另一方面,对实验中所遇到的各种问题发散式探究,不再局限于实验本身。
学校为学生提供了良好的IT支持,保证学生可在校内机房或在校外进行学习研究。此外,学校还提供了免费的众创空间——Mentorspace。它主要向所有希望从事构思、原型或项目构思工作的学生和员工开放。图1 为学生在Mentorspace中进行PCB的设计项目。
图1 PCB板设计装置
在嵌入式系统教学中,常常会出现学生获得的理论知识已差不多了,但他们的实践技能还有很大的提升空间[13]。所以在实验项目的设定与选择上,充分考虑了理论知识的连续性与灵活性。在保证项目的专业化和有效性的同时,保证实验具有一定的灵活性,以助于学生有足够的发散探究空间。以下将具体分析两个实际项目案例。
该项目通过使用DE2 开发板在典型的实时操作系统(μC/OS-II 嵌入式系统)上开发实时应用程序——模拟汽车巡航控制系统使学生们获得实时操作系统的实践经验。该项目要求学生在基本了解实时操作系统(RTOS)的基础上,加深理解中间环节(如信号量,邮箱,消息队列),通过多任务之间的同步和通信实现应用程序。
图2 所示为基础巡航系统功能示意图。学生需完善初始化算法并编写代码,实现完整的巡航系统中车辆任务与控制任务的程序。该系统包括了5 个输入信号,分别为:发动引擎,巡航控制,油门踏板,刹车踏板,齿轮装置。这些输入信号相当于实际巡航系统中的控制开关。通过控制这5 个输入信号实现了发动机引擎的开关状态;汽车巡航功能的开或关;控制油门实现加速与控制刹车实现减速;汽车挡位的选择。其中,这5 个输入信号在巡航系统运行中,彼此之间相互影响。
图2 基础巡航系统功能示意图
除此之外,如图3 所示该系统还应实现测量汽车当前位置(是上坡阶段还是下坡阶段亦或是平路)和当前速度。这需要学生充分理解汽车当前的行驶状态,利用所学的物理基础知识,考虑上下坡时由于风速的不同造成加速度的不同,最终推导出速度与位置的表达公式。
图3 基础巡航控制系统当前位置示意图(km)
在该巡航系统中,事件组成较多,事件之间的通信也比较繁复。因此,对于这样的多任务操作系统而言,需要掌握任务与任务之间的同步和通信。在该系统的应用程序中,希望学生通过使用信号量、邮箱、消息队列实现各个任务通信的同时辨析清楚三者的不同之处。
图4 所示为在DE2/DE-115 开发板上实现的基础巡航控制系统。学生可通过调节3 个按钮及两个开关,来调节汽车车速的大小。并实现当执行巡航操作那一刻的速度大于20 m/s时,可实现巡航功能(即车速稳定)。在图4 中,巡航指示灯点亮,巡航速度保持在51 m/s,且可通过分配不同的LED显示车辆的运行距离。
图4 基础巡航控制系统在DE2/DE-115开发板上的实现
该项目要求在DE2 开发板上多处理器的硬件平台上用多核无操作系统的方式实现一种图像跟踪算法。该算法可跟踪一系列图像帧(给定的)中移动“圆形”图案。
该输入的图像作为像素阵列存储在DE2 开发板上的SRAM。应用的输出是每个输入图像的坐标对数组,对应于识别的图像模式的X 和Y 位置,也存储在DE2 开发板上的SRAM中。
该项目首先要求了解该应用程序的执行流程。该执行流程以Haskell 语言来建模实现。应用模型以图5 所示的同步数据流模型(SDF)表示。同步数据流(SDF)是数据流的一种约束形式,其中,对于每个参与者,每个触发都在每个输入端口上消耗固定数量的输入令牌,并在每个输出端口上生成固定数量的出口令牌[14]。
整个应用程序需要实现7 个模型,分别为灰度处理、图像裁剪、起点确定、相对误差、初始点计算、终点确定、延迟计算。
图5 同步数据流模型
该项目提供的硬件平台包含了5 个32 位CPU(见图6),每个CPU都包含一个4 KB的指令缓存和一个2 KB的数据缓存。其中,仅有CPU0 可以访问SRAM和SDRAM,且没有片上存储器。剩余4 个CPU 均具有大小为8 KB的片上存储器,可以访问共享片上存储器。选择器可以确保只有一个线程可以同时运行。FIFO存储器是首先实现数据输出的寄存器。当多个主设备想要访问一个从设备时,仲裁方案将有助于判断哪个主设备具有更高的访问优先级。
在此多核无操作系统中,CPU0 是主处理器,而CPU1 ~4 是从处理器。这种结构增强了硬件的性能并提高了处理能力。每个从CPU 都可以在自己的片上存储器上处理部分图像。CPU0 获取起点并裁剪原始图像,然后将其存储在共享内存中。CPU1 ~4 分别从共享内存中读取1/4 裁剪的图像,然后对其进行灰度处理并获得目标点。然后它们将坐标存储在共享内存中。最后,CPU0 将获取坐标并输出它。最终的实验测试结果如表1 所示。其中可见在多处理器平台上实现的图像追踪应用程序可达到192 张/s图片(图像全部为针对该实验的特定图片)。总代码的占用量为24.85 KB。
图6 多处理器平台架构
表1 图像追踪应用程序测试结果
在该项目所要求的多处理器环境下,怎么访问分配共享资源将是学生需要进一步探究的问题。这是因为当多个处理器要使用同一条总线时,一次只能有一个外设将数据放入一条总线。此外,由于多处理器的资源非常有限,因此还需探究代码和电路板/编译器的优化。
相比模拟实时汽车巡航系统实验,该硬件平台具有5 个处理器,非常复杂且处理困难。虽然多处理器在提高应用的效率上具有很大优势,但应考虑好处理器的并行性。学生需探究如何使用互斥锁来阻止CPU的交错执行以满足所有CPU 都能以适当的方式访问共享内存。此外,学生还应合作探究代码的优化措施。例如用移位运算符实现乘法功能;用Int 指针代替无符号char指针可提高传输数据等。
从以上的教学模式和两个瑞典的嵌入式系统实验课程的实验项目可见,瑞典的嵌入式系统的教学更强调“探究”。对比我国传统型的“按部就班”验证性实验(即通过老师讲解,学生根据课本的指导,一步步的完成实验),距离培养有创新能力的人才还相去甚远。
图7 分别展示了瑞典与我国嵌入式系统教学组成架构。其中,双方在教学模式上最大的不同在于有无课程前的准备安排。
图7 中瑞两国嵌入式系统教学架构比较
在瑞典的教学架构中,“课程前”是一个很重要的教学模块。往往通过开课前把课程大纲,教学安排表,讲座参考文献上传至课程学习系统。因此,瑞典教学希望学生能够做好课程预习这一板块。教师更希望学生带着问题来上课,而不是干巴巴地听讲座。反观我国的教学模式,更强调教师对于知识的传送。也是因为这个原因,讲座在整个教学中占比最多。在课程组成上,瑞典教学的形式更加丰富多样化,其侧重点也更加明确。讲座旨在教授基础知识,习题课检测掌握情况,研讨会探究行业发展,实验学以致用。我国的教学模式较为单一,这无疑会大大减少学习课程的乐趣,也使得课程内容并未完全被学生理解吸收。我国与瑞典的课程考核模式都由笔试和实验等部分组成,但我国以最终的总成绩为考核标准;瑞典需要分别对各个部分进行考核。在我国的考核体制下,抱有侥幸心理的有些学生会且只重视理论知识的学习,忽视通过实验可以增强实践能力及对科学理论知识加深理解的作用。我国的实验课程和理论课程往往由1 位老师全部负责。由于学生人数较多,无法针对性地兼顾到每一位同学。相反,瑞典在理论课,实验课,习题课中将会分配不同的助教帮助学生,在最大程度上答疑解惑。瑞典的实验课程内容更加贴近实际生活。这无疑会对刚接触这一陌生专业的学生带来一丝新鲜感,具有强烈的吸引力。瑞典实验课程的实现方式采用合作探究型。这促使学生自主学习,合作讨论,并对实验中所遇的各种问题发散式探究,不局限于实验本身。
教学评估是整个教学体系中不可忽视的环节。它起到了促使教师自我调节和促进学生自主调整的作用[15]。教学评估提供教师最真实的教学信息,以便于及时修正教学中存在的问题。表2 展示的教学测评表重点体现了教学的侧重点是以教师为核心的知识传授或以学生为中心的探究学习。
测评结果显示,我国更重视课堂教学,课堂以老师为中心;瑞典更重视探究,鼓励学生自主探究。此外,由于考核课程的形式更加多样化,使得瑞典实际教学中,学生每周的学习课程时间为35 学时,高于我国的20 学时。瑞典学生更多地将时间放在了实验探究上,也就是知识点的实际应用上。这点有别于我国学生死抓课本知识点的现象。
表2 教学评估表
纵观瑞典的嵌入式系统教学体系,为我校的嵌入式系统专业教育带来了一些启示。嵌入式系统教学各个部分环环相扣,各个部分需要齐头并进。未来在嵌入式系统的教学中,更应当注重理论教育的递进层次性,实践环节的团队合作探究。加强学生实验操作能力,鼓励学生自由思考,尝试发散思维,解决问题。此外,还需改革课程考核模式,以满足全方面考察学生的学习成果。