北京理工大学计算机学院马忠梅老师的发言为《嵌入式系统教学探索》,给大家讲述了过去10年间她在嵌入式系统教学上的实践,回归微控制器是她反思后的选择。
《嵌入式系统教学探索》 马忠梅 北京理工大学计算机学院
相关PPT下载请点击:http://www.esbf.org.cn/img/0912mzm.pdf
以下是演讲文字实录:
大家好,我昨天才知道这个消息,本来我不打算出面发言,PPT也是昨天赶出来的。
这个内容,我在去年的11月单片机嵌入式系统杂志发过一篇文章,单片机教学模式的探索,还有我今年出的一本书,(关于ARM的Cotex的微控制器教程),年初能出。所以前沿的内容就是这些,想讲3个方面的内容,一个是从单片机到嵌入式系统,一个是嵌入式系统的教学实践,第三个是回归微控制器,国际上咱们只能查到微控制器,微控制器,因为它有1984年的Intel的,单片机只是咱们国内的一个俗称。
我主要也讲的也是这些年,咱们国内从头的教学实践,整个一个实践的过程。我从1985年就进入这个领域,本科毕设我就一直在做这个事情。当时是保送研究生,我要转学到无线电专业,就是单片机上嘛,后来就是等于一个特殊的一个经历,留在校办公司,干过8年,现在回到学校系里教书也有14年了,在这期间我干过5年的军工项目,也是把单片机送到了火箭弹上,火箭弹搞距离修正。整个下来,咱们国内的计算机,单片机也是最早最早在军事上用,因为我导师是搞导弹的嘛。这样的话,在85年,在兵器部就有了单片机的培训班,可能是北京最早的培训班。后续的话,启东电子仪器厂的培训,我基本上是给他做培训,陆续培训了7年以后,高校才陆陆续续的开课。所以,当时培训的人员基本都是各个行业研究所的搞项目的人员,所以应用起来,高校培养的学生就很容易就业。而且当时的培训,他们会找一个地方,然后请老师培训,往往听的人是不要钱的,听的人只是为了买开发工具,所以现在的局面跟当时就完全的不一样,所以,嵌入式系统我也有点会不过味儿来,就这么进来了。
我在整个讲的时候,嵌入式系统是一个广阔的天地,大有作为的一个市场。96年的时候我在着手写一个单片机C语言应用程序设计,当时我在启动培训的时候,他给我了一套C语言的编译器,我简直是如获至宝,因为我在计算机的转型期,单片机从4851到96,危机也从Z80到652,到X86,所以这些的汇编我都用过,而且都在开发很多程序,而且单片机的机器代码我读过10k的机器代码,我做工具,是学着人家的开发工具在做,所以得到C以后,后来在维护程序的时候,发现汇编简直是脑袋大的不行,所以有了C以后这个可读性非常强,所以写了这本书,在97年1月出了,后来我回到系里教书,为了让它当教材,又加了单片机的基础,修订版就已经成了教材,到第三版的时候做了一个版本的升级,开发界面的版本升级,然后台湾的把这个版权买走了,就出了教单晶片C程序设计,写这个书的时候,参考的一本国外的书叫C8051多任务的编程。有了高级语言,因为后面有操作系统嘛,就是有很多种的操作系统单片机可以用,我就在琢磨上操作系统,包括当时也查到了μcOS操作系统,我还找何小庆买过 AMD186板子,不知道他还记不记得,就是为了配这个μcOS操作系统,但是当时学生兴趣不是很大。所以后了一只寻觅一个高端的,想上操作系统,因为8位的去上操作系统没有办法去做。后来就关注到ARM,所以在01年6月份,有个嵌入式系统联谊会的前身叫单片机联谊会,我们有个季度的活动,那时候有个32位的处理器,就是介绍ARM。实际在01年的年初的时候,外边认识的人后来到高校问我能不能找到懂ARM和Linux的人,我说这课都没有开,软件也没有,我知道ARM。所以在01年的时候有IC展的时候,我就比较关注ARM,后来写了一篇文章,叫做国际集成电路中的嵌入式与单片机集成系统,有一些新的内容。后来谭博士也是有这个想法,想出书,当时寄过来一本书,是ARM的参考手册,我一看这指令系统是按照字母顺序写的,和字典一样,我一看说这肯定不能做为第一本书,后来他把资料就寄过来来,他们的数据手册相当于,当时还拿了不本英国出的书。我当时用了一个星期的时间把这个数据手册整了一个二级目录,后来就写了第一本ARM嵌入式处理器的结构及应用基础。当时和谭博士也讲,ARM7推出了就不错了,所以当时就只写到ARM7,这个是02年1月份出的,后来我们在第二版的时候才把ARM9才加进去。ARM这本书出来后,后续在02的时候首届的Intel杯的嵌入式系统竞赛,就等于在全国大学生电子科技竞赛中间插了一个Intel赞助的Intel杯,我那本书当时作为他们的参考书,所以我们学校知道这个情况,就把我调到那边去带队,带队去参加这次竞赛。但是是喜欢ARM嘛,但是给的板子是配wince的,但是北大的那个队,在Intel杯唯一的一个吧Linux弄上去的,所以我当时在想这个事情不错啊,所以回来呢,我们学校正好是全国大学生竞赛组委会的学校,所以当时我们学院的领导利用教学实习经费就让我去买实验箱,所以02年起我就订购实验箱,买了实验箱就让我开课,单片机课,也是我用了C语言后,大家就反映不难学了,很好学,所以赶快就让我转,就等于开出了嵌入式计算系统课。但是得益于国外的一本书,现在翻译过来是嵌入式计算系统原理,我觉得挺权威的,那本书也是抛开了很具体的处理器,然后整个讲了个处理器,CPU,操作系统,网络,这些原理,现在第二版已经都有,所以后来就以ARM Linux来给本科生在开课。然后面向全校研究生的有嵌入式的课,然后就开了计算机与嵌入式系统,51单片机在讲嵌入式系统基本一半的学时。今年年初的时候我已经给大家的研究生课引入了一些高端内容。整个下来在教学实践这个领域,我摸着石头过河,反正弄成啥样就是啥样,也有些反复,主要是做这些事情,实际上我们开课的时候,我们学校计算机学院计算机硬件类的课还是比较完善的,就是数字逻辑,组成原理,系统结构,接口技术,然后嵌入式计算系统后头做实验,而且我本身是计算机组成原理的课和系统结构可我也是在讲这两门课,所以基本是嵌入式计算系统这个课,我在那两年做为一个重点,感兴趣的来选,所以前后选修的人数很多,上课必然得有书,所以我自己琢磨去弄这个书,些了ARMLinux系统教程,最早的这本书应该是04年出的,03年底我得到了当时国内唯一有的实验箱,它是带MMU的,所以配上普通的Linux,当时在这儿吃的苦头,但是到处求救,因为是非典嘛,包括陶品,何老师,跟他们打交道,后来是一个在摩托罗拉实习的学生帮我把这个完成的。后来也是Intel的大学计划,赠送高校板子,还有摩托罗拉的大学计划,推出了ARM龙珠核的板子,因为本身他们要写书,所以第一版基本上以这个为基础写的内容,但是又不太针对具体芯片。后来是教学评估,后来是实验教学中心,然后示范教学中心,所以要采购最后的实验箱,后来买了三星的大家公认的实验箱,但是我也不踏实,所以买了两个厂家的实验箱。我这个整个在本科要讲的内容基本是嵌入式系统基础,嵌入式系统开发过程,Linux操作系统,ARM的体系结构,应用程序,驱动程序设计还有GUI这部分内容。
但是不管怎么去讲,有限的学时,因为我们是选修课,学时非常的有限。最早的选修课,本科生要350人,我只有20台实验箱,所以12学时的实验课,我最多在实验室里陪过80个学时。但是我也发现了,从Intel大学计划的培训教师来看,他的硬件部分的培训教师就是我们学校的学生,板子就是学生自己设计出来的,程序就是C语言编写的程序,然后板子各个部件工作正常,他的能力也就做这些工作;然后软件部分的培训教师是学计算机的,他讲的是怎么移植Linux,怎么设计驱动程序。所以大公司对软件人才的分工是非常明确的,但是我们现在教学这里软件硬件都顾上了,很难兼顾,这点课时根本就没有办法来兼顾,所以嵌入式教学国内不是由应用来驱动,我觉得单片机那会儿确实是应用铺垫起来做的教学,而嵌入式系统是跟着实验箱,实验箱给什么内容咱们授课内容在做什么,讲的都是接口技术,汇编,c语言编程,操作系统移植,而且好像ARM+Linux系统就是嵌入式系统,这个我在Linux吃了这么大的苦头,所以好多事情只有网上求援。现在我的实验箱,硬件没有一个厂商支持,软件也没有一个厂商的支持,所以非常艰难地这么过来的,但我在我的学生在大公司实习能够帮我一点忙。所以我想,教学模式不是简单的事情,其实可以选择ARM+μcOS,ARM+Linux。。。。。。[page]
当然不是ARM的也可以,其他处理器也一样,你有各种各样的教学模式,不能直走单一的教学模式,刚才申老师还有其他老师都在讲这个事情。公司要真正的项目开发人员,软硬件的比例差不多8:2,搞软件的要8的话,搞硬件要2个就够了,因为硬件有原理图,原理图给的很清楚,比如北航做龙珠板子,原理图很清楚,一根飞线也没有,而软件体现的是附加值。微软介入嵌入式领域就提供了很好的解决方法,所以当时微软的嵌入式和移动的研讨会我去了,我觉得特别的震撼,他弄云南白药集团计划,而咱们的嵌入式还仅仅是限在移植啊,底层啊,模块的应用上,离产品确实是很远。我觉得半导体上偏爱Linux因为他是免费的,因为它移植到评估板上,证明他的板子工作,但是离真正做出产品,搭建平台差距很大,现在大公司厂商都有所谓手机平台,PDA平台,还有汽车电子的平台。说起平台,我对平台式非常非常支持,因为法国电信,他弄一个Lips开源的手机平台,我四届的研究生都在那里实习,等于我无偿的送他们去实习,我是希望这个平台我能移到我的实验箱上去,而且他们最终也是给我移到了实验箱上,但是效果不好,原本想移植到实验箱上就贡献给大家,但是效果确实不理想,包括我还有个自己设计的WGY图像的用户界面,但是最终是在摩托罗拉的板子上开发出来的,后来移到Intel的板子,现在又移到了实验箱,但是存在的最大问题就是他的触摸屏,我有个程序,是点一下,然后板子上反映点的是哪儿,散布能有一个手指头那么大的散布,所以小的按钮全按不上,他的中文输入法根本点不到字上,我也没有什么好的办法。所以本科这里教学难度很大,我们毕设也有好多老师在搞,微机上模拟出来了,最后转成了一个纯软件的开发,看谁软件能力更强了,根本谈不上和硬件的相关。在我的心目中应该是软硬结合的,应该软件硬件都培养的才叫嵌入式系统,所以一直窝也在困惑着这个问题,有限的实验学时,还有理论学时软硬件怎么兼顾,各个专业怎么弄,我也是立足在接项目,说白了,我搞了嵌入式系统,我一个项目也没接成,一个项目也没有干。到最后,我今年留下的一个板子等于是我在上一节研究生,有一个项目,而且也不复杂,能够查查网上球赛的东西,两届研究生没做出了,最后他们走了,我说板子怎么也得给我留下,因为人家毕竟是来实验室谈的,不然人家找我怎么办啊。实习原来我们有大公司,电信到摩托罗拉,摩托罗拉手机当时有我们的学生,而且当时就是这种模式,我们的好学生他们挑走了,但现在摩托罗拉也在缩,我感觉也是大公司实习我们机会也是很少的,特别是找工作,我着急啊,几年毕业的研究生最晚的一个是4月底找的工作,我觉得当时真是非常着急的一个事情,但是我明年毕业的学生,我现在已经给他们转到微控制器这里,明年毕业的学生,这周三吧,我一个女生都签了,学生都全部找到了工作。所以我现在也在转,后续的我还是想我原来的那个,因为原来单片机从来没愁过接项目,所以又回归到微控制器这里。北航有本影印书,就是嵌入式硬件,这本书里面有一点,就是32位的8051,也就意味着他是一个通用的控制器内核,许多人都知道,也在用,书中指出,ARM对于嵌入式世界,就像X86对于桌面的PC世界,这本书我翻译过来了,大家可以去查一下,这里看出他是一个大家公认的体系结构,他和8051一样,8051是8位机,但他是很标准的适合于教学的机型,所以说ARM也是这样的一个地位,比较标准,比较适合教学的机型。我也一直在查微处理器和微控制器有什么区别,我查到的最后,我觉得还可以接受的是微处理器是把存储器放在了片外,微控制器是把存储器放在了片内,其他的定义好像就是有厂商定义是微处理器还是微控制器,但总的来讲,微控制器的集成度会高些。
所以,研究生的教学,我在上研究生的课,他们其他学院没开,所以最多有400人在听课,各个专业都有,我一直在做调查,每届我都在看他们在用什么样的处理器,什么样的操作系统,然后去干什么项目。从整个调查来看,没放弃也是因为,超过一半的学生还是在用微控制器,应用也是以微控制器为主,用量非常的大,也有很好的应用基础。我们说一个MCU的设计可以改造一个就产品也可以创造一个新产品,所以对大学生研究生也是容易上手的,因为它的集成度高,学生能够方便的去做电路板,学习硬件的接口技术,直接面向硬件的软件编程技术,对嵌入式软硬件能够深入了解,我弄的高端ARM+Linux就很难做到这一点。ARM公司也是看到微控制器巨大的市场,去年5-7月份有个嵌入式微控制器的创新研讨会,这里讲了一些工具,ARM公司很大的一个举措是推出了一个新的内核,实际的也是想替代8051单片机(Intel把他放弃了),但是实际的还是很好,然后他还收购了8051最好的开发工具keil的厂商,很容易吸引原来搞8051的用户。以后也是想不以8位,16位,32位来划分,而是以高中低档来划分,因为他们有统一的机芯。这点我也看到,去做教学肯定有非常不错的东西,但是只是外围的部件和厂商的不同,所以今年我一直等到而来NXP,我现在设计中断和计时器,这些偏上资源编程,我这本书就是为了明年我研究生上课要用,力图做一相似的案例,然后做一比较,两个目的,一个是普及高端的计算机不再面向寄存器编程,没办法编了,应该用库函数,另一个是多厂商支持,一个厂商倒了还有其他厂商,不会再发愁其他的问题,还有一个是寄存器给出了具体的指令英文原译,因为我一直是在用原文在学,我现在发现国内好多书都是寄存器一个缩写,都不知道怎么回事,指令系统都是需缩写,都不知道怎么来的,学生都是靠死记硬背,所以他们非常难学,学一个新的指令系统,一个新的处理器都非常难学,而且32位的cotex最大的好处是完全可以用C语言编程,厂家都提供库函数,NXP的那个还算简单,还可以独立编,但是他们也有库函数。所以现在只要是会些基本操作,可以降低门槛,而且有CMSIS这个标准,移植起来会很方便。这本书的主要几个章节有8章,就是嵌入式基础开发过程,跟原来的书是一样的,加了体系结构,讲了四个厂商的微控制器和片上资源的编程,接口这里有液晶屏,键盘,还有其他接口,μcOS的移植,我后来加了一个UML的设计方法,因为研究生会做这个,我现在也在做汽车电子的UML建模,以后希望程序可以自动生成,不要再编程,我也编够了。希望以后的理想是用模型来自动生成程序。
确实是我们各个专业有所侧重,由应用来推动,各个专业应该是申老师讲的分类,不要弄得千篇一律。你这个是ARM+Linux,大家都是ARM+Linux,现在好像就是这么回事,实际不是这样的,我觉得各个专业是应该有所侧重,比如说像移植根本不应该是在本科生的内容,应该是毕业设计或者是研究生的教学内容。不是要面面俱到的,然后弄得很难,然后把学生吓跑,我觉得兴趣是第一老师,一定要提高兴趣。所以这个是很重要的,怎么去规划实验内容,应该选择主流处理器,有大学计划更好,我现在是没有弄到很好的大学计划,我以后会注意,真有很好的厂商,我希望有很好的大学计划的支持,而且是8位,16位,最好是微控制器,因为这里容易做板子,超过100M主频以上,那个板子就不是那么好做了,还要有专门的仪器。所以现在我一直在呼吁,公司搞个竞赛,搞大学计划,因为我发现参加竞赛的学生都会好找工作,咱们不为什么也为了这些孩子,让他们好找工作。咱们大学计划做的,比如飞思卡尔之类的很少,其实很多公司都有大学计划,有他们很好的支持,咱们应该给他开课,而且他在国内肯定有市场,不能开成千篇一律的。我现在也在想,我本科生这里,现在我已经弄了两套教学大纲,一个是高端的,ARM+Linux方面,是瞄准着Intel杯,博创杯,另一个是普通的,瞄准全国大学生电子竞赛,单片机的,随便用哪种单片机,没有限制,以微控制器为主,低端的。所以我们打算开出两个头,最后就看采购哪家的实验设备,帮我把这个课开起来。
所以说百家争鸣,百花齐放,没有一个统一的处理器,统一的标准,应该是在嵌入式领域大家都有机会。
就讲这些,谢谢大家,因为昨天准备了20分钟,所以可能超了一些,谢谢大家。
感谢嵌入式系统联谊会提供录音资料整理工作。
上一篇:常晓明:高等学校嵌入式系统人才培养的思考
下一篇:陶品:嵌入式课程之创新实验设计