试论将μC/OS-II用于单片机教学
我不主张将嵌入式Linux、μClinux等用于教学。它缺乏适当的定位,虽然有源码,但并没有一本适于做教材的书籍,对于非计算机专业的学生来说太难了,也没有必要花那么多的时间去抠懂。将μClinux移植到不同32位系统上是计算机专家的事,非计算机专业的人士,仅仅是使用而已。对于计算机专业的学生,操作系统是必修课,有一部很好的教材,Andrew S. Tanenbaum等著,王鹏等译 《操作系统设计与实现》(第2版),电子工业出版社出版。这本书讲的是Minix,实际上是简化了的Unix、Linux。学过这部教材,进而掌握Linux原理就不难了。μClinux等嵌入式Linux不是实时的,仅对Linux做了简化,使之可用于嵌入式应用,但作不到SoC。学习简化的Linux,不如选用Minix。当然,μClinux可用于针对某特定应用的培训。运行μClinux至少需要512KB的 SDRAM,目前的技术水平片内RAM还不可能做那么大。而运行μC/OS-II则只需要几KB的RAM,十几KB的Flash,这完全可以在单片机的片内实现。讲解RTOS原理,μC/OS-II足够好了。
5 教学内容要在稳定的前提下发展
8位、16位、32位单片机将三分天下已是业界共识,作为教学,稳定至关重要。虽然单片机技术发展迅速,但开一门单片机教学的课程并非易事,需要教师、教材、实验器材等,特别是实验平台,需要较大的投入。教师要有相当的科研经验,用单片机做过研发,还要会讲。我的经验是,讲一门新课,至少要讲到第三年才能说会讲了或能讲好了。为了稳定,每年只能更新一小部分内容,要善于解决稳定和发展快这一对矛盾。RTOS的教学可稳定很多年。μC /OS已经十多年了,仍然好用,虽然每年都有新发展,但基本原理没有变化,我看μC /OS-II至少还可以再讲10年;MINIX快20年了,仍是一部好教材。实验平台也应尽量稳定的时间长一些,既然讲述的是开发方法,使用8位、16位还是32位单片机其实是无所谓的。
由8位机一统天下,到8位、16位、32位并举,转型期定位单片机与嵌入式应用类课程的切入点在哪里为好? 本人拟采用了以16位机 CPU12为切入点。它比8位单片机复杂,比32位单片机简单,外围接口丰富(比一般32位机还要丰富),片内RAM、ROM资源适中。讲述了以汇编写监控程序开始,到用C语言写程序,再到移植μC /OS这一方法,同样适于8位、32位单片机。这种方法本身也始于20年前,逐渐增加RTOS是近8年的事,是相对稳定又有发展的。
图2
对没有条件由8位机实验平台转向16位、32位平台的学校,不必强求,仍可使用8位机平台。若使用的教学平台有几KB 的RAM、几十KB的Flash,用于μC /OS-II作RTOS教学已足够好,但希望不要再用仿真器,而采用我们从写一个简单的监控程序,到移植μC /OS的教学法。不必过多地讲授各种I/O接口的使用方法,让学生在写一个简单监控程序的基础上自己去驱动这些 I/O模块。
有条件直接升级到32位单片机也是一种选择。不少学校选用了以ARM为CPU的单片机,但请注意三点。一是定位,若课程定位在非计算机专业的学生,运行μC /OS之类RTOS,可选择片内有几KB、十几KB的RAM、几十KB的Flash、可工作在单片方式下的ARM,这样会使教学平台很便宜。第二点是不要炒作,不要一哄而上。ARM的应用定位很明确,是一切与媒体有关的便携式低功耗应用。ARM是32位CPU,并不是全部32位单片机。以ARM为CPU扩以几MB乃至十几MB SDRAM、Flash的、可以上Linux的昂贵平台,只适用于针对某类产品开发应用的培训,不适于用来教学,因为Linux在PC机上也能跑。第3点是学时与学生的基础,32位单片机对于没有8位单片机基础的学生是很难掌握的,没有足够的学时,ARM底层的东西是很难掌握的。
6 关于课程的定位
课程定位不同,即授课对象不同,课程的内容可以很不一样,但都必须符合学习的客观规律。我们有2门单片机与嵌入式应用课程,一门定位于电类本科生(我系核电子学专业),名为“单片机认识与实践”,32学时,只讲简单8位单片机的入门知识,不讲RTOS,面向还没有学过数字电路课程,对单片机有兴趣的2年级电类本科生。
由于物理学对计算机的需求几乎是无限的,故像互联网这样的计算机技术最先源于物理学的需求。我们系对部分本科生计算机能力的要求是很高的。接下来,部分学生将做一个单片机应用方面的SRT (Student Research and Training Program) 项目, 清华对SRT有专门的经费支持。学生设想一个简单的单片机应用原理性演示题目,利用课余时间,花半年到一年,设计一块印刷线路板、再把软件调出来,优秀作品可拿到每年的学生科展上评奖,甚至参加学生挑战杯的角