完整的S32K144的学习汇总如下:
https://github.com/GreyZhang/g_s32k144
近段时间计划学习S32K144,CAN相关的东西基本上都是驱动类的,但是如果要进入到工程阶段就得需要搭载部分协议栈。
一般来说,各种协议栈都是商用的,价格也都不便宜。不过,现在网络上也有一些可以用于学习的一些资料或者软件库文件。多少能够让我们学到一些基础的东西,今天我的学习就从UDS开始,这个是一个通用的诊断协议同时也涉及到15765这样的传输协议。网络上的参考代码很多,今天先随便找一份然后去做一下简单的尝试。
今天的尝试,可能跟S32K144没有必然的关系,但是探索的结果接下来将会在S32K144上做尝试。因此,在学习笔记中,我暂时还是要把这个归类到这里。后面,我还会学习更多的嵌入式芯片平台,在那些平台上我也会尝试这些协议的实现。那时候,同样的工作我就不再重新来一轮总结了。但是,同样的工作我还是会做,我觉得软件设计也像武术。很多时候,招式的精纯需要不断练习。
我找到的开源的UDS代码链接:https://github.com/openxc/uds-c
具体的代码分析以及使用,我觉得我没必要整理了,这个肯定是看人家原始的更加原汁原味一些。这里,我先做一个简单的代码的编译以及运行测试。测试在我的虚拟机上进行,因为我在mingw上尝试安装几个小工具不是很顺利。但是,同样的工具在Linux㐊现成的。
这个是我即将编译的工程,在此之前,我已经完成了所有缺失信息的梳理以及添加。这些都是简单的编译技术,我也暂且略过。接下来,直接进行编译测试。
首先是测试了一下全部代码的编译,使用了gcc。由于这是一个库,或者说是基础模块,没有一个链接生成可执行文件的过程。不过,至少可以看得到代码的编译没有什么问题。
上面是单元测试的过程,关于每个测试用例我们也暂且不去看了。我知道,UDS的各个服务或者功能,需要很多的功夫来做具体的认识学习和分析。不过,至少可以看出来,按照提供的测试方式,单元测试是没有问题的。
这是一个代码覆盖率的测试,似乎这个测试也不算太充分。关于这个单元测试以及覆盖率的测试,后面也可以进一步深入学习一下。这是我现在技术的一个短板。
打开一个文件的覆盖率测试报告,能够看得到类似的提示。应该是有一部分处于安全考虑等相关的设计,永远不会被触发。报告中,把代码进行了着色处理,还是比较直观的。
以上,算是这一次的学习初步的小结。通过这个,我最起码知道了手头的代码是完整的,接下来,配合代码以及文档的学习,就可以进一步深入掌握这几个协议栈的相关知识。我也会看看,这个协议栈距离产品化是否还有一些空间,或许,我还能够贡献一部分我自己的设计出来。
李小龙说“我不怕会一万种招式的人,我只怕把一种招式练了一万遍的对手。”其实,这个练习了一万次的招数应该已经算是绝招了。其实,我们的技术中也有很多绝招。我现在的学习以及重复的目的也是希望我能够练出属于自己的绝招。祝愿看到我学习笔记的你,最终拥有属于自己的绝招!
完整的S32K144的学习汇总如下: