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