判断CPU大小端模式的两种经典方法
CPU大/小端模式是指CPU存取数据的两种方式 ,比如要存取0x12345678(4字节),如果是小端模式,则先存取0x78(低字节),如果是大端模式,则是先存取0x12(高字节)。一般来说,x86系列CPU是小端模式,PowerPC通常是大端,单片机/ARM系列是小端模式。
而今天跟大家分享的是判断CPU大小端模式的两种经典方法 ,先作如下定义:
方法一:
方法二:
方法一直接从大小端字面上着手,而方法二则巧妙利用联合体特性。测试代码如下:
支持原创,转载时请注明出处,疯狂码者愿与你一起努力,共同成长,谢谢!
每天一点内核知识 Cortex-M3 (内核知识点连载 2 内核名词)
先解释下为啥叫ARM: 这是家公司名字的简写 没啥特别意思
发展史:从一开始的ARM7 到后来的ARM11再到Cortex-M3.演变史如下。
发展史
三种不同架构 A R M三种系列
Cortex-A53 A系列
款式R(ARMv7‐R) :硬实时且高性能的处理器。标的是高端实时市场。那些高级 的玩意,像高档轿车的组件,大型发电机控制器,机器手臂控制器等,它们使用的处理 器不但要很好很强大,还要极其可靠,对事件的反应也要极其敏捷。用于高速的数字信号处理方面。
款式M(ARMv7‐M) :认准了旧世代单片机的应用而量身定制。在这些应用中,尤其是 对于实时控制系统,低成本、低功耗、极速中断反应以及高处理效率,都是至关重要。 Cortex系列是v7架构的第一次亮相,其中Cortex‐M3就是按款式M设计的。
简介
Cortex‐M3 是一个 32 位处理器内核。内部的数据路径是 32 位的,寄存器是 32 位的,存储器接 口也是 32 位的。CM3 采用了哈佛结构 ,拥有独立的指令总线 和数据总线 ,可以让取指与数据访问 并行不悖。这样一来数据访问不再占用指令总线,从而提升了性能。为实现这个特性, CM3 内部 含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面, 指令总线和数据总线共享同一个存储器空间 (一个统一的存储器系统)。换句话说,不是因为有两 条总线,可寻址空间就变成 8GB 了。 比较复杂的应用可能需要更多的存储系统功能,为此 CM3 提供一个可选的 MPU,而且在需要 的情况下也可以使用外部的 cache。另外在 CM3 中,Both 小端模式和大端模式都是支持的。 CM3 内部还附赠了好多调试组件,用于在硬件水平上支持调试操作 ,如指令断点 ,数据观察 点 等。另外,为支持更高级的调试,还有其它可选组件,包括指令跟踪和多种类型的调试接口。
内核寄存器
R0-R12:通用寄存器
R0‐R12 都是 32 位通用寄存器 ,用于数据操作 。但是注意:绝大多数 16 位 Thumb 指令只能访 问 R0‐R7,而 32 位 Thumb‐2 指令可以访问所有寄存器
Banked R13: 两个堆栈指针
Cortex‐M3 拥有两个堆栈指针,然而它们是 banked,因此任一时刻只能使用其中的一个。
主堆栈指针(MSP) :复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包 括中断服务例程)
进程堆栈指针(PSP) :由用户的应用程序代码使用
R14:连接寄存器
当呼叫一个子程序时,由 R14 存储返回地址
R15:程序计数寄存器
指向当前的程序地址。如果修改它的值,就能改变程序的执行流(很多高级技巧就在这里面— —译注)。
早期命名规则 :
ARM7TDMI来说,T代表Thumb指令集,D是说支持JTAG调试(Debugging),M意指快速乘法器,I则对应一个嵌入式ICE模块。
ADK AMBA设计套件
AHB 先进高性能总线 (stm32里面的AHB系统总线)
Cortex-M3内核中 AHB系统总线
AHB‐AP AHB访问端口
AMBA 先进单片机总线架构
APB 先进外设总线
ARM ARM ARM 架构参考手册
ASIC 行业领域专用集成电路
ATB 先进跟踪总线
BE8 字节不变式大端模式
CPI 每条指令的周期数
CPU 中央处理单元
DAP 调试访问端口
DSP 数字信号处理器/数字信号处理
DWT 数据观察点及跟踪
ETM 嵌入式跟踪宏单元
FPB 闪存地址重载及断点
FSR Fault状态寄存器
HTM CoreSight AHB跟踪宏单元
ICE 在线仿真器
IDE 集成开发环境
IRQ 中断请求(通常是指外部中断的请求)
ISA 指令系统架构
ISR 中断服务例程
ITM 指令跟踪宏单元
JTAG 连结点测试行动组(一个关于测试和调试接口的标准)
JTAG‐DP JTAG调试端口
LR 连接寄存器
LSB 最低有效位
LSU 加载/存储单元
MCU 微控制器单元(俗称单片机)
MMU 存储器管理单元
MPU 存储器保护单元
MSB 最高有效位
MSP 主堆栈指针
NMI 不可屏蔽中断
NVIC 嵌套向量中断控制器
OS 操作系统
PC 程序计数器
PSP 进程堆栈指针
PPB 私有外设总线
相关问答
51 单片机 是 大端 模式还是 小端 模式?51单片机是大端模式(Bigendian),这种模式仅用于多字节变量的存储,低地址存放高字节数据,高地址存放低字节数据。例如在20H~23H四个RAM单元中存放一个整型i...