uboot-2011.12移植到S3C2440(序五)——ARM寄存器说明

发布者:闪耀星空最新更新时间:2022-04-22 来源: eefocus关键字:uboot  移植  S3C2440  ARM寄存器 手机看文章 扫描二维码
随时随地手机看文章

参考《ARM应用系统开发详解》

ARM体系结构的寄存器R0~R15主要有三类:

@未分组寄存器R0~R7

@分组寄存器R8~R14

@PC寄存器R15


未分组寄存器

同一个寄存器名在ARM微处理器内部只有一个独立的物理寄存器与之对应。


分组寄存器

每一个物理寄存器分别与不同的处理器模式相对应。对于R8~R12来说,每个寄存器对应两个不同的物理寄存器,当使用fiq模式时,访问寄存器R8_fiq~R12_fiq;当使用除fiq模式以外的其他模式时,访问寄存器R8_usr~R12_usr。对于于R13、R14来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式与系统模式共用,另外5个物理寄存器对应于其他5种不同的运行模式。


寄存器R13

在ARM指令中常用作堆栈指针,但这只是一种习惯用法


R14

也称作子程序链接寄存器(Subroutine Link Register)或连接寄存器LR。当执行BL子程序调用指令时,R14中得到R15的备份。




R14寄存器使用举例:当用BL或BLX指令调用子程序时,将PC的当前值拷贝给R14,执行完子程序后,又将R14的值拷贝回PC,即可完成子程序的调用返回。



子程序返回指令:MOV PC, LR   或者  BX LR


将R14存入堆栈:STMFD SP!,{,LR}


子程序返回时的R14出栈:LDMFD SP!,{,PC}


程序计数器PC(R15)

PC在ARM模式下,位[1:0]为0,位[31:2]用于保存PC;在Thumb 状态下,位[0]为0,位[31:1]用于保存PC。(符合ARM微处理器字对齐规则:32位活16位指令长度,而存储是以字节为单位的)。对于ARM指令集而言,PC总是指向当前指令的下两条指令。即PC的值为当前指令的地址值加8个字节。


寄存器R16

寄存器R16用作当前程序状态寄存器CPSR


条件码标志(Condition Code Flags)

N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。在ARM状态下,大多数的指令都是有条件执行的。

N 当用两个补码表示的带符号数进行运算时,N=1 表示运算的结果为负数;N=0 表示运算的结果为正数或零;

Z  Z=1 表示运算的结果为零;Z=0 表示运算的结果为非零;

C  可以有 4 种方法设置 C 的值:

─ 加法运算(包括比较指令CMN):当运算结果产生了进位时(无符号数溢出),C=1,否则C=0。

─ 减法运算(包括比较指令CMP):当运算时产生了借位(无符号数溢出),C=0,否则C=1。

─ 对于包含移位操作的非加/减运算指令,C为移出值的最后一位。

─ 对于其他的非加/减运算指令,C的值通常不改变。

V  可以有2种方法设置V的值:

─ 对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。

─ 对于其他的非加/减运算指令,V的值通常不改变


控制位

PSR的低8位(包括I、F、T和M[4:0])称为控制位,当发生异常时这些位可以被改变。如果处理器运行特权模式,这些位可以由程序修改。


─ 中断禁止位I、F:       I=1 禁止IRQ中断;        F=1 禁止FIQ中断。


─ T标志位:该位反映处理器的运行状态。对于ARM体系结构v5及以上的版本的T系列处理器,当该位为1时,程序运行于Thumb状态,否则运行于ARM状态。对于ARM体系结构v5及以上的版本的非T系列处理器,当该位为1时,执行下一条指令为引起定义的指令异常,当该位为0时表示运行于ARM状态。


─ 运行模式位M[4:0]:M0、M1、M2、M3、M4是模式位。这些位决定了处理器的运行模式。


保留位

SPSR

每一种运行模式下又都有一个专用的物理状态寄存器,称为SPSR(Saved Program Status Register,备份的程序状态寄存器),当异常发生时,SPSR用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR。


由于用户模式和系统模式不属于异常模式,他们没有SPSR,当在这两种模式下访问SPSR,结果是未知的。


关键字:uboot  移植  S3C2440  ARM寄存器 引用地址:uboot-2011.12移植到S3C2440(序五)——ARM寄存器说明

上一篇:uboot-2011.12移植到S3C2440(三)——硬件初始化:看门狗、中断、时钟
下一篇:ARM微处理器的指令集概述(一)——ARM应用系统开发详解笔记

推荐阅读最新更新时间:2024-11-09 12:15

stm32mp157教程案例 STM32MP157移植LVGL
1 简介 LVGL(Light and Versatile Embedded Graphics Library)是一个免费开源的嵌入式图形库,界面美观, 内存占用低, 支持C和Python等开发方式。早在几年前它就表现得十分惊艳,现如今被越来越多的人喜爱。笔者之前是使用6版本在单片机上面运行,如今都已经更新到7版本多了,人往高处走,终究得跟上最新版本,于是便有了关于LVGL7版本在linux上移植的这件篇笔记。 本次教程使用的开发板是万象奥科的HD-STM32MP157-STY开发板。该开发板使用STM32MP1家族中是目前性能强劲,资源最为丰富的一款处理器STM32MP157DAA,双核ARM Cortex-A7 @800M
[单片机]
stm32mp157教程案例 STM32MP157<font color='red'>移植</font>LVGL
u-boot-2012.04移植
开发平台:x86 redhat5.5 目标平台:SMDK6410 注意: 该文档是移植完成之后的总结,所以并非按照真正的移植步骤所写, 只做参考 修改完成后运行make进行编译,把编译生成的u-boot-nand.bin烧写到nand的0-0x40000后即可切换为nand启动方式来运行 在uboot启动后手动添加环境变量 # set ipaddr 192.168.1.20 # set serverip 192.168.1.254 # set ethaddr 11:22:33:44:55:66 这些变量也可在smdk6400.h中以宏的方式定义 经测试,nand、tftp等命令都好用,如有问题请
[单片机]
学习笔记--- S3C2440 对NANDFLASH操作原理与测试代码分析
首先来看一下NANDFLASH接口: 图上看出只有数据口和控制口,没有地址线,所以它不能像网卡,SDRAM那样统一寻址,它的操作方法步骤: 1 使能芯片 2 发操作指令(读,写,擦,复位) 3 发操作地址 5 等待忙信号释放(只有读) 6 发送数据(写),接收数据(读) 7 等待忙信号,低电平忙 8 禁能芯片 这些控制信号线都是通过软件设置寄存器,然后硬件自动产生其他控制线的控制信号; 操作信号含义如下: R/B :读/忙状态线 CE : 片选 CLE :发送指令信号 ALE :发送地址信号 WE:写信号 RE:读信号 这里要注意的: 1 数据按字节传输,刚好8位
[单片机]
学习笔记--- <font color='red'>S3C2440</font> 对NANDFLASH操作原理与测试代码分析
S3C2440 IIS操作 uda134x录放音
IIS(Inter-IC Sound)由飞利浦公司开发。是一种经常使用的音频设备接口,主要用于CD、MD、MP3等设备。 s3c2440一共同拥有5个引脚用于IIS:IISDO、IISDI、IISSCLK、IISLRCK和CDCLK。前两个引脚用于数字音频信号的输出和输入,另外三个引脚都与音频信号的频率有关,可 见要用好IIS,就要把信号频率设置正确。IIS仅仅负责数字音频信号的传输。而要真正实现音频信号的放、录,还须要额外的处理芯片(在这里,我们使用的是UDA1341)。 IISSCLK为串行时钟,这条线路在 codec 芯片 uda134x 内部是BCK也就是 bit clock input。 每个时钟信号传送一位
[单片机]
<font color='red'>S3C2440</font> IIS操作 uda134x录放音
电力行业,米尔STM32MP135开发板IEC61850协议移植笔记
1. 概述 IEC61850是变电站自动化系统(SAS)中通信系统和分散能源(DER)管理的国际标准。它通过标准的实现,实现了智能变电站的工程运作标准化。使得智能变电站的工程实施变得规范、统一和透明,在电力和储能系统中应用非常广泛。 本文基于米尔MYD-YF13X开发板,在Linux系统上移植和使用开源的libIEC61850库,该库提供了用C语言编写的IEC 61850 / MMS,IEC 61850 / GOOSE和IEC 61850-9-2 /采样值通信协议的服务端和客户端库。 2. 搭建配置环境 本章节讲述libIEC61850库的编译环境配置过程。 2.1. 安装JAVA环境 IEC61850库中
[嵌入式]
电力行业,米尔STM32MP135开发板IEC61850协议<font color='red'>移植</font>笔记
U-Boot-2009-03移植笔记(第二阶段移植准备)
在U-Boot-2009-03移植笔记(从Nandflash启动二)中,我们移植好了Nandflash的读驱动,并且将U-boot从nandflash中搬运到了sdram,接下来的工作,就是沿着u-boot的执行主线,继续往下修改代码。 测试代码是否正确执行到第二阶段 U-BOOT的启动,分为两个阶段,第一个阶段是在cpu/arm920t/start.S中的汇编代码,主要工作是设置CPU工作模式、关看门狗、禁中断、初始化内存、代码搬运,初始化堆栈,清BSS段,然后跳转到start_armboot函数执行,这个start_armboot在lib_arm/board.c中,我们在这个start_armboot函数的一开始,点亮
[单片机]
编译at91sam9x5ek的dataflash专用uboot
昨天将MYS_SAM9X5的板子从nandflash启动改为dataflash启动,重新编译了bootstrap。但是uboot还是使用于nandflash的原始版本。导致开启时候会检测nand devices,若此时jp3处于断开(即禁用nand)状态,则会跳出。 于是我想出了如何编译出适用于dataflash的新uboot的方法: 首先打开配置文件 cd uboot/configs/ vim at91sam0x5ek.h 找到(大概在182行) #ifdef CONFIG_SYS_USE_DATAFLASH 这个意思是说如果打开CONFIG_SYS_USE_DATAFLASH 则下面的定义全部生效,比如
[单片机]
编译at91sam9x5ek的dataflash专用<font color='red'>uboot</font>
U-boot-2014.04移植到MINI2440(11) 第二启动阶段分析
回顾一下u-boot启动其一阶段做了哪些事: 第一:设置CPU为SVC模式 第二:关闭看门狗 第三:关中断和子中断 第四:设置时钟 第五:MMU关闭,清除cache和TLB,使能地址对齐检查等 第六:初始化SDRAM 在我前面的分析里,第一阶段的最后,通过bl _main,跳到了arch/arm/lib/crt0.S里面去了,从这里开始时第二阶段的入口,下面从这里开始分析。 文件:crt0.S 先看看该文件对_main的描述,在第18行,有一个_main execution sequence is:下面有五步,其实就是对_main的执行流程的一个介绍,我翻译一下: 1
[单片机]

推荐帖子

在estore上订购TMDX5535EZDSP要等12月15日才能发货?
TMDX5535EZDSP我在estore上订购成功了,但是过了半个月都没有反应啊orderstate还是processing在网站上的客户留言页面询问了两次也没有结果一般这是什么情况啊留意到Est.ShipDate是12/15/2011,不会真要等到2个月之后才能发货吧?坑爹啊。。。OrderDate:10/14/20119:13PMOrderTotal:$55.00Balance:$55.00Stat
icyrain DSP 与 ARM 处理器
Multisim12电压转电流的实现
最近初步学习了Multisim这个软件,下面给大家简单讲讲使用Multisim实现输入0~5V电压转换成4~20mA电流的简单操作。因为要求实现的区间内的不定值,所以需要制作一个同比例放大器。当输入0V时,没有电流输出,所以需要添加一条辅助电路实现我们的目标。列出两个二元一次方程:①0.02x-y=5,②0.004x-y=0,解得x=312.5,即同比例放大倍数为312.5倍,又因为0.004乘以312.5等于1.2
电鱼电子工程师 模拟电子
基于CAN总线的汽车内部网络系统研究
本文研究汽车局域网CAN总线在汽车中的具体应用,实现采用Motorola公司16位单片机MC9S12DP256为核心的CAN节点设计。根据汽车内部CAN网络速率的不同,给出不同速率网络之间实现通信的网关软硬件设计。该系统具有结构简单、可靠性高等特点,具有广阔的应用前景。0、引言随着车用电气设备越来越多,从发动机控制到传动系统控制,从行驶、制动、转向系统控制到安全保证系统及仪表报警系统,从电源管理到为提高舒适性而作的各种努力,使汽车电气系统形成一个复杂的大系统,而且这一系统
frozenviolet 汽车电子
西门子超声波物位计提供PROFIBUS通讯
PROFIBUS作为一种标准的现场总线通讯方式,被越来越多的客户和供应商接受和采用。现在西门子高精度的一体化超声波物位计SITRANSProbeLU也以可提供PROFIBUSPA通讯了。同时,它也可提供HART通讯方式。用户可以通过手操器和SIMATICPDM软件对仪表进行调试。西门子的雷达、超声波物位计和射频导纳物位点式物位计均可选配PROFIBUSPA通讯。SITRANSProbeLU超声波物位计是西门子去年推出产品,做为超声波一体化测量的范本,
superwomen 工控电子
【Sensor Tag】找些蓝牙4.0的资料,拿上来分享一下
收到SensorTag模块的时候,觉得很好,终于有东西玩了。但是在看了一些说明和资料后,倍感伤心,这款SensorTag为单模,不向下兼容,手机只支持蓝牙4.0的极少数款型,让我这样还用NOKIA非智能机的屌丝情何以堪。然后就是调试工具还得自备,这很不合理啊!!!但是这仍然阻挡不住屌丝学习蓝牙4.0的脚步。虽然还不知道该从哪开始下手,但是找了些资料,拿上来分享一下。【SensorTag】找些蓝牙4.0的资料,拿上来分享一下收集的挺多的,谢谢分享!
HHX 模拟与混合信号
抄的运放电路,有个元件的功能看不懂
这两个个二极管有什么作用,能不要嘛抄的运放电路,有个元件的功能看不懂看不出光耦光电管侧电流通路。无论如何,光耦也不可能在负载电阻超过1兆欧情况下工作。R24、R25和R30、R31都是两个相同的电阻串联,也看不出有什么用处。怀疑电路抄错。 图画的不标准,这是日本人的电路,光耦负载电阻是4.7k,那个0.95v相当于地了,不知道为什么日本人把电路的地提升到了0.95v 光耦两侧共用同一个电源,我也不知道这有什么用处。和R24、R25和R30、R31都是两个相同的
王恒昌 模拟电子
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved