正在加载图片...
ARM920T协处理器 ·CDP指令用于ARM处理器通知ARM协处 ·CP14调试通信通道协处理器 理器执行特定的操作 -运行于ARM内核上的应用程序与运行于主机 ·格式: 上的调试器之间的通信 ·CP15系统控制协处理器 协处理器操作码2 -配置和控制caches、MMU、保护系统、配置 时钟模式(在bootloaderl时钟初始化用到) ·Cache清空 指令示例: ·MMU初始化、enable CDPP3,2,C12,C10,C3,4:该指令完成协处理器P3的初始化 ·TLB清空 ·。。。 .edu.cn 37m loousic.edu.cn 协处理器CP15 Cryredeatie ARM伪汇编指令ADR Urpreseshe ·配置和控制caches、 ADR伪指本特基于PC相对偏移的地址值或暴于寺存三相对偏移的地址 值谈取列奇存异中。在汇编编译器编革源狂序财,ADR伪指◆被编泽器甚 MMU、保护系统、配 换成一豪会透的指本。通者,编年三用一条ADD指本或SUB指本来来观试 置时钟模式( ADR伪指伞的动能,者不能用一条尖现,则产生话,编年夫败。 Rut can F自e3a。 bootloader在时钟初始 应用乐创【源班序): 编年后的反汇编代码: 化用到) 。。。 。 pe Cache lacklews。 ADR RO,Delay 0x20 ADD r1,pc,#0x3c Qxn小物n TII locldgus 卫nwg Delay MOV R0,r14 0x64 MOV x0,r14 LrprSrbie … e configiw的 使用伪稻伞桥程序标号 Delay的地址存入R0 ADR伤指伞被汇编成一条指令 .edu.cn 40m ARM伪汇编指令LDR ARM伪汇编指令NOP 空查集禁福梵高急帝到的去外超出或指令能操作的施调时。 NOP伪指令在汇捣时将会被代替成ARM中的空标作,比 注意:这样使用的话,代码的运行地址必须Lik时固定,不能移动. 如可能是“MOVR0,R0”指令等。 LDR r1,=Oxfff loads Oxfff into r1 NOP可用于延对标作。 LDR r1,[pc,offset_to_litpooll “ov R1,#0x1234 1itpool DCD Oxfff Delay LDR r2,=place ;loads the address of "place"into r2 NOP :空插作 -> LDR r2,[pc,offset_to_litpooll NOP NOP litpool DCD place SUBS R1,R1,01 :语环火教减一 下面的代码应该用MOV,写成LDR时被汇编器自动转回MOV语句 BNE Delay :知果环有束,Delay继 LDR :3,=0xff0 ;loads 0xtfo into r3 ;->MoVr3,#0xrt0 MOV PC,LR ;子程序嘎凹 4177 lbooustc.edu.cn 4277• CDP 指令用于 ARM 处理器通知 ARM 协处 理器执行特定的操作 • 格式: llxx@ustc.edu.cn 37/77 CDP {条件} 协处理器编码,协处理器操作码 1,目的寄存器,源寄存器 1, 源寄存器 2,协处理器操作码 2; 其中协处理器操作码 1 和协处理器操作码 2 为协处理器将要执行的操作,目 的寄存器和源寄存器均为协处理器的寄存器,指令不涉及 ARM 处理器的寄存 器和存储器。 指令示例: CDP P3,2,C12,C10,C3,4 ;该指令完成协处理器P3的初始化 ARM920T协处理器 • CP14 调试通信通道协处理器 – 运行于 ARM 内核上的应用程序与运行于主机 上的调试器之间的通信 • CP15 系统控制协处理器 – 配置和控制caches、MMU、保护系统、配置 时钟模式(在bootloader时钟初始化用到) • Cache清空 • MMU初始化、enable • TLB清空 • 。。。 llxx@ustc.edu.cn 38/77 协处理器CP15 • 配置和控制caches、 MMU、保护系统、配 置时钟模式( bootloader 在时钟初始 化用到) llxx@ustc.edu.cn 39/77 llxx@ustc.edu.cn 40/77 ARM伪汇编指令ADR ADR伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址 值读取到寄存器中。在汇编编译器编译源程序时,ADR伪指令被编译器替 换成一条合适的指令。通常,编译器用一条ADD指令或SUB指令来实现该 ADR伪指令的功能,若不能用一条指令实现,则产生错误,编译失败。 ... ADR R0,Delay ... Delay MOV R0,r14 ... 应用示例(源程序): ... 0x20 ADD r1,pc,#0x3c ... ... 0x64 MOV r0,r14 ... 编译后的反汇编代码: 使用伪指令将程序标号 Delay的地址存入R0 ADR伪指令被汇编成一条指令 llxx@ustc.edu.cn 41/77 ARM伪汇编指令LDR 向寄存器加载立即数:当立即数的大小超出MOV或MVN指令能操作的范围时, 生成额外的代码(利用pc得到立即数)。 注意:这样使用的话,代码的运行地址必须在Link时固定,不能移动。 LDR r1,=0xfff ; loads 0xfff into r1 ; => LDR r1,[pc,offset_to_litpool] ; ... ; litpool DCD 0xfff LDR r2,=place ; loads the address of “place” into r2 ; ; => LDR r2,[pc,offset_to_litpool] ; ... ; litpool DCD place 下面的代码应该用MOV,写成LDR时被汇编器自动转回MOV语句 LDR r3,=0xff0 ; loads 0xff0 into r3 ; => MOV r3,#0xff0 llxx@ustc.edu.cn 42/77 NOP伪指令在汇编时将会被代替成ARM中的空操作,比 如可能是“MOV R0,R0”指令等。 NOP可用于延时操作。 mov R1,#0x1234 Delay NOP ;空操作 NOP NOP SUBS R1,R1,#1 ;循环次数减一 BNE Delay ;如果循环没有结束,跳转Delay继续 MOV PC,LR ;子程序返回 ARM伪汇编指令NOP
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有