范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

ARM汇编汇编中IAIBDADB和FDEDFAEA

  1、ARM汇编:汇编中IA、IB、DA、DB和FD、ED、FA、EA
  2、ARM处理器的9种模式详解
  3、MRS,MSR指令详解
  4、嵌入式DDR布线分析 DDR信号布线介绍
  5、嵌入式学习之IRQ和FIQ之间的区别
  ARM指令的多数据传输(STM、LDM)中,提到:多寄存器的Load和Store指令分为2组:
  一组用于数据的存储与读取,对应于IA、IB、DA、DB,
  一组用于堆栈操作,对应于FD、ED、FA、EA,
  两组中对应的指令含义相同。
  IA:increase after ;表示数据传输后地址增加
  IB:increase before
  DA: decrease after
  DB: decrease before
  即:  STMIB(地址先增而后完成操作)  STMFA(满递增堆栈)  STMIA(完成操作而后地址递增)  STMEA(空递增堆栈)  STMDB(地址先减而后完成操作)  STMFD(满递减堆栈)  STMDA(完成操作而后地址递减)  STMED(空递减堆栈)
  上述各组2个指令含义相同只是适用场合不同,同理有:
  1、LDMIB、LDMED;
  2、LDMIA、LDMFD;
  3、LDMDB、LDMEA
  4、LDMDA、LDMFA。
  IA模式表示:每次传送后地址+4;(After Increase)
  DB模式表示:每次传送前地址-4;(Before Decrease)
  多寄存器加载/存储指令共有8种模式(4个用与数据块的传输,4个用于栈操作)
  STMDB和LDMIA指令一般配对使用,STMDB用于将寄存器压栈,LDMIA用于将寄存器弹出栈,作用是保存使用到的寄存器。
  例、
  指令:stmdb sp!,{r0-r12,lr}
  含义:sp = sp - 4,先压lr,sp = lr(即将lr中的内容放入sp所指的内存地址)。sp = sp - 4,再压r12,sp = r12。sp = sp - 4,再压r11,sp = r11......sp = sp - 4,最后压r0,sp = r0。
  如果想要将r0-r12和lr弹出,可以用ldmia指令:ldmia sp!,{r0-r12,lr}
  例
  STMIA, 比如当前r0指向的内存地址是 0x1000,STMIA R0!,{R1-R7} 就是 首先把r1存入 0x1000,然后r2存入0x1004,然后r3存入0x1008,如果是32位的处理器就是每次加4个字节,以此类推把 r1-r7按照递增的地址存入,这个r0!就是从r0的地址开始存的意思。STMDB则是地址从r0开始减少,依次存储。
  例
  LDMIA:LDM是多寄存器存取的意思,后面参数以","分隔,第一个参数是首地址;第二个参数是寄存器列表,并以"{}"括起来。
  LDMIA R0!, {R1-R4};R0表示要操作的存储空间首地址,要操作的数据个数由寄存器列表决定,现在是R1到R4,共4个数据(每个数据是32bits的)
  具体:
  地址为R0的存储空间中的数据赋值给R1
  地址为R0+4的存储空间中的数据赋值给R2
  地址为R0+8的存储空间中的数据赋值给R3
  地址为R0+12的存储空间中的数据赋值给R4
  所有的示例指令执行前的存储空间和寄存器情况:
  mem32[0x1000C] = 0x04
  mem32[0x10008] = 0x03
  mem32[0x10004] = 0x02
  mem32[0x10000] = 0x01
  r0 = 0x00010000
  r1 = 0x00000000
  r3 = 0x00000000
  r4 = 0x00000000
  执行后存储空间不变,寄存器变化:
  r0 = 0x00010010
  r1 = 0x01
  r2 = 0x02
  r3 = 0x03
  r4 = 0x04
  2、ARM处理器的9种模式详解
  ARM的处理器模式分几种要看是ARM的哪个系列,但是以现在的系列来说,有九种模式,这九种模式就是CPU在运算的时候,本来在读程序,突然系统发生异常,比如说蓝屏,这个时候操作系统肯定有相关的处理,同时我们也需要CPU一些信号,那么我们就可以通话CPU的切换来进行处理,这样实际上是在最低级别上考虑到的方式来完成了安全控制和效率控制,还有节能控制,所以这就是我们为什么要模式切换的原因,它模式与模式之间相对而言是比较独立的。
  Cortex-A九种处理器模式
  1,user模式:用户模式,大部分程序运行时候的非特权模式。
  2,FIQ模式:快速中断模式,进入FIQ中断异常,中断也会分类,除了硬件中断还有软件中断,中断的时候也会有消息传过来,这个消息可能数据量比较大,而且要求还很大,还有的消息数据量比较小,它要求就会很小,这种要求大的中断我们就称为快速中断,比较小的我们就称为一般中断。
  3,IRQ模式:一般中断模式。
  4,Supervisor(SVC)模式:超级管理员,它主要是用来管理调用指令被执行或者reset的时候,这个模式的权限级别非常大,所以一般情况下是不能随便用的。
  5,Monitor(MON)模式:监视模式,就像后台服务,就像监测网络信号,其实CPU不需要去处理一些用户中断,这个模式主要用来安全扩展模式,只用于安全。
  6,Abort(ABY)模式:退出模式,通常开始发生了用户级别的开始,就会出现这样的退出,这个时候CPU就会说暂停下面的代码运行,就直接退出。
  7,Hyp(HYP)模式:是一个超级的监视者,它比超级管理员要稍微低一点,它主要是用来做一些虚拟化的扩展。
  8,Undef(UND)模式:它就是未定义的指令执行的时候,比如说一条指令是CPU不识别的,就叫做未定义。
  9,System(SYS)模式:系统模式,当系统自己异常的时候,就会发生这样的模式,它有一个特点就是可以进行各个模式的切换,在不同的状态的时候,访问的寄存器就有可能不一样,这个模式用到的寄存器与用户模式是共享的,只是访问级别不一样。这九种模式里面User模式称为非特权模式,其他的全部称为特权模式。
  3、MRS,MSR指令详解
  在ARM处理器中,只有MRS(Move to Register from State register)指令可以对状态寄存器CPSR和SPSR进行读操作。通过读CPSR可以获得当前处理器的工作状态。读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有SPSR寄存器)。
  例如:
  MRS R1,CPSR ; 将CPSR状态寄存器读取,保存到R1中
  MRS R2,SPSR ; 将SPSR状态寄存器读取,保存到R2中
  通过MRS指令可以取得状态寄存器里的值,然后比较其模式位M[4:0]的值判断当前所处模式,当然也可以比较其它相应位了解当前CPU的状态。
  同样,在ARM处理器中,只有MSR指令可以对状态寄存器CPSR和SPSR进行写操作。与MRS配合使用,可以实现对CPSR或SPSR寄存器的读-修改-写操作,可以切换处理器模式、或者允许/禁止IRQ/FIQ中断等。
  由于xPSR寄存器代表了CPU的状态,其每个位有特殊意义,在执行对xPSR状态寄存器写入时(读取时不存在该用法),为了防止误操作和方便记忆,将xPSR里32位分成四个区域,每个区域用小写字母表示:
  c 控制域屏蔽 psr[7..0]
  x 扩展域屏蔽 psr[15..8]
  s 状态域屏蔽 psr[23..16]
  f 标志域屏蔽 psr[31..24]
  注意:区域名必须为小写字母
  向对应区域进行执行写入时,使用xPSR_x可以指定写入区域,而不影响状态寄存器其它位,如:
  使能IRQ中断:
  ENABLE_IRQ
  MRS R0, CPSR ; 将CPSR寄存器内容读出到R0
  BIC R0, R0,#0x80 ; 清掉CPSR中的I控制位
  MSR CPSR_c,R0 ; 将修改后的值写回 CPSR寄存器的对应控制域
  MOV PC,LR ; 返回上一层函数
  禁用IRQ中断:
  DISABLE_IRQ
  MRS R0 CPSR ; 将CPSR寄存器内容读出到R0
  ORR R0, R0,#0x80 ; 设置CPSR中的I控制位
  MSR CPSR_c,R0 ; 将修改后的值写回 CPSR寄存器的对应控制域
  MOV PC,LR ; 返回上一层函数
  下表列出了不同模式的二进制数表示:
  表3-3 不同工作模式对应二进制
  在对开发板进行初始化时,用对不同模式指定其栈空间,下面例子对各模式的栈指针sp进行初始化:
  stack_init ; 栈指针初始化函数
  @ undefine_stack
  msr cpsr_c, #0xdb ; 切换到未定义异常
  ldr sp, =0x34000000 ; 栈指针为内存最高地址,栈为倒生的栈
  ; 栈空间的最后1M 0x34000000~0x33f00000
  @ abort_stack
  msr cpsr_c, #0xd7 ; 切换到终止异常模式
  ldr sp, =0x33f00000 ; 栈空间为1M,0x33f00000~0x33e00000
  @ irq_stack
  msr cpsr_c, #0xd2 ; 切换到中断模式
  ldr sp, =0x33e00000 ; 栈空间为1M,0x33e00000~0x33d00000
  @ sys_stack
  msr cpsr_c, #0xdf ; 切换到系统模式
  ldr sp, =0x33d00000 ; 栈空间为1M,0x33d00000~0x33c00000
  msr cpsr_c, #0xd3 ; 切换回管理模式
  mov pc, lr
  4、嵌入式DDR布线分析 DDR信号布线介绍
  嵌入式DDR(Double Data Rate,双数据速率)设计是含DDR的嵌入式硬件设计中最重要和最核心的部分。随着嵌入式系统的处理能力越来越强大,实现的功能越来越多,系统的工作频率越来越高,DDR的工作频率也逐渐从最低的133 MHz提高到200 MHz,从而实现了更大的系统带宽和更好的性能。然而,更高的工作频率同时也对系统的稳定性提出了更高的要求,这需要硬件设计者对电路的布局走线有更多的约束和考虑。而影响整个系统能否工作正常且稳定的最重要的部分就是DDR部分的电路设计。
  嵌入式系统使用DDR内存,可以在传统的单数据数率内存芯片上实现更好的性能。DDR允许在不增加时钟频率和数据位宽的条件下,一个时钟周期内能够处理两个操作。增加的数据总线性能是由于源同步数据选通允许数据同时在选通脉冲的上升沿和下降沿被获取
  DDR虽然能够给嵌入式设计带来更好的性能,但是设计者必须比以往的SDR设计更小心地处理DDR部分的PCB布线部分,否则不仅不能实现好的性能,整个嵌人式系统的稳定性也会受到影响。DDR比传统的SDR有更短的信号建立保持时间、更干净的参考电压、更紧密的走线匹配和新的I/O口信号,并且需要合适的终端电阻匹配。这些都是要面对的新的挑战。  1 DDR总线结构
  对于DDR内存,JEDEC建立和采用了一个低压高速信号标准。这个标准称为"短截线串联终结逻辑(StubSeries Terminated Logic,SSTL)"。SSTL能够改进数据通过总线传输的信号完整性,这种终端设计的目的是防止在高速传输下由于信号反射导致的数据错误。
  在一个典型的内存拓扑结构中,如果使用了串联匹配电阻(RS),那么它应该放在远离DDR控制器的位置。这种方法能够节约控制器附近宝贵的电路板空间,避免布线拥塞和繁琐的引脚扇出;而且也优化了从控制器到内存芯片的信号完整性,在这些位置往往有很多地址和命令信号需要可靠地被多个内存接收。
  最普通的SSTL终端模型是一种较好的单终端和并联终端方案,如图1所示。这种方案包含使用一个串联终端电阻(Rs)从控制器到内存,以及一个并联终端电阻(RT)上拉到终端电压(VTT)。这种方法常见于商用电脑的主板上,但目前的嵌入式主板上为了获得更好的信号完整性和系统稳定性,也常常使用。RS和RT的值是信赖于具体的系统的,应该由板级仿真确定具体的值。
  5、嵌入式学习之IRQ和FIQ之间的区别
  IRQ和FIQ是ARM处理器的两种编程模式。IRQ是指中断模式,FIR是指快速中断模式。对于 FIQ 你必须尽快处理你的事情并离开这个模式。IRQ 可以被 FIQ 所中断,但 IRQ 不能中断 FIQ。为了使 FIQ 更快,所以这种模式有更多的影子寄存器。FIQ 不能调用 SWI(软件中断)。FIQ 还必须禁用中断。如果一个 FIQ 例程必须重新启用中断,则它太慢了,并应该是 IRQ 而不是 FIQ。
  对FIQ你必须进快处理中断请求,并离开这个模式。
  IRQ可以被FIQ所中断,但FIQ不能被IRQ所中断。在处理FIQ时必须要关闭中断。
  FIQ和IRQ是两种不同类型的中断,ARM为了支持这两种不同的中断,提供了对应的叫做FIQ和IRQ处理器模式(ARM有7种处理模式)。
  一般的中断控制器里我们可以配置与控制器相连的某个中断输入是FIQ还是IRQ,所以一个中断是可以指定为FIQ或者IRQ的,为了合理,要求系统更快响应,自身处理所耗时间也很短的中断设置为FIQ,否则就设置了IRQ。
  如果该中断设置为了IRQ,那么当该中断产生的时候,中断处理器通过IRQ请求线告诉ARM,ARM就知道有个IRQ中断来了,然后ARM切换到IRQ模式运行。类似的如果该中断设置为FIQ,那么当该中断产生的时候,中断处理器通过FIQ请求线告诉ARM,ARM就知道有个FIQ中断来了,然后切换到FIQ模式运行。
  简单的对比的话就是FIQ比IRQ快,为什么快呢?
  ARM的FIQ模式提供了更多的banked寄存器,r8到r14还有SPSR,而IRQ模式就没有那么多,R8,R9,R10,R11,R12对应的banked的寄存器就没有,这就意味着在ARM的IRQ模式下,中断处理程序自己要保存R8到R12这几个寄存器,然后退出中断处理时程序要恢复这几个寄存器,而FIQ模式由于这几个寄存器都有banked寄存器,模式切换时CPU自动保存这些值到banked寄存器,退出FIQ模式时自动恢复,所以这个过程FIQ比IRQ快.
  FIQ比IRQ有更高优先级,如果FIQ和IRQ同时产生,那么FIQ先处理。
  在symbian系统里,当CPU处于FIQ模式处理FIQ中断的过程中,预取指令异常,未定义指令异常,软件中断全被禁止,所有的中断被屏蔽。所以FIQ就会很快执行,不会被其他异常或者中断打断,所以它又比IRQ快了。而IRQ不一样,当ARM处理IRQ模式处理IRQ中断时,如果来了一个FIQ中断请求,那正在执行的IRQ中断处理程序会被抢断,ARM切换到FIQ模式去执行这个FIQ,所以FIQ比IRQ快多了。
  另外FIQ的入口地址是0x1c,IRQ的入口地址是0x18。

快讯首德名师课堂暨解静娴教授师资培训扬州站顺利举行2021年3月30日,由德国SAUTER钢琴制造公司,雅登音响乐器(上海)有限公司主办,扬州雅正琴行承办的首德名师课堂暨解静娴教授大师班与师资培训在扬州香格里拉酒店宴会厅盛大举行!2020年企业贷款加权平均利率4。61,未来仍有下降空间中国经济网十四五规划和2035年远景目标纲要提出,创新金融支持民营企业政策工具,健全融资增信支持体系,对民营企业信用评级发债一视同仁,降低综合融资成本。专家表示,这些措施以民营企业604只个股毛利率超50TOP50均超85截至2021年4月30日,沪深两市共有4181家上市公司发布2020年销售毛利率,整体销售毛利率为32。78。其中,604只个股毛利率50以上,TOP50均超85在进行价值投资时,我国市场化利率体系的层次走廊和品种市场化利率很专业,很难懂,似乎离我们很远。其实,它离我们很近,几乎与每个人息息相关。我们几乎每天从电视上听到央行发布7天操作逆回购信息。今天,我们要读懂它,掌握它运用它。计划经济时用过不少扫地机器人品牌,这几款扫地机器人的性价比最高我觉得清洁地面真的是一件十分累人的活你需要先用扫把扫一遍,再用拖布拖一遍,每个地方最少要重复三次以上动作,强迫症的人还会觉得哪里都没弄干净,搞得自己非常累。而家里有了智能扫地机器人海底捞上市,成全球第五大餐企!铛!!!就在今天早上9点30分,海底捞董事长张勇首席运营官杨丽娟,大力敲响了港交所的铜锣。海底捞在创立的第24个年头,终于上市了!而且市值突破1000亿港币,成为中国市值最高的上市你不是真的不会说话,而是忽略了与你对话的人很多人在交谈时,对着别人根本不喜欢的话题侃侃而谈,没完没了。在别人说话的时候,总是想表现自己,打断别人,让人反感。在与别人观点不一致时,非要揪出他的黑历史一并否定。你触犯了这些与人生活的忙碌,家里很需要这样一款小洁M2扫地机器人因为生活的忙碌,常常因为没时间处理家务卫生,导致自己的居家环境简直一塌糊涂。后面朋友就给我安利了这款SEGOO小洁M2扫地机器人,用来清洁地板卫生简直太方便了。SEGOO小洁M2扫扫地机器人应该买吗?扫地机器人好用吗?解疑答案请接收随着智能扫地机器人的不断发展与进步,已经逐渐走进了越来越多人的家庭。但是没有用过智能扫地机器人的人群也有很多,所以大家就会有所疑惑扫地机器人应该买吗?扫地机器人好用吗?扫地机器人买安利几个扫地机器人的小窍门,让你选购少踩坑随着技术的不断进步,扫地机器人的智能性能越来越完善,自主清扫地面卫生,深受众多人群的喜欢。而对于广大的消费者们来说,扫地机器人品牌型号功能等都参差不齐,很担心买回来不合适等等。下面智能小洁扫地机器人真心好用!家里可以入手一台身边很多朋友都会问我智能扫地机器人好用吗?家里入手扫地机器人是必须的吗?在网上,消费者对它的评价也是众说纷纭。其实,从实际生活上来讲,选购一款适用的扫地机器人还是很有必要的。智能扫
国办鼓励有条件的地区开展新能源汽车和绿色智能家电下乡中国政府网25日消息,国务院办公厅发布关于进一步释放消费潜力促进消费持续恢复的意见,其中提出,充分挖掘县乡消费潜力。建立完善县域统筹,以县城为中心乡镇为重点村为基础的县域商业体系。年收入10W的看过来!8款中产必备家电你还没买?又到一年装修季,大家有没有采购全屋家电或者更新家电的计划呢?选购全屋家电时,先要根据需求制定购物清单,除了一些必备家电之外,厨房可选购洗碗机净水器蒸烤箱等,客厅则可以考虑电视等大黑打造世界级中心,福建力挺新能源汽车产业发展N海都全媒体记者李琪日前,福建省政府办公厅印发福建省新能源汽车产业发展规划(20222025年)(以下简称规划)。规划明确,福建将打造三基地两集群一中心,即培育和壮大三个生产基地(福建这所高校入选中国十大面对外国的技术封锁自主创新研发!福州这个团队成功入选中国十大!这也是福建省属高校首次入选!课题组近日,由教育部科技委组织评选的2021年度中国高等学校十大科技进展揭晓,福州大学杨黄从VIVOX80系列新机的发布看中国智造的自信4月25日晚,VIVO又发新机了。是的,自4月11日发布XFoldXNote系列手机之后,时隔14天之久,VIVO又发布了全新的X数字系列的新机X80系列。抛开参数配置提升内涵等等通过代码解释什么是API,什么是SDK?这个问题说来惭愧,读书时找实习面的第一家公司,问的第一个问题就是这个。当时我没能说清楚,回去之后就上百度查。结果查了很久还是看不懂,然后就把这个问题搁置了。谁知道毕业正式工作后,又以色列专家警告德尔塔毒株可能卷土重来来源新华社以色列内盖夫本古里安大学2日发布公报说,该校研究人员主导的研究团队发现,在变异新冠病毒奥密克戎毒株加速传播之际,德尔塔毒株仍在隐秘传播。研究人员警告,待奥密克戎毒株式微之如何使用KillPkill和Killall杀死Linux进程Linux操作系统可以使用kill命令来终止进程,这样当发生一些重要更改更新时,您无需重新启动服务器,这也是为什么地球上96。4的服务器都运行Linux的原因之一。Kill命令向当指纹锁被淘汰,指静脉秒开?鹿客S50M智能锁体验为什么要换指静脉解锁?大家好,我是王小洋。虽然我早在15年就给我家大门安装了指纹锁,但是我这些年几乎一直在用密码解锁。主要原因是我的手指总是脱皮,连手机指纹解锁都用不了。后来我买了速度固然重要,但稳定性也不容忽视,铠侠XD10移动固态硬盘评测手机充电宝蓝牙耳机移动硬盘是数码人的标配4件套,我日常工作中需要经常拷贝大量的照片和视频文件,之前用的移动硬盘是两块512GB的,容量倒是够用,就是有时候资料存得零散,整理起来比较收购推特的马斯克,与扎克伯格必有一战佘宗明文连日来,全球科技圈里最热门的话题,莫过于马斯克收购推特。交易完成后,推特将成为私人控股公司,马斯克则将从特推第一大股东变为推特拥有者。这场收购在资本市场也激起不小的涟漪就在