嵌入式系统-概述+ARM指令

简介: 嵌入式系统-概述+ARM指令 嵌入式系统是以应用为中心,以计算机技术为基础,采用可裁剪软硬件,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统及用户应用程序四部分组成。 简单说,网吧里的电脑是通用计算机,而mp3、豆浆机等内含的都有嵌入式系统。嵌入式系统的特点是功耗低、体积小、成本低。 ARM微处理器是主流的嵌入

嵌入式系统-概述+ARM指令

嵌入式系统是以应用为中心,以计算机技术为基础,采用可裁剪软硬件,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统及用户应用程序四部分组成。

简单说,网吧里的电脑是通用计算机,而mp3、豆浆机等内含的都有嵌入式系统。嵌入式系统的特点是功耗低、体积小、成本低。

ARM微处理器是主流的嵌入式处理器。

嵌入式操作系统有:Windows CEAndroidVxWorks等。

ARM的全称是 Advanced RISC Machine

RISCReduced Instruction Set Computer,精简指令集计算机,与之相对的是Complex ISC。前者因指令集简单,所以硬件电路简单,故价格低。

ARM处理器支持两种指令集:ARM指令集(32位)、Thumb指令集(16)。对应相应两种状态。

操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的方法,使微处理器从ARM状态切换到Thumb状态。

ARM有用户模式和特权模式。

异常:Exception。原有流程被打断,转而执行新的流程叫异常。例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。

ARM的数据存储

ARM有:

31个通用寄存器,均为32位的寄存器;具体有三类——未分组寄存器R0R7,分组寄存器R8R14,程序计数器PC(R15)

R13ARM指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。

6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位。

寻址空间为4G

数据存储有小端模式——低地址存储数据的高位和大端模式——低地址存储数据的低位。

ARM微处理器中支持字节(8位)、半字(16位)、字(32位)三种数据类型,其中,字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0

ARM的寻址

1.立即数寻址;

其实并不需要真正的寻址,操作数已经在指令中了。立即数一般以‘#’为前缀。

2.寄存器寻址;

操作数在寄存器中,不需访问存储器。

3.寄存器移位寻址;

add r1,r1,r2,ror #0x2;         ;r2循环右移两位后与r1相加,结果放入r1中。

4.寄存器间接寻址;

此时寄存器中存储的是地址。

str r1,[r2]       ;r1的值存入r2所指地址的存储器中

5.基址变址寻址;

 

6.多寄存器寻址;

ldmia r0,{r1,r2,r3,r4,r5};r0->r1,r0+4->r2,...,r0+16->r5

7.堆栈寻址;

栈是一种后进先出的数据结构。栈指针始终指向栈顶,这个寄存器一般是R13.

8.相对寻址;

 

RAM指令简介

 

load/store ——从存储器中读某个值,操作完后再将其放回存储器中

ARM指令的一般格式见下:

<opcode> {<cond>} {S}    <Rd> ,<Rn>{,<operand2>} 

<>表示必须;{}表示可选。

Rd:目标寄存器;  Rn:第1个操作数的寄存器;

 

1.跳转指令

将程序计数器PC的值改写为跳转目的地址。 mov PC,#immediate

B (Branch)

基本跳转指令。 B{condition},Label1

BL(Branch with Link)

带连接的跳转指令。在跳转之前,会先将下一条要执行的指令地址放到R14中,一般用于函数调用。

BX(Branch and eXchange)

用于ARMThumb状态间的转换。

2.mov

MOV   Rd,operand2 ;数据传送,Rdoperand2 

3.add adc 

ADD     R1,R1,R2,LSL #2       ;R1=R1+R2<<2 

4.sub sbc

 SUBS R0,R0,#240 ;R0=R0-240 ,并影响标志位 

5.and orr 

分别是c++中的 && || 

6.cmp

cmp  RnOperand2   Rn寄存器的值减去operand2的值,除了最后的计算结果被丢弃外,整个过程和subs相同。

7.mul

乘法指令

 

ARM开发IDE

ADS(ARM Developer Suite),是在1993年由Metrowerks公司开发是ARM处理器下最主要的开发工具。

目录
相关文章
|
2月前
|
Ubuntu Linux
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
216 3
|
1月前
ARM64技术 —— 系统调用指令SVC、HVC和SMC的使用规则
ARM64技术 —— 系统调用指令SVC、HVC和SMC的使用规则
|
2月前
|
Linux 网络安全 开发工具
内核实验(二):自定义一个迷你Linux ARM系统,基于Kernel v5.15.102, Busybox,Qemu
本文介绍了如何基于Linux Kernel 5.15.102版本和BusyBox创建一个自定义的迷你Linux ARM系统,并使用QEMU进行启动和调试,包括内核和BusyBox的编译配置、根文件系统的制作以及运行QEMU时的命令和参数设置。
113 0
内核实验(二):自定义一个迷你Linux ARM系统,基于Kernel v5.15.102, Busybox,Qemu
|
3月前
|
开发者
云上应用管理问题之Arm指令集和Arm公司的特点是什么
云上应用管理问题之Arm指令集和Arm公司的特点是什么
|
2月前
|
Ubuntu Windows
ARM架构安装ubuntu系统
8月更文挑战第19天
366 0
|
4月前
|
存储 Ubuntu 编译器
合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三)
合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三)
合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三)
|
4月前
|
Ubuntu Unix Linux
合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(一)
合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(一)
|
4月前
|
Linux 编译器 语音技术
合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(二)
合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(二)
|
3月前
|
机器学习/深度学习 人工智能 计算机视觉
好的资源-----打卡机+Arm+Qt+OpenCV嵌入式项目-基于人脸识别的考勤系统-----B站神经网络与深度学习,商城
好的资源-----打卡机+Arm+Qt+OpenCV嵌入式项目-基于人脸识别的考勤系统-----B站神经网络与深度学习,商城
|
4月前
|
存储 算法 Linux
详细解读ARM嵌入式整理
详细解读ARM嵌入式整理
28 0
下一篇
无影云桌面