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

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

2024-6-21 16:51
5145

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


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2024-6-22 10:14 被LGU_LINK编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 2819
活跃值: (6576)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2

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

上传的附件:
2024-6-22 02:46
0
雪    币: 2819
活跃值: (6576)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

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

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

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

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

2024-6-25 22:00
0
雪    币: 2
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
既然找到中断了,顺着内存找就快了
2024-8-9 00:37
0
雪    币: 226
活跃值: (1532)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
我猜想他是想知道每帧的数据解析,类似有DBC文件那样。
2024-8-9 10:32
0
游客
登录 | 注册 方可回帖
返回
//