
ARM
bytxl
归零。
得意之时谨记,一半命运还掌握在上帝手里;失意之时须知,一半命运还掌握在自己手里。
不怕死,不找死。
展开
-
交叉编译: --host --build --target到底什么意思?
老是在做交叉编译,其实有时候对这三个东西的理解并不是那么清楚 从交叉工具链的情况来看,可以总结如下--build= 谁在这里编译? 意思说你目前的编译动作在哪里跑的 ? 如果是编译一个arm工具链,虽然工具链为为arm弄的,但是构建工具链的时候是在主机上进行的。所以 --build=i686-pc-linux-gnu--host= 目前编译出来的程序在哪里跑 ? 所转载 2015-01-23 18:20:00 · 2150 阅读 · 0 评论 -
ARM指令集
ARM指令的基本格式ARM指令的基本格式为: {} {S} , { , }其中,内的项是必需的,{ }内的项是可选的。例:实际指令语法格式为: ADDEQS R0,R1,R2; 该指令的编码格式为: (1)Opcode项Opcode是指令助记符,即操作码,说明指令需要执行的操作,在指令中是必需的。原创 2015-11-11 09:08:03 · 1291 阅读 · 0 评论 -
cache为什么分为i-cache和d-cache以及Cache的层次设计
从两个方面来回答: 一方面是cache的行为。Icache大多都是顺序取指,碰到分支指令也会跳转,而Dcache访问的模式变化比较大.也就是前者所说的pattern的问题.指令只有读和refill没有写,而数据有读也有写.最重要的是冯氏的结构是指令和数据分离.I和D在一起只有相互干扰. 另一个方面就是,物理设计上考虑:一个union的cache,同时需要数据和指令的访问,端口上转载 2015-12-12 15:53:08 · 32701 阅读 · 4 评论 -
cache 是什么意思 它包括的L1,L2,L3分别是什么东西
CPU缓存 缓存大小也是CPU的重要指标之一,而且缓存的结构和大小对CPU速度的影响非常大,CPU内缓存的运行频率极高,一般是和处理器同频运作,工作效率远远大于系统内存和硬盘。实际工作时,CPU往往需要重复读取同样的数据块,而缓存容量的增大,可以大幅度提升CPU内部读取数据的命中率,而不用再到内存或者硬盘上寻找,以此提高系统性能。但是由于CPU芯片面积和成本的因素来考虑,缓存都很小。转载 2015-12-12 16:24:44 · 3696 阅读 · 0 评论 -
初步探讨ARM调试技术
真正要搞懂一种机制,就需要至少搞清楚一个实际的场景,也就是一个宏观的过程。而倘若一个过程是由程序驱动的,那么最好的途径就是阅读它的源代码了。(毛德操、胡希明) 自从深入到bootloader的开发中,遇到很多困难。而这些困难,大都是因为基础技术储备不足导致的。有时候也会后悔,本科的时候没有努力学习。其实 静下心来想一下,根本原因并不在于此。我想,主要是因为自己并没有确定的方转载 2015-12-17 12:02:11 · 1057 阅读 · 0 评论 -
OpenOCD介绍以及上手
Versaloon支持AVR和AVR32的方式是模仿JTAGICE mkII,所以使用上相对简单很多,只是使用官方的开发环境即可。但Versaloon对ARM的支持是通过OpenOCD来实现,OpenOCD目前在国内还是非常少使用的(可能中国人不喜欢开源的东西吧),所以介绍一些OpenOCD的使用还是非常有必要的。【介绍】OpenOCD是一个开源的JTAG上位机程序,主页在http:/转载 2015-12-03 15:06:10 · 13930 阅读 · 0 评论 -
一套完整的ARM交叉编译环境的搭建过程——不使用现成的工具链
在网上查看了不少资料,参考别人的,在加上一些自己遇到的问题结合的,内容直接转载过来了,给和我一样,刚入门ARM的新手的。虽然网上很多现成的,但是自己动手做做,还是很好的。编译环境:内核名称:Linux内核发行版: 3.3.0-4.fc16.x86_64 内核版本:#1 SMP Tue Mar 20 18:05:40 UTC 2012 硬件架构名称转载 2015-12-03 14:18:40 · 2550 阅读 · 0 评论 -
ARM使用术语清除(flush)和清理(clean)表示对cache的两种基本操作
清除flush cache的意思是清除cache中存储的全部数据。对处理器而言,清除操作只要清零相应cache行的有效位即可。当存储器配置上有变化时,整体或部分cache可能需要进行清除操作。有时也用术语作废(invalidate)来代替术语“清除”。然而,对于采用写回策略的D-cache,就需要使用清理(clean)操作。 清理clean cache的意思是把脏的(即被改写过的)cac转载 2015-12-19 18:16:18 · 13702 阅读 · 0 评论 -
ARM寄存器
一、ARM工作状态下的寄存器组织ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个位状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可以访问的,取决ARM处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14~R0、程序计数器PC(即R15)、一个状态寄存器都是可访问的。通用寄存器通用寄存器包括R0~R15,可以分为3类:(1)未分组寄存原创 2015-10-30 09:30:12 · 2828 阅读 · 0 评论 -
汇编跳转指令B、BL、BX、BLX 和 BXJ的区别
跳转指令用于实现程序流程的跳转,在 ARM 程序中有两种方法可以实现程序流程的跳转:(1) 使用专门的跳转指令。(2) 直接向程序计数器 PC 写入跳转地址值。通过向程序计数器 PC 写入跳转地址值,可以实现在 4GB 的地址空间中的任意跳转,在跳转之前结合使用MOV LR , PC等类似指令,可以保存将来的返回地址值,从而实现在 4GB 连续的线性地址原创 2015-11-17 09:27:05 · 66144 阅读 · 3 评论 -
ARM处理器的2种工作状态和7种工作模式
两种工作状态1、ARM状态:32位,ARM状态执行字对齐的32位ARM指令。2、Thumb状态,16位,执行半字对齐的16位3、用Bx Rn指令来进行两种状态的切换: 其中Bx是跳转指令,而Rn是寄存器(1个字,32位),如果Rn的位0为1,则进入Thumb状态;如果Rn的位为0,这进入ARM状态。(原 因:ARM指令的后两位始终为0,没有用,而Thumb原创 2015-11-16 11:43:28 · 12457 阅读 · 0 评论 -
ARM MISP区别
问题:通常说ARM架构和MIPS架构,根本点究竟在哪一点? 回答:MIPS是第一个RISC microprocessor,ARM是CISC microprocessor,这是早期的分别。 问题:在RISC和CISC,具体指什么呢?能否深入简出的说明一下?risc = 精简指令集cisc=复杂指令集risc, 用很少的指令集做完转载 2014-12-15 14:32:14 · 1526 阅读 · 0 评论 -
GNU风格 ARM汇编语法指南
汇编源程序一般用于系统最基本的初始化:初始化堆栈指针、设置页表、操作 ARM的协处理器等。这些初始化工作完成后就可以跳转到C代码main函数中执行。1、GNU汇编语言语句格式任何Linux汇编行都是如下结构:[:][instruction or directive or pseudo-instruction>} @commentlinstruction为指令ldir转载 2015-11-06 09:56:15 · 575 阅读 · 0 评论 -
ARM指令中STM和LDM
STM和LDM的主要用途是现场保护、数据复制、参数传递等,其模式有8种,如下:注:前面4种用于数据块的传输,后面4种用于堆栈操作(1)IA 每次传送后地址加4(2)IB 每次传送前地址加4(3)DA 每次传送后地址减4(4)DB 每次传送前地址减4(5)FD 满递减堆栈(6)FA 满递增堆栈(7)ED 空递减堆栈转载 2015-11-02 09:10:13 · 1933 阅读 · 0 评论 -
ARM7、ARM9和ARM11的区别
1. 时钟频率的提高虽然内核架构相同,但ARM7处理器采用3级流水线的冯·诺伊曼结构;而ARM9采用5级流水线的哈佛结构,ARM11为8级流水线哈弗结构(从arm9开始都采用了哈弗结构)。增加的流水线设计提高了时钟频率和并行处理能力。5级流水线能够将每一个指令处理分配到5个时钟周期内,在每一个时钟周期内同时有5个指令在执行。在常用的芯片生产工艺 下,ARM7一般运行在100MHz左右,而ARM转载 2015-10-24 17:57:32 · 5314 阅读 · 0 评论 -
ARM LDR/STR指令学习
S3C2440A datasheet上关于这两条指令的说明如下: SINGLE DATA TRANSFER (LDR, STR), The single data transfer instructions are used to load or store single bytes or words of data. 简单的理解就是数据的传送/存储指令。 接下来是转载 2015-10-29 19:41:57 · 3182 阅读 · 0 评论 -
ARM详细指令集
算术和逻辑指令ADC : 带进位的加法(Addition with Carry)ADC{条件}{S} , , dest = op_1 + op_2 + carryADC 将把两个操作数加起来,并把结果放置到目的寄存器中。它使用一个进位标志位,这样就可以做比 32 位大的加法。下列例子将加两个 128 位的数。128 位结果:转载 2015-10-30 08:41:41 · 759 阅读 · 0 评论 -
ARM裸机开发环境搭建
1. 安装Uboot到开发板“Hit any key to stop autoboot"使ARM不进入操作系统2. Jlink软件安装使用的是402d版本,对6410稳定。3. Jlink与ok6410连接转接板与开发板的缺口要一致,打开J-link GDB Server,检查:1)J-link:connected2)Target:ARM11转载 2015-10-30 08:38:12 · 654 阅读 · 0 评论 -
ARM寻址方式
所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。ARM处理器的寻址方式目前ARM处理器支持9种寻址方式,分别是立即数寻址、寄存器寻址、寄存器偏移寻址、寄存器间接寻址、基址变址寻址、多寄存器寻址、相对寻址、堆栈寻址和块拷贝寻址。1. 立即数寻址也叫立即寻址,是一种特殊的寻址方式,操作数本身包含在指令中,只要取出指令也就取到了操作数。这个操作数叫做立转载 2015-10-30 08:35:49 · 788 阅读 · 0 评论 -
IRQ和FIQ中断的区别
FIQ和IRQ是两种不同类型的中断,ARM为了支持这两种不同的中断,提供了对应的叫做FIQ和IRQ处理器模式(ARM有7种处理模式)。一般的中断控制器里我们可以配置与控制器相连的某个中断输入是FIQ还是IRQ,所以一个中断是可以指定为FIQ或者IRQ的,为了合理,要求系统更快响应,自身处理所耗时间也很短的中断设置为FIQ,否则就设置了IRQ。如果该中断设置为了IRQ,那么当转载 2015-11-16 17:13:20 · 1659 阅读 · 0 评论 -
交叉编译器简介以及ARM交叉编译器arm-linux-gcc
(一)交叉编译器简介 在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,这个编译过程就叫交叉编译.简单地说,就是在一个平台上生成另一个平台上的可执行代码.(二)体系结构与操作系统(1)常见的体系结构有ARM结构、x86结构等.(2)常见的操作系统有linux,windows等.(3)同一个体系结构可以运行不同操作系统,如x86上可以运行Linux原创 2015-12-04 10:28:59 · 6637 阅读 · 0 评论