ARM
sukhoi27smk
学习是为了探索这个世界的本质
展开
-
S3C6410启动模式介绍
目前的ARM处理器都支持多种启动模式,S3C6410和以前的Samsung的ARM处理器一样,通过外部管脚OM[4:0]的拉高拉低来决定是从哪个存储设备上启动。我认为S3C6410的User Manual并没有说的很清楚,所以我在最开始使用的时候,也对其启动模式有一些误解,下面就我个人的理解,介绍一下S3C6410的启动。 先读一下S3C6410 User Manual的第3章 System转载 2012-11-18 12:50:45 · 471 阅读 · 0 评论 -
ARM中的ldr指令与adr、ldr伪指令之间的区别
ARM汇编语言中有ldr指令和ldr、adr伪指令,他们都可以将标号表达式作为操作数。区别如下:ldr指令和adr、ldr伪指令的区别:ldr指令属于load-store指令,用于读取标号地址中的值;adr、ldr伪指令用于获取标号的地址。adr和ldr伪指令的区别:adr是获取相对PC的地址,与程序当前运行的位置相关,是小范围的地址读取伪指令;ldr是获取绝对地址,绝对地址是在l转载 2013-05-10 15:43:13 · 1327 阅读 · 0 评论 -
ARM汇编中的ldr和adr的区别及其在uboot中相关源码的分析
ARM汇编有ldr指令以及ldr、adr伪指令,它们都可以将标号表达式作为操作数,下面通过分析一段代码以及对应的反汇编结果来说明它们的区别。ldr r0, _start adr r0, _start ldr r0, =_start _start: b _start 编译的时候设置 RO 为 0x30000000,下面是反汇编的结果:0x00000000:转载 2013-05-10 15:33:57 · 687 阅读 · 0 评论 -
ARM指令 LDR 和 ADR的一些区别
LDR 是ARM中的指令,也是伪指令。当用 LDR r, =imd // r 为寄存器, imd为立即数LDR 是一条伪指令。编译器会根据 立即数的大小,决定用 ldr 指令或者是mov或mvn指令。当imd能用mov或者mvn操作时,就将它翻译成一条mov或mvn指令。当imd大于mov或mvn能够操作的数时,编译器会将imd存在一个内存单元中,然后再用一条ldr指令加转载 2013-05-10 15:07:37 · 919 阅读 · 0 评论 -
ARM汇编ADR,LDR等伪指令
arm中LDR伪指令与LDR加载指令LDR伪指令的形式是“LDR Rn,=expr”。下面举一个例子来说明它的用法。 COUNT EQU 0x40003100 …… LDR R1,=COUNT MOV R0,#0 STR R0,[R1] COUNT是我们定义的一个变量,地址为0x40003100.这中定义方法在汇编语言中是很常见的,如果使用过单片机的话,应该都熟悉这种用法。 LDR R1,=C转载 2013-05-02 15:35:17 · 1097 阅读 · 0 评论 -
ldr和adr在使用标号表达式作为操作数的区别
ARM汇编有ldr指令以及ldr、adr伪指令,他门都可以将标号表达式作为操作数,下面通过分析一段代码以及对应的反汇编结果来说明它们的区别。 ldr r0, _start adr r0, _start ldr r0, =_start_start: b _start 编转载 2013-05-02 15:17:19 · 734 阅读 · 0 评论 -
adr和ldr的区别
其实这两个都是伪指令:adr是小范围的地址读取伪指令,ldr是大范围的读取地址伪指令。可实际上adr是将基于PC相对偏移的地址值或基于寄存器相对地址值读取的为指令,而ldr用于加载32为立即数或一个地址到指定的寄存器中。到这儿就会看到其中的区别了。如果在程序中想加载某个函数或者某个在联接时候指定的地址时请使用adr,例如在lds中需要重新定位的地址。当加载32为的立即数或外部地址时请用ldr。转载 2013-05-02 15:04:32 · 824 阅读 · 0 评论 -
ARM uboot中的.lds
对于.lds文件,它定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。虽然现在我还没怎么用它,但感觉还是挺重要的,有必要了解一下。先看一下GNU官方网站上对.lds文件形式的完整描述:SECTIONS {...secname start BLOCK(align) (NOLOAD) : AT ( ldadr ) { contents转载 2013-05-02 14:53:53 · 730 阅读 · 0 评论 -
LDR 、ADR介绍
请教: (1)LDR R1,= 0x12345678 ;加载 32 位立即数 LDR R1,0x12345678 有什么不相同啊? 一般在什么情况下用 LDR R1,= 0x12345678 ? 在什么情况下用 LDR R1,0x12345678 ? (2)LDR R0,=LED_TAB ;加载标号地址 LDR R0,LED_TA转载 2013-05-02 16:06:12 · 1115 阅读 · 0 评论 -
ldr
首先要判断我们用的是ldr arm指令还是伪指令。 当我们用的是arm指令时,它的作用不是向寄存器里加载立即数,而是将某个地址里的内容加载到寄存器。而伪指令ldr的作用就是向寄存器里加载立即数。 (1) ldr伪指令 ldr伪指令的格式是 ldr Rn, =expr 其中,expr是要加载到Rn中的内容,一般可以是立即数或者label。 如果expr可以用8转载 2013-05-02 15:16:03 · 789 阅读 · 0 评论 -
arm B和BL指令浅析
B或BL指令引起处理器转移到“子程序名”处开始执行。两者的不同之处在于BL指令在转移到子程序执行之前,将其下一条指令的地址拷贝到R14(LR,链接寄存器)。由于BL指令保存了下条指令的地址,因此使用指令“MOV PC ,LR”即可实现子程序的返回。而B指令则无法实现子程序的返回,只能实现单纯的跳转。用户在编程的时候,可根据具体应用选用合适的子程序调用语句。 AREA Init,转载 2013-05-02 13:22:26 · 877 阅读 · 0 评论 -
SRAM和SDRAM的区别
DRAM,动态随机存取存储器,需要不断的刷新,才能保存数据。而且是行列地址复用的,许多都有页模式。SRAM,静态的随机存取存储器,加电情况下,不需要刷新,数据不会丢失,而且,一般不是行列地址复用的。 SDRAM,同步的DRAM,即数据的读写需要时钟来同步。 DRAM和SDRAM由于实现工艺问题,容量较SRAM大。但是读写速度不如SRAM,但是现在,SDRAM的速度也已经很快了,时钟好像转载 2013-04-27 17:42:49 · 29079 阅读 · 3 评论 -
ARMV4,ARMV4T,ARMV4I的意义
ARMV4,ARMV4T,ARMV4I以上表示的是指令的版本也就是三种指令集:ARMv4 -> 它只支持 32 位 ARMv4 指令ARMv4T ->“T”代表 Thumb(16 位指令模式)ARMv4I ->“I”代表交互作用 (Interworking)。它允许 32 位指令和 16 位指令共存一些经常出现的CPU支持的指令类型:XScale->支持ARMv转载 2012-11-29 00:49:13 · 2528 阅读 · 0 评论 -
Nand Flash原理分析与编程
NAND Flash 在嵌入式系统中的地位与PC机上的硬盘是类似的。用于保存系统运行所必需的操作系统,应用程序,用户数据,运行过程中产生的各类数据,系统掉电后数据不会护丢失。现在的Flash主要有两咱,一种是NAND Flash 一种是Nor Flash。NOR Flash是由Intel公司于1988年发明的,用以代替EERPOM,NAND Flash由Toshiba 公司在1989年发明转载 2012-11-17 16:58:41 · 652 阅读 · 0 评论 -
ARM9之NAND FLASH总结
/*author----->Armking*//*data----->2008年9月2*//*ps:本人总结,备于日后查阅,如若转载,请注明出处*//*QQ:382750150*/写于篇头:终于又开始接着学习了,只是不知道为什么JTAG又连不上目标板了,如果谁不小心看到了此文章,又凑巧知道了是什么原因,请留言赐教,不胜感激。关于NAND FLASH很详细的内容,肯定无需在此转载 2012-11-17 17:05:40 · 969 阅读 · 0 评论 -
ARM汇编ADR,LDR等伪指令
arm中LDR伪指令与LDR加载指令LDR伪指令的形式是“LDR Rn,=expr”。下面举一个例子来说明它的用法。 COUNT EQU 0x40003100 …… LDR R1,=COUNT MOV R0,#0 STR R0,[R1] COUNT是我们定义的一个变量,地址为0x40003100.这中定义方法在汇编语言中是很常见的,如果使用过单片机的话,应该都熟悉这种用法。 LDR R1,=C转载 2013-05-10 15:49:11 · 966 阅读 · 0 评论