从A33移植ICM20608D谈Android sensors移植
在A33上移植ICM20608D,历时3.5天。回顾该Sneosr移植、调试历程,没有产生过多障碍及意外。可以说,一切按设想中的样子演进。16日下午完成了linux driver及android hal的移植,确认sensor工作正常,interrupt可产生,driver可作出响应。17日及18日,熟悉代码及调试。19日供应商现场支持,收官。 Android sensors的移植方法,可以概括为以下步骤: 确认硬件线路是否正确。 移植sensor driver。 脱离HAL层对driver及sensor进行调试,确认sensor工作是否正常,driver是否移植正确。 移植HAL层,结合HAL及driver调试。 必要时检查SensorService。 若上述5步做到位但未得到预期结果,迅速联系供应商做现场支持。 第1点不必多说,读懂原理图是作为嵌入式软件工程师的基本素质。 第2点是移植driver,一般来说,供应商会给到某平台的适用source code,不一定是全志平台,但必须是可用的,完整的source code。移植driver要做的工作一般是: linux core打开driver所需要的外部模块及代码。 根据平台特性加入driver private data。 根据平台特性加入bus识别sensor的代码。 根据平台特性完成中断/唤醒等gpio申请注册使用。