ARM体系结构与汇编指令

可编程器件的特点
• CPU在固定频率的时钟控制下节奏运行。
• CPU可以通过总线读取外部存储设备中的二进制指令集,然后解码执行。
• 这些可以被CPU解码执行的二进制指令集是CPU设计的时候确定的,是CPU的设计者(ARM公司)定义的,本质上是一串由1和0组成的数字。这就是CPU的汇编指令集。
整个编程及运行过程
• 程序员用汇编指令编程 --经汇编器汇编成二进制可执行程序文件–>二进制文件被CPU读取进去–>CPU内部电路对二进制文件解码–>解码通过则CPU执行指令、完成指令动作。
• 如果程序员用C语言等高级语言编程,则编译器先将C语言程序编译为汇编程序,再进行上面的后续部分。

CISC
• complex instruction set computer复杂指令集CPU
• CISC体系的设计理念是用最少的指令来完成任务(譬如计算乘法只需要一条MUL指令即可),因此CISC的CPU本身设计复杂、工艺复杂,但好处是编译器好设计。CISC出现较早,至今Intel还一直采用CISC设计
RISC
• Reduced Instruction-Set Computer精简指令集CPU
• RISC的设计理念是让软件来完成具体的任务,CPU本身仅提供基本功能指令集。因此RISC CPU的指令集中只有很少的指令,这种设计相对于CISC,CPU的设计和工艺简单了,但是编译器的设计变难了。
iROM和iRAM
• S5PV210出厂时内置了64KB iROM和96KB iRAM。iROM中预先内置烧录了一些代码(称为iROM代码),iRAM属于SRAM(不需软件初始化,上电即可使用)。210启动时首先在内部运行iROM代码,然后由iROM代码开启外部启动流程。
为什么需要设计iROM和iRAM?答案是为了支持多种外部设备启动。
Second boot support
• When 1 st boot mode fails, SD/MMC boot will be tried through SD/MMC channel 2 with 4-bit data
• 当第一启动模式失败时,SD/MMC卡启动模式下将会从SD/MMC2通道尝试再次启动。
• 这种二级启动是一种冗余设计。SoC中第一启动介质故障而导致不能启动时,可以从备用启动介质启动。我们做裸机实验时从SD2启动就是利用了这一设计特性。
BL0做了什么?
• 关看门狗
• 初始化指令cache
• 初始化栈
• 初始化堆
• 初始化块设备复制函数device copy function
• 设置SoC时钟系统
• 复制BL1到内部IRAM(16KB)
• 检查BL1的校验和
• 跳转到BL1去执行
ARM的基本设定
• ARM 采用的是32位架构.
• ARM 约定:
– Byte : 8 bits
– Halfword :16 bits (2 byte)
– Word : 32 bits (4 byte)
– 大部分ARM core 提供:
– ARM 指令集(32-bit)
– Thumb 指令集(16-bit )
– Thumb2指令集(16 & 32bit)
• Jazelle cores 支持 Java bytecode
ARM处理器工作模式
– User : 非特权模式,大部分任务执行在这种模式
– FIQ : 当一个高优先级(fast) 中断产生时将会进入这种模式
– IRQ : 当一个低优先级(normal) 中断产生时将会进入这种模式
– Supervisor :当复位或软中断指令执行时将会进入这种模式
– Abort : 当存取异常时将会进入这种模式
– Undef : 当执行未定义指令时会进入这种模式
– System : 使用和User模式相同寄存器集的特权模式
除User(用户模式)是Normal(普通模式)外,其他6种都是Privilege(特权模式)。
Privilege中除Sys模式外,其余5种为异常模式。各种模式的切换,可以是程序员通过代码主动切换(通过写CPSR寄存器);也可以是CPU在某些情况下自动切换。各种模式下权限和可以访问的寄存器不同

ARM寄存器

在这里插入图片描述

• ARM共有37个寄存器,都是32位长度
• 37个寄存器中30个为“通用”型,1个固定用作PC,一个固定用作CPSR,5个固定用作5种异常模式下的SPSR。

• CPSR中各个bit位表明了CPU的某些状态信息,这些信息非常重要,和后面学到的汇编指令息息相关(譬如BLE指令中的E就和CPSR中的Z标志位有关)
• CPSR中的I、F位和开中断、关中断有关
• CPSR中的mode位(bit4~bit0共5位)决定了CPU的工作模式,在uboot代码中会使用汇编进行设置。
PC(r15)程序控制寄存器
• PC(Program control register)为程序指针,PC指向哪里,CPU就会执行哪条指令(所以程序跳转时就是把目标地址代码放到PC中)
• 整个CPU中只有一个PC(CPSR也只有一个,但SPSR有5个)。
什么是异常
• 正常工作之外的流程都叫异常
• 异常会打断正在执行的工作,并且一般我们希望异常处理完成后继续回来执行原来的工作
• 中断是异常的一种
异常向量表
• 所有的CPU都有异常向量表,这是CPU设计时就设定好的,是硬件决定的。
• 当异常发生时,CPU会自动动作(PC跳转到异常向量处处理异常,有时伴有一些辅助动作)
• 异常向量表是硬件向软件提供的处理异常的支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软宣布在机器翻译方面取得突破,中翻英可达人类水平

来源:猎云网一组微软研究团队于本周三宣布,他们已经创造了第一个能够将中文新闻翻译成英文的机器翻译系统,精确度与人类译者一致。该公司表示,它通过来自各种在线报纸的约2000条语句样本对这一系统进行了反复测试,并将…

pla3d打印材料密度_3D打印金属材料模型过程中常见问题

在金属3D打印过程中,可能会出现大量设备操作者试图避免的问题,包括孔隙、残余应力、致密度、翘曲、裂纹及表面光洁度等。下面我们来谈谈这几种常出现的问题。1、表面光洁度在金属3D打印件被使用或放置在展柜之前,它已经经历了大量类似CNC加工…

Java并发编程实战~ThreadLocal

ThreadLocal 的使用方法 static class SafeDateFormat {// 定义 ThreadLocal 变量static final ThreadLocal<DateFormat>tl ThreadLocal.withInitial(()-> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));static DateFormat get(){return tl.get();} }// …

智慧停车介绍、产业链市场全透析

来源&#xff1a;传感器技术最近&#xff0c;Goodwin调查发现&#xff0c;在城市地区&#xff0c;接近30%的交通拥堵源自于司机寻找停车位。据称&#xff0c;到2020年&#xff0c;将会有20亿的汽车在公路上跑着&#xff0c;这就意味着&#xff0c;届时汽车的数量将比目前多了7.…

Python 下载 图片、音乐、视频 和 断点续传

Python3 使用 requests 模块显示下载进度: http://blog.csdn.net/supercooly/article/details/51046561 python编写断点续传下载软件&#xff1a;https://www.leavesongs.com/PYTHON/resume-download-from-break-point-tool-by-python.html Python实现下载界面(带进度条&…

10停止nginx命令 win_Linux下配置Nginx并使用https协议

环境Centos7.6nginx-1.17.0下载官网&#xff1a;http://nginx.org/download/nginx-1.17.0.tar.gz环境确认在安装nginx前首先要确认系统中是否安装gcc、pcre-devel、zlib-devel、openssl-devel检查是否安装过软件包yum list installed | grep xxx安装软件包yum -y install gcc p…

腾讯AI Lab发布三大核心战略,与自然科研达成战略合作

来源&#xff1a;腾讯AI实验室3月15日&#xff0c;腾讯AI Lab第二届学术论坛在深圳举行&#xff0c;聚焦人工智能在医疗、游戏、多媒体内容、人机交互等四大领域的跨界研究与应用。全球30位顶级AI专家出席&#xff0c;对多项前沿研究成果进行了深入探讨与交流。本次论坛以“共享…

Java并发编程实战~Guarded Suspension模式

Guarded Suspension 模式 比如&#xff0c;项目组团建要外出聚餐&#xff0c;我们提前预订了一个包间&#xff0c;然后兴冲冲地奔过去&#xff0c;到那儿后大堂经理看了一眼包间&#xff0c;发现服务员正在收拾&#xff0c;就会告诉我们&#xff1a;“您预订的包间服务员正在收…

diy直立双足机器人_Aelos Pro 机器人:让编程变得更有趣

前言拥有一台酷炫的机器人是每个人儿时的梦想&#xff0c;爱搞机最近也有机会拿到一款来自乐聚的新品&#xff1a; Aelos Pro 机器人。相信有了解过机器人的朋友&#xff0c;应该对乐聚有所耳闻&#xff0c;乐聚在人形机器人领域一直都是行业的佼佼者&#xff0c;Aelos 系列机器…

中国科学家首次解析人脑“中央处理器”,领先美国脑计划

来源&#xff1a;澎湃新闻 作者&#xff1a;贺梨萍“我们可以探索数光年外的宇宙&#xff0c;但对我们两耳之间3磅重的大脑知之甚少。”这一想法推动美国前任总统奥巴马启动了“推进创新神经技术脑研究计划”&#xff0c;也就是所谓的 “脑计划”。中国同一领域内的研究也在加…

物理拓扑和逻辑拓扑——现实和应用的比较

在每一个网络管理者的脑子里几乎都有一张自己所管理的网络拓扑图。在网管系统中&#xff0c;生成拓扑图是网管系统的基本功能之一。目前&#xff0c;在网管系统中生成的的拓扑图分为物理拓扑和逻辑拓扑&#xff0c;他们有什么不同呢&#xff1f; 作为网络的管理者我们知道&…

虚拟机无法接受组播消息_IPTV(组播)骨干网完整解决方案--四川广电网络

一&#xff0c;基于ANYCAST 设计骨干RP热备1&#xff0c;RP选举说明组播网络RP设置分为动态&#xff0c;静态2种。但和很多网络协议不一样&#xff0c;RP的选择默认是动态优先。也就是在路由器上同时存在动态和静态RP的时候会优选动态&#xff0c;除非定义强制静态优选动态才不…

Java并发编程实战~Worker Thread模式

在上一篇文章中&#xff0c;我们介绍了一种最简单的分工模式——Thread-Per-Message 模式&#xff0c;对应到现实世界&#xff0c;其实就是委托代办。这种分工模式如果用 Java Thread 实现&#xff0c;频繁地创建、销毁线程非常影响性能&#xff0c;同时无限制地创建线程还可能…

DES算法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、DES是什么&#xff1f;二、go语言实现1.使用CBC模式1.使用ECB模式前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、DES是什…

2018年世界前沿科技趋势展望及2017年态势总结

来源&#xff1a;全球技术地图本文以智能制造、新材料和信息三大领域为例&#xff0c;深入浅出的探讨了2017年以来世界前沿科技的发展脉络&#xff0c;并对2018年可能的走势进行了预测。-智能制造领域-2017年态势总结多国推出新举措&#xff0c;推动先进制造发展美国成立白宫贸…

写给女友的情诗

亲爱抱抱每次看到你很快乐的样子总是让我无比欢畅你让我看到幸福 让我看到阳光彼此的那份甜蜜只有你我才能感觉得到你让我忘掉悠愁 让我忘掉烦恼你就是我最闪亮的星星亲爱的让我紧紧的抱抱每次都是那么地不一样无论如何我还是喜欢这样抱着你直到永远Hei Baby You are my favori…

机器人3·15 | 赛迪「机器人国评中心」揭示机器人产品质量6大痛点!

来源&#xff1a;雷克世界机器人是“制造业皇冠顶端的明珠”&#xff0c;其研发、制造、应用是衡量一个国家科技创新和高端制造业水平的重要标志。当前&#xff0c;我国机器人市场进入高速增长期&#xff0c;“机器换人”浪潮势不可挡&#xff0c;产品应用层见叠出&#xff0c;…

jq如何在打开新的页面 关闭之前同链接的页面_教你如何“抢”其他域名的权重...

白帽波哥的上一篇文章《这三种域名&#xff0c;永远不会有询盘》里留了两个尾巴&#xff0c;一个是如何将好域名的权重导到一个新域名上&#xff0c;另一个是如何清除域名里的垃圾外链。今天先讲第一个&#xff0c;如何将好的老域名权重导到新域名&#xff0c;也就是业内常说的…

ARM GIC (五)gicv3架构-LPI

在gicv3中,引入了一种新的中断类型。message based interrupts,消息中断。 一、消息中断 外设,不在通过专用中断线,向gic发送中断,而是写gic的寄存器,来发送中断。 这样的一个好处是,可以减少中断线的个数。 为了支持消息中断,gicv3,增加了LPI,来支持消息中断。并且…

全球自动驾驶汽车发展指数哪家强?美德领衔,中国第七

来源&#xff1a;新智驾近日&#xff0c;罗兰贝格与德国著名汽车研究机构亚琛汽车工程技术有限公司共同发布《2017年第四季度全球自动驾驶汽车发展指数》报告&#xff0c;基于行业和市场两个维度&#xff0c;对全球主要汽车大国在自动驾驶领域的竞争态势做出全面比较。其中“行…