在Vector的XCP代码中字节序的配置代码如下:
#if defined ( XCP_CPUTYPE_BIGENDIAN )
CRM_CONNECT_COMM_BASIC |= (vuint8)PI_MOTOROLA;
#endif
说明摩托罗拉字节序其实对应的就是大端字节序,同理intel字节序就对应于小端字节序。
摘录一段wiki上面对大小端的介绍:
In big-endian format, whenever addressing memory or sending/storing words bytewise, the most significant byte—the byte containing the
most significant bit
—is stored first (has the lowest address) or sent first, then the following bytes are stored or sent in decreasing significance order, with the least significant byte—the one containing the
least significant bit
—stored last (having the highest address) or sent last.
Little-endian format reverses this order: the sequence addresses/sends/stores the least significant byte first (lowest address) and the most significant byte last (highest address). Most computer systems prefer a single format for all its data; using the system's native format is automatic. But when reading memory or receiving transmitted data from a different computer system, it is often required to process and translate data between the preferred native endianness format to the opposite format.
翻译过来就是:大端格式指,在按字节存储或者发送数据时,高有意义字节会先发送或者先存储(存储时地址是由低向高增长)。比如我们发送一个32位的数0xFEBD025E,在这个32位的数中FE这个字节就是高有意义(或者高有效)字节,所以在以大端传时,FE会先发出来,然后才是BD025E,接受端在收到这个32位的数后,假设要用大端存储在flash中,那么,FE就会存在低地址处,然后地址加1存BD,依次存025E。
在Vector的XCP代码中字节序的配置代码如下:#if defined ( XCP_CPUTYPE_BIGENDIAN ) CRM_CONNECT_COMM_BASIC |= (vuint8)PI_MOTOROLA;#endif说明摩托罗拉字节序其实对应的就是大端字节序,同理intel字节序就对应于小端字节序。 摘录一段wiki上面对大小端的介绍:In big-e...
我之前写过好几篇文章
介绍
大端小端的存储、显示和读取。在
介绍
DBC的文章
中
,也有信号在CAN消息数据
中
如何定义的顺序,它和大端小端采用的原理相同,但是不能带入数据大端小端存储的方法。这里千万要注意!
DBC数据库
中
定义信号时采用的字节顺序,如果想讲明白,很简单。但是如何讲明白的同时,还能通俗易懂,让人容易记住,这是我一直思考的问题!之前看过几篇别人写的
介绍
信号字节顺序的文章,怎么说呢?不那么通俗易懂,尤其对于初学者来说,太八股文了,今天尝试以我的角度解读信号的字节顺序。这篇文章,我打算通过:画图、举例与分
在这份教程的第一部分,我们提到没有CAN数据库,CANoe还不能工作。在第二部分,我们来看看CAN数据库是怎样的。通过CANoe的Tools菜单,或者从开始菜单打开Vec
tor
的CAN数据库编辑器——CANdb++ Edi
tor
。
CAN总线上有4种报文:
Mo
st Significant Bit, Last(Least) Significant Bit
最高有效位(MSB) 指二进制
中
最高值的比特。在16比特的数字音频
中
,其第1个比特便对16bit的字的数值有最大的影响。例如,在十进制的15,389这一数字
中
,相当于万数那1行(1)的数字便对数值的影响最大。比较与之相反的“最低有效位”(LSB)。MSB高位前导,LSB低位前导。
谈到
字节序
...
计算机硬件存储数据有两种方式:大端
字节序
(big
endian
)和小端
字节序
(little
endian
)。
小端
字节序
:即低地址存低位字节,或者说在起始地址存放低位字节(
Intel
的机器都是采用的这种存储方法,因此有时候直接称为
Intel
字节序
);
大端
字节序
:即低地址存高位字节,或者说在起始地址存放高位字节(人类读写数值的方法,网络
字节序
也是这种
字节序
);
注:只有多字节数据的存取才牵涉到
字节序
,单字节数据存取不牵扯
字节序
问题。
二、网络
字节序
在网络协议
中
,TCP/IP协议使用
汽车行业-
mo
to欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居
中
、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
欢迎使用Markdown编辑器
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mark
现在有一个数字 65430,这个数字在二进制的内存
中
一个字节无法完全存下,存储这个数字需要1个字节以上的空间。这样的值被称为多字节量(multi-
byte
quantity)。
65430在内存
中
由两个字节表示:0xFF
此图是客户的诊断需求规范,其字节表就是
Mo
tor
ala
字节序
,关键点讲解:
1. #1代表第一个字节,在程序
中
存放时,就是在CAN数组的0下标内存
中
,ECU发送数据给上位机时就会首先发送字节31(且从0x31的高位bit到低位bit进行发送),再发送0x01\0xFF……
2. 该#1#8字节,ECU开发人员会以#5#8这4个字节代表内存地址这个数据,MSB代表地址内存的高字节
XCP
又称为CAN Calibration Protocol,是一种通过CAN总线进行汽车电子控制单元(ECU)调试和校准的通信协议。
XCP
定义了一组命令和通信机制,用于控制ECU的功能,如读取和写入存储器、设置变量参考、请求测量值等。提供了一种统一的、标准化的接口,用于在ECU生命周期
中
进行调试、测试和校准操作。
XCP
还支持网络管理,允许多个调试和校准工具同时对一个ECU进行访问,从而提高了效率和灵活性。
XCP
被广泛应用于汽车、航空航天、军工等领域,其
中
包括许多大型的汽车制造商和供应商。
XCP
定义了两种传输协议,即CAN总线和以太网。它还提供了一种异步通信机制,允许校准和测量值请求与ECU操作并行执行,从而提高了系统的响应速度。
XCP
在汽车电子系统的开发、测试和校准方面发挥着重要的作用,有助于提高系统的可靠性、安全性和性能。