| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> ARM 相关概念及知识随笔 -> 正文阅读 |
|
[嵌入式]ARM 相关概念及知识随笔 |
ARM处理器是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。全称为Advanced RISC Machine。ARM处理器本身是32位设计,但也配备16位Thumb指令集,一般来讲比等价32位代码节省达35%,却能保留32位系统的所有优势。 ARM处理器的三大特点是:耗电少功能强、16位/32位双指令集和合作伙伴众多。 1、体积小、低功耗、低成本、高性能;? 2、支持Thumb(16位,2字节对齐)/ARM(32位,4字节对齐)双指令集,能很好的兼容8位/16位器件; 3、大量使用寄存器,指令执行速度更快; 4、大多数数据操作都在寄存器中完成; 5、寻址方式灵活简单,执行效率高; 6、指令长度固定。 CISC与RISC概念 1. CISC(Complex Instruction Set Computer,复杂指令集计算机) 大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的指令却不经常使用,在程序设计中只占20%。 2.??RISC(Reduced Instruction Set Computer,精简指令集计算机) 优先选取使用频最高的简单指令,避免复杂指令;将指令长度固定,指令格式和寻址方式种类减少;以控制逻辑为主,不用或少用微码控制等。 特点: (1)采用固定长度的指令格式,指令归整、简单、基本寻址方式有2~3种。 (2)使用单周期指令,便于流水线操作执行。 (3)大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,以提高指令的执行效率。此外,ARM体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗: (4)所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。 (5)可用加载/存储指令批量传输数据,以提高数据的传输效率。 (6)可在一条数据处理指令中同时完成逻辑处理和移位处理。 (7)在循环处理中使用地址的自动增减来提高运行效率。 寄存器结构 ARM处理器共有37个寄存器,包括: (1)30个通用寄存器,均为32位的寄存器。 (2)1个程序计数器(PC指针),也为32位的寄存器。 (3)1个当前程序状态寄存器(cpsr) (4)5个程序状态保存寄存器 (spsr) 状态寄存器是用以标识CPU的工作状态及程序的运行状态,均为32位,只使用了其中的一部分。 处理器模式 共有7种,包括: 6种特权模式: (1)终止模式(abort):当处理器访问存储器失败时,进入该模式; (2)中断模式(interrupt request,IRQ):对ARM普通级别的中断做出响应; (3)快速中断模式(fast?interrupt request,FIQ):对ARM较高级别的中断做出响应,它有自己的r8~r12寄存器,不需要在处理时再对这些寄存器进行压栈,所以速度较快。 (4)管理模式(supervisor,SVC):处理器复位后进入该模式,通常处于该模式的有操作系统内核; (5)系统模式(system):特殊的用户模式,允许对cpsr的完全读写访问; (6)未定义模式(undefined,Undef):当处理器遇到没有定义的指令或处理器不支持的指令时进入该模式; 1种非特权模式: (1)用户模式(user):一般用来运行应用程序; 所有的模式一般都可以访问的寄存器有: (1)r0 ~ r12 (2)r13 (stack pointer,sp)、r14(link register,lr) (3)r15 (program counter,pc) (4)cpsr(current program status register) 除系统模式外的其他特权模式均可访问的寄存器: (1)spsr(saved program status register) 延伸概念 哈佛结构:采用指令集与数据集分开的设计结构,常见的有ARM7、ARM11等; 冯诺依曼结构:采用指令集与数据集混在一起取用的设计结构 Thumb: 16位指令集,为32位ARM指令集的功能子集,一般仅能访问r0~r7及3个特殊寄存器,访问r8~r12寄存器需特殊指令处理; r0~r7,又被称为Thumb state Low registers; r8~r12,又被称为Thumb state High registers; ARM 异常处理相应操作: 当发生异常情况时,会进行: (1)程序备份,将CPSR复制到SPSR; (2)重新设置CPSR的状态位:更改ARM状态位;更改位异常模式;结束中断接收; (3)将当前的返回地址存储到LR寄存器中; (4)将PC指针设置指向中断或异常的入口地址; 结束中断执行后, (5)将程序的备份从SPSR拷贝回CPSR; (6)还原CPSR的状态位; (7)将中断发生前指针PC指向的地址从LR中还原; RISC(精简指令集)与CISC(复杂指令集)的区别: (1)RISC侧重软件的处理,CISC侧重硬件的处理; (2)RISC指令仅有少量不同格式,CISC则有大量的不同格式; (3)RISC使用了更多的寄存器,CISC则仅用了少量寄存器; (4)??RISC仅用了少量寻址方式,CISC则有大量的寻址方式; (5)RISC编译器更复杂,CISC则在处理器上扩展运用了微编程; (6)RISC指令运行仅用一个周期,而CISC则要用多个周期; (7)RISC流水线更简单,CISC流水线则较为复杂。 一些汇编指令的简写汇总: (1)EQ,Equal,标志位为Z=1; (2)NE,Not equal,标志位为Z=0; (3)CS/HS,Unsigned higher or same,标志位为C=1; (4)CC/LO,Unsigned lower,标志位为C=0; (5)MI,Minus,标志位N=1; (6)PL,Positive or Zero,标志位为N=0; (7)VS,Overflow,标志位为V=1; (8)VC,No overflow,标志位为V=0; (9)HI,Unsigned higher,标志位为C=1&Z=0; (10)LS,Unsigned lower or same,标志位为C=0&Z=1; (11)GE,Great or equal,标志位为N=V; (12)LT,Less than,标志位为N!=V; (12)GT,Great or equal,标志位为Z=0&N=V; (13)LE,Less than,标志位为Z=1 or N!=V; (14)AL,Always |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 18:59:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |