APP下载

浅谈嵌入式人才培养

2015-03-25北京理工大学马忠梅

单片机与嵌入式系统应用 2015年7期
关键词:开发板微控制器C语言

北京理工大学 马忠梅

浅谈嵌入式人才培养

北京理工大学 马忠梅

从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容量等来定。这显现出通用的内核、广泛的支持、一致的开发环境是未来的发展趋势,也是嵌入式系统教学的新曙光。

2010年笔者撰写了《ARM Cortex微控制器教程》,包括4家公司的MCU,主要涉及GPIO、中断和定时器的片上资源基本编程,力图比较各家的编程方式。主要目的有两个:一个是推动高端MCU不要再面向寄存器编程,而要使用库函数;另一个是体现Cortex MCU有很好的生态环境,获得多家厂商支持。还有一点是,尽量给出寄存器名、指令等的英文原义,而这是国内翻译资料没有注意到的。通过LM3S竞赛看到,优秀的大三学生一个月就能上手Cortex微控制器。这种32位MCU完全可用C语言编程,不涉及汇编语言。片上外设的寄存器配置更加复杂,支持的工作方式也更多。厂家纷纷都提供了库函数,只要用户依据参数配置外设,使用库函数就能方便地操作外设,不必再记住寄存器名、寄存器位定义去使用汇编语言了,而这也是学习单片机难度最大的地方。现在编程只需关注外设的工作方式,了解有哪些操作即可,大大降低了学习门槛。只要学会C语言,实验指导书中许多样例程序就可直接使用。

总之,嵌入式系统教学所用的处理器应选用主流芯片,如有厂家大学计划支持更好。如果教学偏重硬件设计,要教会学生制板、做硬件应用系统,最好是选择8/16位芯片、Cortex-M芯片。200MHz以上的Cortex-A芯片对布线的要求较高,而且表面贴装引脚多的芯片也需要专门的焊接设备。如果没有编程基础,则可以从8051单片机入手,毕竟用汇编语言的寄存器和存储器的传送指令,感觉更直观些。况且,8051单片机教材是经过多年摸索,消化了国外手册的内容编写出来的。不同基础、不同专业背景的人应根据自己的情况酌情选择,倾向哪家的处理器也是需要考虑的内容。

兴趣是最好的老师,一通百通,大可先专注一家的产品,诸如价廉物美的口袋实验室开发板和厂家评估板等。

马忠梅,北京理工大学副教授,多年来一直从事嵌入式教学和研究工作,编写的教材有:《单片机的C语言应用程序设计》、《ARM嵌入式处理器结构与应用基础》、《ARM&Linux嵌入式系统教程》、《ARM Cortex微控制器教程》等。

��薛士然

2015-06-02)

猜你喜欢

开发板微控制器C语言
基于Visual Studio Code的C语言程序设计实践教学探索
TASKING针对英飞凌第三代AURIX微控制器推出多核开发环境
51单片机C语言入门方法
基于C语言的计算机软件编程
物联网技术在微控制器实验教学中的应用
用于高品质电动汽车的分布式并行计算
浅析单片机开发板的设计与制作
高职高专院校C语言程序设计教学改革探索
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
Arduino和Atmel发布Arduino Zero开发板