[资源分享] CAN UDS升级实现
28379|79
|
评论
请教 DLL库是怎么调用的,
请问 一下CANTp.c是干什么的,可以简单的说说吗,里面的东西和硬件没有关系吧
评分 |
|
|
评论
@zwzzq :你可以把UDS理解成一个简单的互联网协议,15765就是TCP/IP,14229就是基于TCP/IP之上的协议,说白了就是对一串数据进行解析,然后标准里面定义了一些状态等等,比如会话状态,比如通信状态等等。
@JasonLee27 :typedef struct
{
uint8_t curSessionState:3;
uint8_t SecurityAccessState:2;
UdsCCCtrlType CCCtrlType;
UdsCCComType CCComType;
UdsDTCSettingType DTCSettingType;
uint8_t EC
@JasonLee27 :typedef struct
{
uint8_t curSessionState:3;
uint8_t SecurityAccessState:2;
UdsCCCtrlType CCCtrlType;
UdsCCComType CCComType;
UdsDTCSettingType DTCSettingType;
uint8_t EC
周立功的ZCANPRO
|
|
评论
flash.map里面的三个函数的地址偏移分别为0x0000077C,0x000007aa,0x000007c8,hex文件中开始的地址为0x0000077D,0x000007aB,0x000007c9,为什么不是一致的呢?
@TomyStark :都是一样的,我也可以用宏来实现,只是我用了结构体
@JasonLee27 :原来如此,我之前看了NXP的UDS实现,他们将Flash Driver工程中的擦、写函数中调用的子函数都改成了宏函数的形式(这就意味着不会有函数的跳转),我当时的猜测是在nxp gcc编译器环境下,编译后函数之间跳转是按照绝对地址来的,所以作为Flash Driver导出hex文件给Bootloader使用时需要更改为单级函数。
@TomyStark :代码还会逐渐完善,你的建议会考虑一下
@TomyStark :不用的,arm的相对跳转地址范围很宽,同一个工程里面的函数之间相互调用都不会涉及到绝对地址
@JasonLee27 :另外您提供的这份UDS实现相比之前原厂提供的那一份完善了很多,请问贵公司有在gitee或者Github开源维护的计划否?
@JasonLee27 :请问要实现编译链接后函数的调用是采用相对跳转的方式,需要在Keil中做其它的设置吗,我目前只是看到了启动文件(.s文件)和分散加载文件(.sct文件)有做修改
flash驱动工程内部的调用会使用相对跳转的方式,只要相互之间的偏移地址不变,放哪里都能跳转
|
|
评论
请问用RAM 来存储标志位。从app跳转到boot,ram不会重新初始化丢失吗?
|
|
|
|
|
|
|
|
|
|
|