首页
社区
课程
招聘
[讨论]单片机 CAN 协议 分析
2024-6-21 16:51 1184

[讨论]单片机 CAN 协议 分析

2024-6-21 16:51
1184

大家好,我想分析一个单片机的CAN协议,BIN文件已经拿到了,大约640KB,CAN通信总共有几十个字节,目前想分析CAN协议的内容,然后开发自己的产品,适配老的系统。目前自己用IDA逆向分析了一下,找到了CAN接收的中断处理函数,但是继续分析主程序时感觉像无底洞了,有人搞过这个吗?想交流一下,Q513837087


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2024-6-22 10:14 被LGU_LINK编辑 ,原因:
收藏
免费 0
打赏
分享
最新回复 (14)
雪    币: 2292
活跃值: (5891)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 2024-6-22 02:46
2
0

给你一份CAN IP的用户使用手册, 里面涉及CAN 协议和工作内容

上传的附件:
雪    币: 2292
活跃值: (5891)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 2024-6-22 02:49
3
0

另外再给你附加一份开源的CAN IP

上传的附件:
雪    币: 2292
活跃值: (5891)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 2024-6-22 02:57
4
0
这两份文件有助于你你理解CAN总线协议的工作过程,不开源商用级别的CAN IP在闲鱼有卖你可以买来分析看看。但CAN总线协议大差不差的都是类似的,开源的其实已经可以了。
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
LGU_LINK 2024-6-22 09:54
5
0
感谢分享的资料,我看了下这些资料主要是涉及CAN物理层的协议,而我想分析的是CAN应用层的协议,8个字节代表什么含义。
雪    币: 2292
活跃值: (5891)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 6天前
6
0
LGU_LINK 感谢分享的资料,我看了下这些资料主要是涉及CAN物理层的协议,而我想分析的是CAN应用层的协议,8个字节代表什么含义。
用户使用手册里面有说到呀,在 3.5 Software Interface 这章 的Register Map 就是CAN每个字节代表啥, 比如 0x00 - 0x47 地址就是CAN协议的ID部分,0x91地址的 LOM(Listen Only Mode) 这个字节就确定了 设备是否 只监听不发送
雪    币: 2292
活跃值: (5891)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 6天前
7
0
微启宇 用户使用手册里面有说到呀,在 3.5 Software Interface 这章 的Register Map 就是CAN每个字节代表啥, 比如 0x00 - 0x47 地址就是CAN协议的ID部分,0 ...
协议的每个字节代表啥手册里都说清楚了,不懂英文可以用翻译软件。
雪    币: 2292
活跃值: (5891)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 6天前
8
0
CAN总线发送数据会缓存在CAN子模块的Register里然后CAN子模块里的负责和其他模块打交道的HCI控制模块根据其他模块给到的地址去取数据。
雪    币: 2292
活跃值: (5891)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 6天前
9
0
微启宇 CAN总线发送数据会缓存在CAN子模块的Register里然后CAN子模块里的负责和其他模块打交道的HCI控制模块根据其他模块给到的地址去取数据。
给你的开源CAN子模块的路径 can/trunk/bench/verilog/can_testbench.v里面的 write_register 任务函数就是测试读写CAN子模块Register, 这个模块总线使用的是WISHBONE,只要有其他模块也挂载在WISHBONE总线上就可以往CAN子模块写入和读出数据。
雪    币: 2292
活跃值: (5891)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 6天前
10
0
LGU_LINK 感谢分享的资料,我看了下这些资料主要是涉及CAN物理层的协议,而我想分析的是CAN应用层的协议,8个字节代表什么含义。

再给你个CAN子模块的Linux驱动模块

上传的附件:
雪    币: 2292
活跃值: (5891)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 6天前
11
0
微启宇 再给你个CAN子模块的Linux驱动模块
用户空间应用可以去看Linux-CAN的can-utils测试套件
雪    币: 2292
活跃值: (5891)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 6天前
12
0
微启宇 用户空间应用可以去看Linux-CAN的can-utils测试套件
你可以用can-utils测试套件里的dump和cansniffer工具去dump数据分析,然后在用canplayer和cansend去尝试发送数据测试设备找到数据含义。
雪    币: 2292
活跃值: (5891)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 6天前
13
0
CAN的接口上可以跑 TCP/IP协议 http 之类的协议,你可以用抓包软件抓接口的包来分析
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
LGU_LINK 4天前
14
0
用CANOE抓过数据,数据一直在变化,不太好分析,所以才想到逆向分析的。
雪    币: 2292
活跃值: (5891)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 3天前
15
0

游客
登录 | 注册 方可回帖
返回