
汽车电子
grey_csdn
这个作者很懒,什么都没留下…
-
原创 460_J1939请求报文的应答
全部学习汇总: https://github.com/GreyZhang/J1939_basic 前面大概看了J1939的请求报文,其实就是请求一个PGN的信息。今天,把手里的例程基本梳理了一下。感觉大概调试了一下,基本上看明白了大概的用法。只是,例程似乎只是用于基础功能的演示,并没有严格遵循相应PGN的定义。 这里,先大概了解一下发送机转速PGN。 其实,这个是已经在文档中定义过了的PGN。如果,实际的应用肯定得按照这个来。...2020-11-22 21:05:07234
1
-
原创 459_J1939请求报文格式分析与代码印证
全部学习汇总: https://github.com/GreyZhang/J1939_basic 这次来小结一下请求报文的发送,因为响应部分暂时有一点点模糊没看明白,还需要补充一点文档信息。 关于请求报文,我参考了恒润的一份PPT中的一页,这个在很多文库能够看得到。具体部分据图如下: 从这份PPT中的信息看,其实请求报文还是很简单的一个东西。至少,请求的动作还是很简单的。这是一个固定的报文格式,填充一个PGN的信息即可。而请求...2020-11-21 11:09:50146
0
-
原创 457_J1939中普通报文的队列接收实现机制
全部学习汇总: https://github.com/GreyZhang/J1939_basic 在J1939的协议栈中存在一个队列的收发机制,其中接收队列的实现之前在做ISR的部分代码分析的时候已经看过接口上的交互。对于这个队列实现,其实应该有一个具体的实现机制。 关于队列的机制,在学习数据结构的时候接触过队列的实现,这个基本上是基于链表来实现的。但是,链表的实现是需要基于内存的动态分配来实现的。在嵌入式系统中,尤其是涉及到高实时性和可靠性相关的系...2020-11-19 21:27:4564
0
-
原创 456_J1939中普通报文的队列接收
全部学习汇总: https://github.com/GreyZhang/J1939_basic 之前研究Arduino的时候,看过了Arduino开源社区中别人对ECAN使用的时候使用了队列的收发。全都是软件实现,没有使用硬件的模式。手里的这套J1939的代码也有这么一个类似的功能。 接下来,看看手里这套代码的处理。 关键代码都在注释上面,其实,下面的部分也已经不在同一个代码块。正好这个函数还剩下这么一点没做分析,一起给标注...2020-11-18 08:08:1895
0
-
原创 455_J1939信息接收接口分析
全部学习汇总: https://github.com/GreyZhang/J1939_basic 之前,大概分析了J1939_ISR,要想明确弄清楚J1939的收发的机理需要继续分析两个CAN的收发接口。这里,先尝试分析一下CAN消息的接收功能。 首先需要注意的是,这个函数用了static,因此使用的范围会有一些限制。通常是不会出一个文件,尤其是其在C文件中定义的。后面的代码,出现了好几重的预处理,目前我的emacs配置下需要层层查看。万不得已,...2020-11-17 09:45:4674
0
-
原创 454_J1939中断模式下的中断服务子程序分析
全部学习汇总: https://github.com/GreyZhang/J1939_basic 经过之前的几次代码分析,基本上知道了广播多帧报文的实现是一个什么过程了。也基本上知道了命令地址实现的基本流程和方法了。 我现在接触的3份J1939的代码例程中,有一份是使用POLL模式,而最近的两份代码则是使用的中断模式。虽然,大概的功能已经分析过了,但是中断ISR还是没有看过究竟是如何用的。而这部分应该是这份代码在不同平台上移植的关键。...2020-11-16 10:26:5043
1
-
原创 453_J1939命令地址PGN 65240(FED8)的使用
全部学习笔记汇总: https://github.com/GreyZhang/J1939_basic 前面了解了一下广播多帧报文的实现分析,当时发送了一个0xFED8(65240)PGN的信息。但是,这种数据的组包顺序以及规则没有弄清楚。 我没有系统阅读过全部的J1939的资料,因此直接借助了网络资源。找到了一份文件,对此的解释如下: 这一组报文的发送必须是通过BAM来实现,因此这是之前我们看到的功能的实现原因。之前的报文发送...2020-11-15 13:55:51112
0
-
原创 452_J1939广播多帧报文的例程分析
全部学习汇总: https://github.com/GreyZhang/J1939_basic 借助一个简单的例子来看一下J1939广播多帧报文的发送实现。为什么不叫多帧报文而叫广播多帧报文呢?因为在J1939中存在两种多帧报文的发送模式,一个是广播另外一个是点对点的。而两个流程是不同的。 上面的这个流程图就是J1939的广播多帧报文的实现,这个是我从Vector的一份文件中截取出来的。从上面可以看得出,大概的流程是先发送一帧TP.CM_BAM...2020-11-14 16:20:22340
0
-
原创 451_J1939地址声明超时确认处理代码分析
全部学习汇总: https://github.com/GreyZhang/J1939_basic 前面做了一个地址声明初始化的功能分析,但是这个动作触发之后还应该有一个确认的过程。其中,声明不成功的处理还是容易的,因为会直接收到一条报文。如果是声明成功的话,需要等到一定的时间,在相应时间内没有冲突报文则可以取得相应的地址。 这是超时处理确认的处理,关键点还是在上面的这个状态的变化。需要确认这个状态是否被清零了,因为在初始化的时候这个状态是置位的。...2020-11-13 08:24:2241
0
-
原创 450_J1939地址声明函数的调用处理分析
全部学习汇总: https://github.com/GreyZhang/J1939_basic J1939地址声明的接口功能之前基本上分析过了,这一次看看在整个我看到的例程中这个接口究竟是如何使用的。毕竟,这个接口还是有两种不同的使用模式的。 这个接口在整个工程里面被调用的次数不是很多,我搜索了全部的工程如下: 最前面两个还有最后两个是没有必要关注的,这都是生成的文件或者辅助的工程文件。H文件中的就是一个声明,也不需要看。接...2020-11-12 08:19:0260
0
-
原创 448_J1939地址声明设计代码阅读分析
全部学习汇总: https://github.com/GreyZhang/J1939_basic 前面看了一个初始化的接口,发现其实跟协议栈相关的更多的还是最后的一个队地址声明接口的调用。 这个函数是一个静态函数。 通过这个简单的细节就可以知道,这个是一个协议栈内部的一个功能,也就是跟协议栈的协议实现有着很大的关联度。好在,看了一下这个函数的代码量之后让我舒了一口气。这个函数的实现代码量还是很小的。...2020-11-09 22:02:1944
0
-
原创 447_J1939初始化代码分析
全部学习汇总: https://github.com/GreyZhang/J1939_basic看了一下我手中的这一份J1939的代码其实代码量不大,看起来我可以直接做一个详细的代码分析。这个就是初始化的第一个接口,今天就完成这个接口的分析。 其实这个主要是一些状态和设备的信息初始化,在不同平台有一些工作可能可以通过其他的方式来实现。 当前我看的软件中,上面的设计可能有一些啰嗦。不过,上面这个考虑到了不同传入参数的处理。 这些其实还是CAN驱...2020-11-07 10:17:2677
0
-
原创 445_J1939地址声明报文格式
全部学习汇总: https://github.com/GreyZhang/J1939_basic 上次做了地址声明的部分分析,当时出现了一份报文交互记录。当时只注意了源地址和目标地址,没有注意到数据场。今天没事儿的时候突然间脑子里想起了这么一回事儿,当时的数据场到底是一个什么信息呢? 我找到了前面的报文记录: 首先,在Vector的一份文档中有如下的描述。 如果地址声明的时候出现了地址冲突,名字具有更高...2020-11-04 20:51:0292
0
-
原创 444_J1939源地址冲突时候的协议栈处理行为分析
全部的学习汇总: https://github.com/GreyZhang/J1939_basic 之前测试用的两个板子,测试的过程中为了区分增加了一个定义:板子定义为A(地址0x80),B的地址为0x81。 现在,我手里的B板子已经进行了一次地址声明且测试过了。现在,尝试做一下测试,修改A板的程序让它的地址也设置为0x81,这样等我的A板上电运行进行地址声明的时候应该会出现冲突。 简单的修改如下: 软件修...2020-11-03 21:25:3467
0
-
原创 442_J1939 PDU Format判断
全部学习汇总: https://github.com/GreyZhang/J1939_basic 如果看到细微之处,CAN通信似乎从来都不是那么简单。尤其是到了协议栈的环节,万千变化最后还得回归到枯燥的文档,的确是不容易啃透。我自己尝试了多次J1939的学习,但是大部分都是处于理论性的材料学习,而这种学习基本上也是看完后面的前面的就会忘记。 正好手头有两个PIC18Fxxxx的开发板,虽然MCU的型号不同但是至少是架构一致而且全都带有一个ECAN模块...2020-11-01 09:02:07175
0
-
原创 220_S32K144 EVB资料整理
完整的S32K144的学习汇总如下: https://github.com/GreyZhang/g_s32k144_driver 开启S32K144的探索旅程,首先熟悉一下手里的开发板,搜集一下资料。 这是官网找到的一部分介绍信息,看了一下还是中文的。我有点怀疑我的理解力或者是NXP的工作人员的严谨程度。其实在同一页网页上,这个S32K144的内核介绍了两...2020-02-09 22:00:20784
0
-
原创 219_S32K144 MCU信搜集
完整的S32K144的学习汇总如下: https://github.com/GreyZhang/g_s32k144_driver S32K系列是我很久之前就关注的NXP的MCU,车规级别且考虑了功能安全的设计。之前计划了很久去学习一下,但是真正上手去做的学习工作很少。这段时间正好跟我自己的工作轨道有一点重合,找出之前买的开发板来学习一下。 首先,搜集一下大概的...2020-02-09 19:52:351100
0
-
原创 146_Arduino使用MCP2515实现CAN收发
整个STMF407系列的学习汇总链接如下: https://github.com/GreyZhang/g_arduino 感觉Arduino做一个小工具实现起来特别容易,逐渐成了我的一个测试小助手。也很容易做成小的快速原型机,做一些功能测试。 工作中CAN使用的比较多,但是我的Arduino小板子上没有,找了一下找到一款...2019-09-29 19:50:252256
0
-
原创 031_AUTOSAR学习笔记_BSW
AUTOSAR的整个软件架构,从上往下看,最上面的是之前简单了解过的SW-C,再往下是RTE,RTE下面是BSW。当然,这个简单的描述是排除了复杂驱动的。 BSW可以进一步细分,分成服务、通信、操作系统以及MCAL。根据看完的资料,简单整理一下我觉得有点收获的信息如下:关于服务,主要是诊断协议以及NVRAM管理。 这里有一个小疑问,后续需要确认一下:NV...2018-12-11 23:09:081672
1
-
原创 037_AUTOSAR学习笔记_MCU驱动
主要功能:MCU初始化、断电功能、复位、MCAL其他模块的特殊需求。 几种模式: 外部时钟的PLL时钟模式、晶振的PLL时钟模式、晶振参考下的PLL关闭模式。内部RC电路主要是用来监控晶振以及锁相环质量的。DMA应该有多种优先级,这个优先级跟中断是否是一个概念? 从下文看,有一个嵌套的说法,看起来有可能跟中断时...2018-12-15 12:36:001126
1
-
原创 123_MPC5634M系统时钟配置学习
其实这部分功能我大致是会的,之前工作中在类似芯片上也实现过。今天想整理一下主要是因为我觉得我想整理一下学习的思路,可以作为其他人的一个参考。 我觉得学习与开发在实际的操作上应该是有较大区别的。开发的目的很纯粹,就是让功能可用。但是,学习的目的与之不同,应该是以点窥面,能够从系统观、大局观上掌握相应对象的全部功能并且探索使用场景。 如果是进行...2019-06-04 22:45:46505
0
-
原创 119_ucos ii中用户可用的优先级
代码测试中,发现有些task的优先级使用了之后调度会失败。看官方带的文档任务分配列表中应该只有最后一个task不可用,其他的没有特别的说明。今天直接根据实际移植的工程做一下测试。 OS的优先级最低级配置为254,看着说明不可以高于254。接下来,测试最后面几个优先级是否可以用。优先级254: 实际测试,任务无法启动。优先级253:...2019-06-02 20:50:33350
0
-
原创 042_AUTOSAR学习笔记_Mcu驱动模块的集成
简单看了一下用户手册,接下来直接尝试下这个模块的集成以及测试。 上面是支持的芯片的列表,看起来这个芯片并不支持5634。 Mcu_Init是一个需要调用的函数,但是从现在的生成文件来看这个代码没有,看起来这个应该是固定的程序代码,而AUTOSAR配置工具配置出来的应该只是配置数据。 这个后面的参数本来应该是一个M...2018-12-15 20:30:54549
0
-
原创 041_AUTOSAR学习笔记_时钟配置
这部分专门拿出来总结一下,时钟的配置一直是我想要了解的一块儿。能够跳过去的内容直接跳过去,不做笔记,针对几个重要点仔细理解一下。 这里是系统时钟的频率,150主要是因为5644的时钟最高 150。之前,针对我自己的开发板改成了80M。不过,为了准确了解整个系统,再次调整回150。系统晶振改成12M。 现在的系统时钟参数已经是150...2018-12-15 16:51:356679
0
-
原创 040_AUTOSAR学习笔记_MCU驱动的模块配置
看起来,这个功能应该直接禁用,而我手头的demo也是禁用的。 或许,这个不是MCU可以提供的,而是MCU驱动可以提供的。 RAM的分块主要是用于什么?或许是分为标定、程序等各种不同用途? 看起来,这个也是一个未实现的功能。 这个应该是外面晶振的参数了,我的开发板确认下是8M,已...2018-12-15 14:26:03812
0
-
原创 039_AUTOSAR学习笔记_EB的编译环境修改
使用EB的Demo,自己加了一点代码发现不能够自动识别。看起来,还是不能够自适应、自识别的编译环境。找了一下各个命令中调用的程序以及使用的文件,最终找到了如何扩充增加自己的软件文件。 文件是左边标注的文件,修改如右边的管理配置。再次编译,我自己增加的文件已经被编译进去了。 在EB的配置工具中,我做了简单的修改。 ...2018-12-15 12:55:561483
1
-
原创 038_AUTOSAR学习笔记_McuGeneralConfiguration
首先需要知道的是McuGeneralConfiguration在AUTOSAR的概念中是一个容器,关于容器目前我自己的理解很可能是自己定义的一种数据结构。在EB的配置工具中,具体信息如下: 图中,几个可以选择可以配置的都是这个容器中包含的信息。接下来,针对每一个做一个理解。McuDevErrorDetec 结合上面的属性表,这个...2018-12-15 12:15:16446
0
-
原创 028_AUTOSAR RTE学习笔记-1
对AUTOSAR的了解确实不多,一直觉得AUTOSAR不应该是买买买,更不该是各种工具来一统天下。我觉得任何软件架构都应该升华为一种哲学,但是在掌握的过程中我们可能得从支离破碎的零星判断中逐渐还原哲学的内核本质。 今天尝试理解一份我自己从网上找的几页PPT资料,整理出这份学习笔记。第1点,截图中已经做了很多解释,不过这种解释我一般只会保留性的吸收。...2018-12-09 22:59:424231
2
-
原创 036_AUTOSAR学习笔记_MCAL基础架构
MCAL是为控制抽象层的缩写。进一步,MCAL可以分成4个驱动组:微控制器驱动组、存储器驱动组、通信驱动组、输入输出驱动组。 之前这部分我也有一定的了解,但是都已经忘得差不多了,关键是没有理解透。其实,软件应该可以通过树状结构来一个层级的划分,后续我自己设计软件的时候确实也可以按照这个做一下分组。关于控制区驱动组 MCU驱动 锁相环 RAM初始...2018-12-14 22:26:184808
0
-
原创 050_AUTOSAR学习笔记_Fls集成
这部分是自动被调用还是需要自己写代码? 看起来,需要先初始化MCU模块。这样,看起来是需要时钟等功能的初始化。尝试在我的代码中进行了初始化。 有一个主程序。 还有部分对看门狗、Fee的支持。 不同的写入模式。 其实,Fls的集成功能不是最终目的,最终目的是用来实...2018-12-19 23:56:02877
0
-
原创 043_AUTOSAR学习笔记_PORT
之前已经总结过了,PORT的功能主要是配置MCU所有的端口。也就是说,引脚什么功能是在这个位置配置的。至于管脚功能配置好之后如何使用,就在其他诸如DIO之类的模块了。 手头的这个Demo中,大致的配置如下: 这张表在其他的IDE中见过类似的,我自己试用过EB的工具但是花的时间很短,加上对AUTOSAR的了解不够没有找到类似的功能。其实,...2018-12-15 21:28:191007
0
-
原创 044_AUTOSAR学习笔记_PORT设计
Port_Init初始化所有的端口引脚,在其他的端口调用之前调用。 从这里看,或许引脚功能调整是一个比较常见的功能。 这个是端口方向的调整函数。 设置不同的模式,应该有对CAN、GPIO等类似功能的选择。 关于配置工具的几个没有操作过的内容,选择几个之前疑惑的做一下简单的小结。...2018-12-15 22:31:10929
0
-
原创 108_尝试使用Vector的XCP协议栈实现标定
看了一下XCP的官网出了一个新的XCP协议栈,尝试了一下在5634上的移植。大致的处理过程:协议栈代码放到我自己的工程中编译通过; 解决CAN接口问题,实现最终的链接通过; 尝试修改链接文件,实现标定分区; 没有使用MMU,因此直接把FLASH的标定量直接压进了RAM,这样的方案简单一点。后期,我可以尝试试一下MMU的使用。5. 按照其中的一份文档进行A2L的修改,适...2019-05-15 07:58:331340
2
-
原创 049_AUTOSAR学习笔记_FEE
以上是一个FEE模块中,FEE模块头的状态枚举类型。 枚举类型:Fee群组头不状态。 疑问:群组是个什么概念? 这几天,job这个词看了很多一直好奇是什么意思。看起来是操作类型的意思,大致也是读、写、擦、校验等。 函数:取消Fee的操作。 这里也有一个疑问:取消的时候会尝试恢复之...2018-12-18 23:45:222240
0
-
原创 048_S32DS定义全局宏
全局的宏可以通过编译器的选项来定义,风河的编译器使用-D选项。如果是使用S32DS,可以直接在IDE中设置。 比如,上面定义了AUTOSAR_OS_NOT_USED。 在定义之前,软件编译有一个与之相关的编译错误。现在修改后,问题已经没了。其实,开发过程中使用S32DS也挺好用。首先,不需要维护复杂的makefile,另外还有一些便捷的...2018-12-18 23:06:31677
0
-
原创 047_AUTOSAR学习笔记_Base
其实这个模块应该是最早去学习的一个模块,现在算是滞后状态了。 看起来,这个模块配置出来的结果应该是MCAL.h了。 这是我现在接触的编译器的部分宏。 定义了一系列的位处理,多出来的不写了。 定义了一系列的宏函数,应该是为了提高可读性以及代码的可移植性?还有其他类似的定义,不做整理了...2018-12-18 23:05:35433
0
-
原创 030_AUTOSAR软件组件学习笔记
软件组件类型从描述看给我一种面向对象的设计的感觉。软件组件类型SwComponentTypes中封装了应用软件的功能,并且提供了提供给外部的连接点PortPrototypes。 PortPrototypes的特征在于PortInterfaces,PortInterfaces支持以下通信范例:基于数据(发件者-接收者) 基于操作(客户端-服务器) 基于模...2018-12-11 22:49:15577
0
-
原创 046_AUTOSAR学习笔记_FLS
正好前段时间测试了一下Flash的驱动,看看这个顺便也测试学习下。 这里面提到的线性的概念应该是Fls的区块大小相等的意思,而Fls物理区块的名称中带有相应的系数以及偏移量的信息。 以上是FLS模块中可能出现的错误,分为同步、异步等不同模式中。基本上就是擦除失败、写入失败两种,只是针对于不同的场景。 读、...2018-12-17 23:19:08795
1
-
原创 045_AUTOSAR学习笔记_Memory
Memory驱动组包含两个主要的模块:Flash驱动、EEPROM驱动。 首先说Flash驱动,简写一般是FLS驱动。一般来说,主要的功能是用来模拟EEPROM。如果是在BootLoader中,Flash驱动应该是脱离于软件,通过引导程序下载到软件中再起作用。这部分,最初的时候我是不了解的,看到这里的描述看起来之前听别人所说的还是一个比较常见的设计方案。 ...2018-12-17 22:12:381224
2
-
原创 029_AUTOSAR VFB学习笔记-2
先简单理解一下下面的这个配置系统的示意图。 从上面的图中能够看懂的部分:SW-C之间的通信是通过VFB的,三角形的端口可能是表示信号的流向。 圆形或者弧形以及其他的形状含义暂时不是很明确,形状是否着色的含义具体也不是很清楚。 VFB看起来不是针对一个ECU的,二是针对一个ECU网络的。这样就带来一个疑问:SW-C难道不是绑定到专门的ECU吗?不过,看到图中ECU的内...2018-12-10 22:36:54792
0