摘要
本文介绍canutils-4.0.6在Android平台的编译生成可执行文件,这个工具可以生成5个可执行文件(cansend candump canconfig 等),针对CAN总线的测试,主要是cansend /candump这两个足够了。
正文
1. 工具的介绍
CAN,Controller Area Network,控制器局域网,一种高可靠性的现场总线。广泛用于汽车电子、工业控制通信。
canutils 工具包内含 5 个独立的程序:canconfig、candump、canecho、cansend、cansequence。这几个程序的功能简述如下:
- canconfig:用于配置 CAN 总线接口的参数,主要是波特率和模式。
- candump:从 CAN 总线接口接收数据并以十六进制形式打印到标准输出,也可以输出到指定文件。
- canecho:把从 CAN 总线接口接收到的所有数据重新发送到CAN 总线接口。
- cansend:往指定的 CAN 总线接口发送指定的数据。
- cansequence:往指定的 CAN 总线接口自动重复递增数字,也可以指定接收模式并校验检查接收的递增数字。
2. 源码的下载
https://public.pengutronix.de/software/socket-can/canutils/v4.0/
根据需求现在自己的版本。
3.编译
网上介绍的编译大多数都是针对linux环境的,尝试过从linux环境中导出对应的可执行文件,push到Android设备中,报 inaccessible or not found 的错误,无法使用,只能下载源码编译。
编译canutils依赖libsocketcan,我再编译到的时候没有遇到,如果遇到了编译依赖问题请注意!!!
3.1 解压下载的压缩包
放到可以编译到位置,我这里放到了LA.UM.9.14.1.R1\vendor\xxxxxxx\common 下面,只要mm能编译到地方就可以,再每个需要编译的文件夹中建立对应的Android.mk
3.2 Android.mk 示例如下,以cansend为例,其他自行参照修改
3.3 编译中出现的错误
主要有两个错误,一个是头文件的#include <can_config.h> 直接注释掉,另一个是printf(“cansend %s\n”, VERSION);找不到VERSION定义的,注释掉或修改下不报错即可。