每当开始一个新的嵌入式项目时,空气中都会充满期待和兴奋。对于工程师来说,世界上几乎没有什么事情比从无到有创造一项工程更令人兴奋了。
不幸的是,在项目启动后不久,工程师的热情可能很快就会消散,因为他们不得不编写微控制器驱动程序、集成实时操作系统(RTOS)和第三方插件,可能还需要造一些“螺丝”“螺母”... 这些琐碎繁杂的任务消耗时间和精力,常常会抑制工程师对产品的创新。
为了将嵌入式工程师从琐碎繁杂的无趣工作中解放出来,嵌入式系统开发平台开始出现。它是一种开发平台(Platform-Based Development),一般会提供很多小工具供嵌入式工程师使用,初衷是提高开发工具的复用率,提高开发效率。
嵌入式系统开发平台包含开发人员在短时间内快速启动和运行微控制器的所有构建模块,这样可以节约开发人员相当多的精力。在此之前,为了让微控制器软件正常运行,开发人员常常需要花费很多时间编写驱动程序。
该平台的宗旨是提供驱动程序、框架、库、调度程序,可能有时还会提供应用程序代码,这样一来,开发人员就可以把精力专注于开发产品特性上,而不是简单重复的软件代码编写上了。
嵌入式开发的难度,以及所花费的时间常常来自于设备驱动的难以理解、维护困难以及移植困难,这些问题归根结底都来自于对硬件的了解不够透彻。因此,嵌入式系统开发平台一般还会提供可重用的硬件抽象层(HAL),以方便跨项目跨平台的维护和使用。
也就是说,平台为开发人员提供了便利,通过利用现有的HAL和API,可以将开发周期缩短几个月。开发人员不再需要了解所有硬件细节便能轻松开发,HAL和API抽象较低级别的硬件,使开发类似于在PC上编写软件,只不过开发人员仍然需要记住自己是在资源受限(嵌入式设备一般资源比较匮乏)的环境中工作。
试想一下,简单调用 UART HAL,立刻就能获得串行数据,而不用再针对各种硬件,编写不同的驱动程序,这是一件多么惬意的事。稍稍总结一下,应该能够发现基于开发平台开展嵌入式项目,具有以下优点:
- 平台保证了工具复用率,避免开发人员花费过多精力重复“造轮子”
- 开发周期缩短,产品上市更快
- 降低总体项目成本
- 增强了固件的健壮性
当然,开发人员也应该关注一些潜在的问题:
- 平台的授权问题
- 如果未来产品方向发生变化,更换平台的成本
- 产品开发过多依赖第三方平台
- 由于项目进展顺利,空闲时间过多
小结
随着微控制器的性能成倍增加,嵌入式项目的开发逐年复杂。开发人员的精力总是有限的,基本上不太可能了解所有的硬件细节,但是如果只用自己熟悉的硬件设备,自己熟悉的技术开发项目,又可能会导致最终做出的产品落后。
因此,嵌入式系统开发平台其实是一种取舍,以舍弃完全了解底层的代价,换来开发上的便利,以及产品系统的健壮性和完整性。但是考虑到时间、预算时,应该会发现,基本上嵌入式项目的开发也是要走向平台式的开发的。