针对Android系统下的控制器局域网(CAN)总线缺少应用层驱动的现状,提出了一种将Linux系统中的CAN总线应用层驱动移植到Android系统中的方法。选择SAE J1939协议作为Android系统下CAN总线应用层协议并移植由Kurt Van Dijck和Pieter Beyen...针对Android系统下的控制器局域网(CAN)总线缺少应用层驱动的现状,提出了一种将Linux系统中的CAN总线应用层驱动移植到Android系统中的方法。选择SAE J1939协议作为Android系统下CAN总线应用层协议并移植由Kurt Van Dijck和Pieter Beyens维护的linux-can-j1939项目。首先分析项目结构,将对应文件合并到Android内核代码中;然后修改头文件、协议实现代码并增加内核缺失的结构体、函数等;最后修改Makefile和Kbuild文件并编译生成内核。实验结果表明:编译后的Android内核实现了SAE J1939协议所规定的地址声明、数据拆包重组、网络管理等功能。应用层驱动移植后,通过调用Android应用层接口就可开发丰富的基于CAN总线的Android应用程序。展开更多