缘起】
由于KL02芯片的外设比较少,我才考虑以固件库的形式把所有常用的模块驱动都整合起来,做成一个相对完整的芯片支持包,这就是自己编写LiteFwLib_frdmkl02z固件库的初衷。相对于之前玩过的K60/K64,这个实现固件库要简单很多,毕竟不需要考虑以太网、USB之类的大模块。代码规模很小,所以在我失去激情和耐心之前,在冲动的支持下,就已经完成了几乎全部的代码。
【使用固件库能干啥】
谈及固件库的设计和实用价值,其实有很多的方面,为了臭美显摆,我在这里为一一道来。
1. 提供单片机应用基础
这个是基本的功能啦。其实不管是各家半导体设计公司搞出来的芯片多么不同,在常用模块的应用上都应该是差不多的,否则特别奇葩的模块大家也不常用,意义不大。但是底层硬件毕竟有差别,而且要把硬件用起来就需要阅读大本的使用手册,搞清楚特别的配置值和操作时序。这些东西对于应用工程师实在是太麻烦了,在应用中只要关心能用起来芯片的功能,而不想过多地考虑实现细节的。此时,固件库就可以帮忙抽象对硬件的操作,用户通过调用固件库间接操作硬件,就方便多了。单片机的固件库程序多使用C语言编写,通过函数和参数调用,要比直接配置芯片寄存器的方式友好很多。
2. 研究嵌入式软件架构
固件库程序通常都是按照特定的方式将源代码组织起来的,这些组织方式实际上变现出来的是软件架构的实现。组织固件库源代码涉及到平台的可移植性,代码复用、功能隔离、统一接口风格等内容,为了最优化这些方面,通常都经过非常精密的设计。了解这些内容将会对程序架构上有更深刻的认识。
3. 标准化程序设计
不同的人基于共同的固件库设计应用程序,由于绝大部分是相同的,这样便于沟通,容易说明问题。
4. 为扩展上层软件奠定基础
固件库本身是一个比较全面的底层支持包,可以为开发更高层次的软件奠定完善的基础,这样,在软件层次上会有清晰的划分,上层软件开发人员也可以更专注地开发自己模块的部分,有助于提高开发效率。
5. 学习项目管理
设计固件库程序也是一个完成的软件项目,单片机爱好者在玩板子的早期会写各种各样的小程序以实现基本功能,但专业的代码需要良好的组织和科学的管理。通过编写固件库软件,走完一个完整的项目开发流程,可以为进阶开发提供不少经验。
|