浅谈嵌入式人才培养
北京理工大学 马忠梅
【期刊名称】单片机与嵌入式系统应用 【年(卷),期】2015(000)007 【总页数】2
从1985年初接触单片机到现在已有30年,笔者亲历了我国嵌入式系统的发展(从单片机到嵌入式系统,又回归微控制器),一直从事嵌入式教学和研究。 1997年,在北京航空航天大学出版社出版的《单片机的C语言应用程序设计》是国内第一本单片机C语言书,推广单片机编程以C语言为主、汇编语言为辅,采用模块化的编程方法。为了能运行操作系统、连网,由8/16位单片机发展到32位ARM嵌入式处理器。2002年,根据ARM公司提供的资料,笔者组织编写了国内第一本关于ARM的书——《ARM嵌入式处理器结构与应用基础》。
由8/16位单片机升级到32位嵌入式处理器,一方面是由于互联网的普及和高端应用的需求刺激,另一方面是因为8位单片机带给半导体公司的利润空间已经十分有限。2002年起,由全国大学生电子设计竞赛组委会主办、Intel公司协办的“全国大学生电子设计竞赛——嵌入式系统专题竞赛”,进一步丰富了全国大学生电子设计竞赛的形式和内容,推动了高校信息电子类专业教学改革、课程体系及实验室建设,各高校纷纷开设嵌入式系统课程。2003年起,笔者所在学校开设了嵌入式系统课程,2004年笔者撰写了《ARM&Linux嵌入式系统教程》,并在本科教学中使用。
Linux的教学难度很大,一般要求学生学过操作系统。早期教授嵌入式系统课,
很大精力耗费在教学生怎么用Linux,直到计算机操作系统课程增加了Linux上机实验情况才有所好转,但由于理论课时和实验学时有限,软硬件很难兼顾。研究生教学一直没有放弃单片机,从研究生教学调查来看,嵌入式系统应用还是以微控制器为主,因为微控制器使用量大,应用面广,已有很好的应用基础。一个MCU设计可以改造一个旧产品,也可以创造一个新产品。MCU对于大学生和研究生来说不仅容易上手,更重要的是集成度高,学生既方便做电路板,能够学习硬件接口技术和直接面向硬件的软件编程技术,从而对嵌入式软硬件有深入的理解。
现在的嵌入式系统教学在很大程度上不是由应用来推动的,而是针对实验箱厂家提供的内容来规划授课内容。很多内容是接口技术、汇编编程、C语言编程、操作系统移植,甚至只要ARM+Linux就是嵌入式系统。Linux的优点是开放源代码,但存在的问题是没有固定的团队支持。一旦碰到难点只能网上求援。很多小公司吃了苦头,不敢再用Linux做产品,因为他们无法把握产品的开发周期,人员耗费的成本巨大。此外,虽然Linux可以免费得到,但是其上流行的图形用户界面GUI却是收费的,按照GPL协议还需公开自己的源码。 从Intel大学计划送给高校教学用的PDA参考设计SitSang开发板的培训教师角度看,硬件部分的培训教师是开发板的设计者,学电子技术的讲授硬件原理,软件只是用C语言编写测试程序来测试开发板各个部件是否工作正常。软件部分的培训教师是学计算机的,讲如何移植Linux、设计驱动程序和应用程序,可见大公司软硬件人才的分工是很明确的。反观我们的嵌入式Linux,还陷在移植和底层接口模块的使用上,这些适合偏硬件的人员来做,离开发出产品还相去甚远。
半导体厂商偏爱Linux是因为它免费,只要移植到评估板上就能证明它的处理器是正常工作的,而真正想要开发出产品还得搭建应用平台,目前大厂商都有手机平台或汽车电子平台。软件类嵌入式系统教学与硬件类嵌入式系统教学有所不同,应侧重平台搭建、GUI应用开发,让学生能把自己的创意实现出来。至于编程,应以C语言为主、汇编语言为辅,需优化时采用模块化混合编程。嵌入式系统课程实践性非常强,若成为了理论课就失去了它的意义。
各个专业的嵌入式系统教学应有所侧重,不能千篇一律,只有把国内的嵌入式应用推动起来,培养的学生才能满足工作需要。这样看来,本科教学电子技术专业应侧重讲接口技术和驱动程序设计,非电类的对象应用专业应侧重单片机接口和C语言编程技术,计算机专业应侧重GUI应用和驱动程序。
现在安卓(Android)的开发板更加方便了应用的编程,学生可在手机上开发,完成后再移植到实验室的开发板上。操作系统移植并非一般教学内容,应安排在本科毕业设计或研究生阶段,实际教学能做到“师傅领进门,修行在个人”即可,主要是培养学生对嵌入式系统的兴趣,而不是由于涉及面太广、难度太大,使学生们望而生畏。各高校嵌入式系统课程多为选修课,学时有限,规划主要教学内容和实验内容侧重点是教师的首要任务。
ARM公司推出专门针对微控制器市场Cortex-M内核后,微控制器的选型不再以8位、16位和32位来区分,而是以高、中、低档芯片来划分。因为这些微控制器都有统一的机“芯”,区别只是它们的外围部件和厂商的技术支持不同。这样,工具和软件都可以重复使用,不用购置各种开发工具。事实上,在芯片的整个成本中CPU只占很少的一部分,芯片的价格不是由CPU核来定的,再按位数来评价MCU已经没有意义,应按外围部件和Flash容量等来定。这