为什么要学习嵌入式系统课程?

嵌入式系统是专用计算机,用户通常不会将其视为计算机。例如手机,交通灯控制器,以及可编程恒温控制器。在之前的文章中,我辨析了为什么所有计算机科学家都应该学习编译器课程操作系统课程。自从这些领域成为计算机科学的核心,无需多说,所有的毕业生都必须掌握。然而,嵌入式系统却没有得到主流计算机科学家的关注。那么,为什么你应该学习嵌入式课程?

大部分计算机都是嵌入式设备

所有生产的处理器中大约99%都用于嵌入式系统。仅2007年,基于ARM处理器架构的芯片生产了29亿片,所有这些芯片基本上都用于嵌入式应用。这些处理器应用在你的汽车,电气用具和玩具中;安装在我们的建筑中;对提供交通,水和电力等基础设施的高效运作至关重要。世界越来越依靠嵌入式系统,作为技术专家,了解它们的工作原理是非常有用。桌面计算机市场几乎饱和,而嵌入式市场正在增长,只要人们还认为随时随地的计算是有必要的,嵌入式市场将会保持增长。

嵌入式编程是有趣

Make杂志出色的完成了推广嵌入式系统项目的工作。乐高Mindstorm,Arduinos和类似产品都不再那么昂贵,能够用于学习嵌入式编程。控制物理硬件非常有趣,打开Hack A Day的网站,搜索“paintball sentry”,我保证不会有哪个技术宅会绷着脸告诉我这东西一点也不酷。今年春天,我听到Sebastian Thruns高兴的谈论他的团队努力赢得无人驾驶机器人挑战赛(网上有一些他的演示材料)。

嵌入式编程是与众不同的

硬件设备的监控和其他编程差别很大。例如,没有干净离散的输入,你发现自己需要处理有噪声加速计数据流。当控制电机时,你的代码突然必须要考虑实际的每一块金属片,如果不小心,你就会毁坏硬件或者烧掉驱动芯片。类似地,机器人的工作环境十分嘈杂,不利于传感器数据的采集,它们从不在一条直线上前进,也不会返回它们的初始位置。解决所有问题需要健壮的算法,这些算法和我们在计算机科学中常用解决的算法问题大不相同。

嵌入式能让你解决硬件问题

嵌入式编程中的困难问题会促进你在受限平台上编写高可靠系统。软件是并发的(通常同时使用中断和线程),必须兼顾硬件设备和外部的时序约束,小心处理各种错误情况。总的来说,你会突然遇到很多难以解决的编程问题。

缺少调试设备。最糟糕的情况下,甚至是最基本的printf()函数都不可用,你只能使用逻辑分析仪或者一些LED灯进行调试。每年和一群计算机科学专业的学生坐在放满逻辑分析仪的实验室中给我带来了很多快乐;起初,他们中大部分人都非常困惑,但是到期末是他们都喜欢(或者至少说习惯)去观察实际波形或测量一微秒内持续脉冲。

现在的高级编程环境很强大,但嵌入式程序员一直处理的裸机细节却被过度封装。那些和我一样在1980年代学习编程的人对于使用1KB RAM能做什么有着比较准确的认识。然而,使用Java开始编程的程序员却没有。我曾经帮助过在传感器网络领域做研究项目的学生,他们的程序不能运行,因为程序分配的空间是目标运行平台可用RAM空间的1000倍。多年以前,我花费相当长的时间调试调用printf()函数变体造成的问题,该函数在一个拥有4KB栈空间的线程中分配大约8KB的栈空间。

所有这些困难是可以通过精心设计,认真实施,以及其他技术来克服的。通过学习这些,学生获得宝贵的技能和思考过程,可以应用到日常编程中去。

社会需要嵌入式人才

虽然我怕没有数据来支撑这个观点,但有趣的是社会急需那种在嵌入式系统表现很好的学生。大多计算机科学专业的毕业生只懂软件,大多电子工程和机械工程的学生没有参考资料就不会编程。不管学校给了他们什么学位,同时掌握这些技能的学生才具有真正的价值。

1 收藏 1 评论

关于作者:汤晓

(新浪微博:<a href="http://weibo.com/u/2151517721">@ashiontang</a>) 个人主页 · 我的文章 · 10

相关文章

可能感兴趣的话题



直接登录
最新评论
跳到底部
返回顶部