试论将μC/OS-II用于单片机教学

试论将μC/OS-II用于单片机教学
清华大学 邵贝贝

 

摘要:
当前,大学中的“嵌入式系统与单片机应用” 及类似课程的教学内容和实验正处在转型期,由单纯8 位机转向8 位、1 6 位、3 2 位并举;开发方式上, 仿真器在逐步退出;嵌入式实时操作系统被引入教学。本文就相关课程内容与实验平台方案的设计提出一些看法,以引起同行的思考与讨论。
关键词:单片机 嵌入式 RTOS μC/OS 教学 培训

 

    在2003 年天津举行的“全国单片机及嵌入式系统学术年会”上, 来自全国各地几十所大学的教师对单片机与嵌入式系统教学展开了热烈的讨论。这里,就我们的认识介绍如下,以达到抛砖引玉的目的。


1 单片机与嵌入式系统应用类课程的转型期当前,单片机与嵌入式系统应用类课程正处在转型期。

       过去的2 0年中,单片机市场与需求都是以8 位机为主的。最近几年来,16 位、32位单片机的嵌入式应用呈迅速增长的趋势。在一两年后, 数量上虽然仍会以8 位为多,但32 位单片机在产值上会超过8 位单片机,如图1 、图2 所示。今后,单片机应用将呈现8 位、16 位、32位单片机并举的格局。由于单片机系统的需求越来越复杂、集成电路技术发展又非常快,片上存储器容量不断扩大, 使得在片上系统的开发中, 使用嵌入式实时操作系统(RTOS)成为可能。计算机对于90% 以上的学生都不能是他的专业,而只是一种工具。同各行各业开发单片机应用的工程师一样, 非计算机专业的学生来自各个领域,他们不可能将主要精力花在研究操作系统上,而是要把主要精力放在所研究的专业上,他们需要的是把计算机专家们研究的成果直接拿来使用。R T O S 可以将一个复杂的应用分解成多个任务, 从而简化应用程序的设计;R T O S 可以保证系统的实时性达到或接近理论上可以达到的最好水平。而多任务本身会带来一系列的问题,主要是任务间的竞争、死锁、优先级反转、任务间同步与通信等。这些问题有R T O S 为用户考虑,只要知道R T O S 的原理,会使用就可以了。故单片机教学的这次转型, 引入R T O S 概念是一大特点。


2 单片机教学史的回顾与思考回忆过去我国单片机教学走过的路,大多数院校都是从8051 走过来的。故8051 在国内普及单片机应用方面功不可没。而总结一下由8 0 5 1 教学模式带来的副作用,将有利于目前的转型。
        一个副作用是,教学中以一片8051 配以不同的外围电路去适应各种不同的应用。这就忽略了单片机应用的多样性和单片机应用的个性化定位。单片机姓“单”,世界上的单片机至少有上千种,每种单片机都有各自的定位。我们强调的是S OC ,即片上系统,只有将整个系统都集成在一个集成电路芯片上,才能做到低成本、高可靠性。只有在不得已的情况下,才扩充额外的接口芯片。故应告诉学生,虽然学的是某种单片机,但针对不同的应用要选择最适宜的单片机。单片机教学要求教师教会学生一种方法, 会用这种单片机,自然也会用其它单片机。
       过去8051 教学引入的另一误区是使用仿真器。如果说过去开发掩膜型单片机使用仿真器属不得已,则如今单片机都采用了可以反复擦写十万次以上的F l a s h 存储器,实在没有必要使用仿真器。本人在过去2 0 年的单片机应用开发中,就从来没有用过仿真器,并非没有仿真器可用,只是不主张使用仿真器,特别不主张使用仿真器教学。仿真器使单片机开发变得不直观,高价的仿真器增加了开发成本,也增加了教学的负担。开发者不可能为每一类单片机买一种仿真器,只好以自己有仿真器的那种单片机去适应所有的应用,从而误入歧途。


3 是教学还是培训我们这里讲的是教学,不是培训,教学不同于培训。俗话说,“授之以鱼不如授之以渔”。教学是“授之以渔”,授之以解决问题的方法,培养解决问题的能力,是引导学生入门。通过授课与实验,要求学生能做到三个看懂,看懂原文手册、看懂硬件原理图、看懂别人写的程序。在此基础上学会如何掌握一种自己不熟悉的单片机。我们讲C P U 硬件结构,讲汇编指令集,教学生如何初始化串行口,从而实现与单片机的C P U “对话”,进而学会写监控程序,然后将如何与C 语言接口,以μ C /OS-II 为例,讲RTOS 基本概念,进而移植μ C/OS-II。
       培训的目的是让用户尽快上手,一周乃至三天后就可以开始写应用程序。培训是“授之以鱼”, 培训的典型例子是教学生如何使用某单片机的仿真器。教学, 强调的是引导学生入门, 只要我们能正确地引导学生入门, 告诉他们什么是正确的方法,后面的路他们会自己走。


4 将μC/OS 用于RTOS 教学1995 年以后,我们逐渐将μC/OS、μC/OS-II 引进单片机应用的科研与教学,证明是成功的。μC/OS、 μC/O S - I I 是专门为嵌入式应用设计的实时内核,适用于几乎所有8 位、16 位、32 位单片机;90% 以上与硬件无关的代码用C 语言写成,用汇编语言写的与硬件相关的代码不足2 0 0 行;有P C 机上可运行的范例;有针对数十种知名C P U 的移植范例可直接从网上下载;有注解清晰、书写规范的全部源代码。有一部600 页的书对RTOS基本概念、内核原理做了详尽的描述, 随书所附光盘上的μC/OS-II V2.52 通过了美国航空航天管理局的安全认证, 可用在与人性命攸关的控制系统中, 是一部科学、实用的好教材。该内核的前身是μC / O S ,最早的版本是为Motorola 增强型8 位单片机68HC11 CPU 写的。68HC11曾经是世界上产量排名第三的(第一是68HC05 ,第二是8051)著名单片机CPU。1995 年前后,我们曾以68HC11作为单片机应用的教材, 并出过一本《M C 6 8 H C 1 1 单片机开发技术》的教材, 清华大学出版社出版。目前,68HC11 逐渐被与之指令集在源码级兼容的 CPU12 替代,故我们的研究生教学也将顺势转向采用1 6 位的C P U 1 2单片机。
       我不主张将嵌入式Linux、μClinux 等用于教学。它缺乏适当的定位,虽然有源码,但并没有一本适于做教材的书籍, 对于非计算机专业的学生来说太难了,也没有必要花那么多的时间去抠懂。将μClinux 移植到不同3 2 位系统上是计算机专家的事,非计算机专业的人士,仅仅是使用而已。对于计算机专业的学生,操作系统是必修课,有一部很好的教材,Andrew S. Tanenbaum 等著, 王鹏等译 《操作系统设计与实现》(第2 版), 电子工业出版社出版。这本书讲的是M i n i x ,实际上是简化了的Unix、Linux。学过这部教材,进而掌握Linux 原理就不难了。μClinux 等嵌入式Linux 不是实时的,仅对L i n u x 做了简化,使之可用于嵌入式应用,但作不到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 位单片机复杂, 比3 2 位单片机简单,外围接口丰富(比一般32 位机还要丰富),片内R A M 、R O M 资源适中。讲述了以汇编写监控程序开始,到用C 语言写程序, 再到移植μC /OS 这一方法,同样适于8 位、32 位单片机。这种方法本身也始于20 年前,逐渐增加RTOS 是近8 年的事, 是相对稳定又有发展的。
       对没有条件由8 位机实验平台转向16 位、32 位平台的学校,不必强求,仍可使用8 位机平台。若使用的教学平台有几KB 的RAM、几十KB 的Flash,用于μ C /OS-II 作RTOS 教学已足够好,但希望不要再用仿真器,而采用我们从写一个简单的监控程序,到移植μ C /OS的教学法。不必过多地讲授各种I/O 接口的使用方法,让学生在写一个简单监控程序的基础上自己去驱动这些I/O 模块。
       有条件直接升级到3 2 位单片机也是一种选择。不少学校选用了以A R M 为C P U 的单片机,但请注意三点。一是定位, 若课程定位在非计算机专业的学生, 运行μC/OS 之类R T O S,可选择片内有几KB 、十几KB 的R A M、几十KB 的F l a s h 、可工作在单片方式下的A R M , 这样会使教学平台很便宜。第二点是不要炒作, 不要一哄而上。A R M 的应用定位很明确, 是一切与媒体有关的便携式低功耗应用。A R M 是32 位C P U ,并不是全部32 位单片机。以ARM 为CPU 扩以几MB 乃至十几MB SDRAM、Flash 的、可以上Linux 的昂贵平台,只适用于针对某类产品开发应用的培训,不适于用来教学, 因为L i n u x 在PC 机上也能跑。第3 点是学时与学生的基础,32 位单片机对于没有8 位单片机基础的学生是很难掌握的, 没有足够的学时,A R M 底层的东西是很难掌握的。


6 关于课程的定位
       课程定位不同,即授课对象不同,课程的内容可以很不一样,但都必须符合学习的客观规律。我们有2 门单片机与嵌入式应用课程, 一门定位于电类本科生(我系核电子学专业), 名为“单片机认识与实践”,3 2 学时, 只讲简单8 位单片机的入门知识, 不讲R T O S , 面向还没有学过数字电路课程,对单片机有兴趣的2 年级电类本科生。
       由于物理学对计算机的需求几乎是无限的,故像互联网这样的计算机技术最先源于物理学的需求。我们系对部分本科生计算机能力的要求是很高的。接下来,部分学生将做一个单片机应用方面的SRT (Student Research and Training Program) 项目,清华对SRT有专门的经费支持。学生设想一个简单的单片机应用原理性演示题目,利用课余时间,花半年到一年,设计一块印刷线路板、再把软件调出来,优秀作品可拿到每年的学生科展上评奖,甚至参加学生挑战杯的角逐。这些学生在毕业设计中,一般会做一个单片机应用方面的课题。这样上来的研究生甚至可以帮助我当研究生课辅导实验的小教师。
       另一门课程是定位于全校非计算机专业的各系研究生, 特别是那些可能在研究生课题中用到单片机的各专业学生。我们讲以C P U 1 2 为核心的1 6 位单片机和基于μC/OS-II 的RTOS。这两部分内容共安排课内64 学时,其中授课与教师指导下的实验约各占一半。按校方要求,这类课程原则上课内、外学时之比为1 ∶2 ,即学生课外要花1 2 8 学时读书和进行无辅导下的实验。由于学生来自不同学科、不同专业, 在单片机应用方面水平很不一样。计算机技术的发展是各行各业需求拉动的, 而计算机技术的发展促进了需求。这里, 需求是矛盾的主要方面。而个别研究生, 特别是外校考入我校的非电类研究生,甚至没有学过微机原理之类课程。这里我们只能假设选修这门课的同学都有数字电路课的基础, 会用C 语言写程序。由于水平的参差不齐,及学生个人可能安排的课外学时的差异,到课程结束时, 每个人到达的水平也是很不一样的, 故只能是各按步伐、共同前进。
教学、开课要符合学生认、知的客观规律,是由简单到复杂,由8 位到16 位、32 位,由汇编到C,到RTOS。
       要切记防止浮躁,也要教导我们的学生防止浮躁。我们能做到的仅仅是领学生入门而已,能指出一个大致正确的方向,不误人子弟已属难得。后来,能成为IT 高手的,不是我们培养的,而是通过他们自己艰辛努力实现的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值