做ARM开发做了多的人都会发现,ARM开发使用不同厂家的芯片,就会有不同的外设驱动库。如果产品换芯片的话,就会需要重新熟悉新的芯片的驱动库的使用。是否有人对通用的外设驱动库感兴趣?
外设包括最常用的一些,比如GPIO、SPI、IIC、USB(device, host, otg)、定时器等等,当然,有一些驱动还需要配合相应的通用协议栈,比如,USB device的驱动,就需要对应的通用USB device的协议栈
这种方式,好处就是换芯片基本没什么代价。对于通用应用而言,也不需要去熟悉各个厂家的MCU。
而且,接口可以做了非常简单统一,比如,初始化一个SPI接口,不用去设置相应的GPIO模式,不同的芯片,都是用一样的方式操控硬件。
当然,缺点也是有,通用的外设驱动库,可能占用的资源较多。
我正在考虑独立出一个通用外设驱动库开源项目,大家讨论定义接口的规范,然后大家一起维护这套驱动库。基于这套库的应用,基本上都可以是硬件无关,以后用其他芯片,只要在这套外设库中有驱动,基本可以直接切换使用,而不需要修改高层的代码,只需要修改和硬件相关的一些配置。 |