程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

实例讲解Simulink的Byte Reversal模块实现大端和小端数据的转化

balukai 2025-07-21 12:39:56 文章精选 6 ℃

在实际的嵌入式软件开发时,在数据传输或通信时经常要区分数据处理器的类型是大端处理器还是小端处理器。arm是小端,dsp是大端,电脑是小端,网络数据一般为大端。在两个不同大小端的处理器之间数据传输,数据在内存的存放顺序并没有变,不同大小端需要解读出同样的值,就需要进行大小端转化

大端模式:高位字节存放在低地址中,低位字节存放在高地址中,是最直观的字节序。

小端模式:高位字节存放在高地址中,低位字节存放在低地址中。

以unsigned int value = 0x12345678为例,分别按照大端模式和小端模式存放在芯片中。

内存地址

0x00000001

0x00000002

0x00000003

0x00000004

大端模式

0x12

0x34

0x56

0x78

小端模式

0x78

0x56

0x34

0x12

再换一种图示:同样以unsigned int value = 0x12345678为例,分别看看在两种字节序下其存储情况,我们可以用unsigned char buf[4]来表示value。

不管是大端还是小端模式,我们在读取和存储数据的时候一定都是从内存的低地址依次向高地址读取或写入。


1.Byte Reversal模块

Byte Reversal功能:反转输入字中的字节顺序。
库:
Embedded Coder / Embedded Targets / Host Communication
输入数目 — 模块输入的数目
1 (默认) | 整数
指定模块输入的数目。该模块创建该数目的输入端口和输出端口。
每个输入端口映射到匹配的输出端口。输入 Port_1 接收到的数据通过
输出 Port_1 发送,依此类推。

应用场景描述

Byte Reversal 模块更改输入到该模块的数据中字节的顺序。当进程在使用不同端序的目标计算机之间进行通信时,例如在采用小端的 Intel处理器和其他大端处理器之间进行通信时,使用此模块。默认情况下,Texas Instruments 处理器是小端处理器。要在具有不同端序的处理器之间交换数据,在紧挨发送模块之前和紧挨接收模块后放置一个 Byte Reversal 模块。

注:反转字节顺序不会改变数据类型。输入和输出保留匹配的数据类型。


2.实例

此模型显示三个输入的字节反转。每条路径的输入端口和输出端口都匹配。

Byte Reversal模块的参数


3.参考内容

[1]https://ww2.mathworks.cn/help/ecoder/ref/bytereversal.html

本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。


作 者 | 郭志龙

编 辑 | 郭志龙
校 对 | 郭志龙

最近发表
标签列表