![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式/ARM基础
文章平均质量分 66
liufei_learning
这个作者很懒,什么都没留下…
展开
-
arm堆栈操作
arm堆栈的组织结构是 满栈降的形式,满栈即sp是要停留在最后一个进栈元素,降:就是堆栈的增长方向是从高地址向低地址发展。 arm对于堆栈的操作一般采用 LDMFD(pop)和STMFD (push) 两个命令。 指令STMFD和LDMFD分析: 根据ATPCS规则,我们一般使用转载 2011-07-20 11:13:55 · 1175 阅读 · 0 评论 -
ARM920T--时钟模式
ARM920T clocking The ARM920T has two functional clock inputs, BCLK and FCLK. Internally, the ARM920T is clocked by GCLK,which can be seen on the CPCLK output as shown in Figure 5-1.GCLK can be source翻译 2011-07-02 14:10:34 · 1192 阅读 · 0 评论 -
ARMLink scatter file(1)
一 概述 Scatter file (分散加载描述文件)用于armlink的输入参数,他指定映像文件内部各区域的download与运行时位置。Armlink将会根据scatter file生成一些区域相关的符号,他们是全局的供用户建立运行时环境时使用。 (注意:当使用了scatter file 时将不会生成以下符号:Image$$RW$$Base,Image$$RW$$Lim转载 2011-06-30 10:34:00 · 940 阅读 · 0 评论 -
ARMLink使用方法详解
一、基本术语在介绍armlink的使用方法之前,先介绍要涉及到的一些术语。 1) 映像文件(image): 是指一个可执行文件,在执行的时候被加载到处理器中。一个映像文件有多个线程。它是ELF(Executable and linking format)格式的。 段(Section):描述映像文件的代码或数据块。 2) RO 是Read-only的简写形转载 2011-06-30 10:33:00 · 3109 阅读 · 0 评论 -
ARM汇编----IMPORT
IMPORT伪操作告诉编译器当前的符号不是在本源文件中定义的,而是在其他源文件中定义的,在本源文件中可能引用该符号,而且不论本源文件是否实际引用该符号,该符号都将被加入到本源文件的符号表中。语法格式:IMPORT symbol{[WEAK]}其中,symbol为声明的符号的名称。它是区分大小写的。[WEAK]指定这个选项后,如果symbol在所有的源文件中都没有被定义,编译器转载 2011-06-30 10:28:00 · 4851 阅读 · 0 评论 -
ARMLink scatter file(2)
分散加载文件事例ADS下的分散加载文件应用实例load_region_name start_address | " "offset [attributes] [max_size]{execution_region_name start_address | " "offset [attributes][max_size]{module_select_pattern ["转载 2011-06-30 10:46:00 · 862 阅读 · 0 评论 -
ARM指令里几个特殊符号
总结一下ARM指令里几个特殊符号的意义特殊符号 对应指令 含义 = DCB 分配一片连续的字节存储单元并用指定的数据初始化 & DCD 分配一片连续的字存储单元并用指定的数据初始化 % SPACE转载 2011-06-30 10:27:00 · 933 阅读 · 0 评论 -
嵌入式Linux操作系统学习规划
<br /><br />嵌入式Linux操作系统学习规划<br />ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: <br />(1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9) <br />(2) 必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定) <br />(3) 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。 <br />从事嵌入式软件开发的好处是: <br />(1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以转载 2011-03-06 23:31:00 · 656 阅读 · 0 评论 -
NAND和NOR flash的区别
<br /><br />NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR<br />flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND<br />flash结构,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。但是经过了十多年之后,仍然有相当多的硬件工程师分不清NOR<br />和NAND闪存。<br /> <br />相"flash存储器"经常可以与相"NOR存储器"互换使用。转载 2011-03-07 09:47:00 · 566 阅读 · 0 评论 -
ARM程序组成
一般的可执行程序都包括代码段、数据段。也可以简单的看作由两部分组成:RO段和RW段。RO段一般包括代码段和一些常量,在运行的时候是只读的。而RW段包括一些全局变量和静态变量,在运行的时候是可以改变的(读写)。如果有部分全局变量被初始化为零,则RW段里还包括了ZI段。RO: Read Only 代码段RW:Read Write 已初始化的全局变量ZI: Zero Ini转载 2011-06-30 10:29:00 · 678 阅读 · 0 评论 -
关于|Image$$RO$$Limit||Image$$RW$$Base||Image$$ZI$$Ba|
对于刚学习ARM的人来说,如果分析它的启动代码,往往不明白下面几个变量的含义:|Image$$RO$$Limit|、|Image$$RW$$Base|、|Image$$ZI$$Base|。首先申明我使用的调试软件为ADS1.2,当我们把程序编写好以后,就要进行编译和链接了,在ADS1.2中选择MAKE按钮,会出现一个Errors and Warnings 的对话框,在该栏中显示编译和转载 2011-06-30 10:30:00 · 1483 阅读 · 0 评论 -
ADS1.2连接器使用手册 有|Image$$RO$$Limit|等说明
3.1 指定映像结构一个映像的结构可由以下方面进行定义:l 它的连续区域和输出段的数目。l 当映像被装载时这些区域和段在内存中的位置。l 当映像被执行时这些区域和段在内存中的位置。3.1.1 为目标文件和映像文件建立块一个映像也是一个被存储的可执行文件,由映像,区域,输出段和输入段的层级形式构成。转载 2011-06-30 10:31:00 · 1327 阅读 · 0 评论 -
arm 初始化代码中的{CONFIG}
ARM9 SC2440和2410得初始化代码中有下面一个定义:GBLL THUMBCODE [ {CONFIG} = 16THUMBCODE SETL {TRUE} CODE32 |THUMBCODE SETL {FALSE} ]网上的朋友有转载 2011-07-20 10:10:32 · 794 阅读 · 0 评论 -
ARM 伪指令详解
4.1 ARM汇编器所支持的伪指令在ARM汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操作。伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪指令仅在汇编过程中起作转载 2011-07-19 20:25:31 · 1185 阅读 · 0 评论 -
常用的ARM汇编指令
在嵌入式开发中,汇编程序往往应用在非常关键的地方,比如系统启动时的初始化,进出中断时的环境保存、恢复,对性能要求非常苛刻的函数等。1. 相对跳转指令:b、bl 这两条指令的不同之处在于bl指令除了跳转之外,还将返回地址(bl的下一条指令的地址)保存在lr寄存器中。转载 2011-07-20 10:41:38 · 1412 阅读 · 0 评论 -
ARM汇编----GBLA,GBLL及GBLS
GBLA,GBLL及GBLS伪操作用于声明一个ARM程序中的全局变量,并将其初始化。GBLA伪操作声明一个全局的算术变量,并将其初始化为0。GBLL伪操作声明一个全局的逻辑变量,并将其初始化成{FALSE}。GBLS伪操作声明一个全局的串变量,并将其初始化为空串""。 语法格式:转载 2011-07-19 20:14:34 · 12524 阅读 · 0 评论 -
ARM汇编----伪指令LTORG
LTORG用于声明一个数据缓冲池,(也称为文字池)的开始。在使用伪指令LDR时,常常需要在适当的地方加入LTORG声明数据缓冲池,LDR加载的数据暂时放于数据缓冲池。语法 LTORG使用说明:当程序中使用LDR之类的指令时,数据缓冲池的使用可能越界。为防止越界发生,可使用LTON转载 2011-07-22 00:05:04 · 1115 阅读 · 0 评论 -
S3C2440--时钟详解
S3C2410 CPU默认的工作主频为12MHz,使用PLL电路可以产生更高的主频供CPU及外围器件使用。S3C2410有两个PLL:MPLL和UPLL,UPLL专用与USB设备。MPLL用于CPU及其他外围器件。通过MPLL会产生三个部分的时钟频率:FCLK转载 2011-07-04 21:00:38 · 1142 阅读 · 0 评论 -
S3C2440-时钟计算
S3C2440有两个PLL(phase locked loop)一个是MPLL,一个是UPLL。MPLL用于CPU及其他外围器件,UPLL用于USB。S3C2440A 中的时钟控制逻辑可以产生必须的时钟信号,包括CPU 的FCLK,AHB 总线外设的HCLK转载 2011-07-04 20:58:34 · 873 阅读 · 0 评论 -
FIFO存储器
什么是FIFO?FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通原创 2011-07-04 21:04:44 · 5354 阅读 · 0 评论 -
ARM AMBA总线介绍
<br /> <br />什么是AMBA片上总线?<br /> <br />随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用。在基于IP复用的SoC设计中,片上总线设计是最关键的问题。为此,业界出现了很多片上总线标准。其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规范主要包括了AHB(Advanced High perfor转载 2010-09-25 21:08:00 · 9379 阅读 · 0 评论 -
从PC总线到ARM的内部总线
从PC总线到ARM的内部总线从PC的总线到ARM内部总线我在学习《Linux设备驱动程序(第3版)》的 第九章 与硬件通信 时,对 I/O总线的概念 不是很清晰,所以查找了有关资料。现在总结如下:本文的参考资料:1、 《AMBA、AHB、APB总线简介》 作者 adamzhao 日期 2006-11-16 19:33:00转载网址:http://www.openhard.org/myspace/blog/show.php?id=758022、 《Introduction to AMBA Bus Syst转载 2010-09-25 21:25:00 · 1065 阅读 · 0 评论 -
冯诺依曼结构和哈佛结构
<br /> <br />冯诺依曼结构和哈佛结构差别在那里<br /> <br />区别是地址空间和数据空间分开与否<br />冯诺依曼结构数据空间和地址空间不分开<br />哈佛结构数据空间和地址空间是分开的<br />1.哈佛结构处理器有两个明显的特点: <br />使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存; <br />使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。 <br />改进的哈佛结构,其结构特点为: <br原创 2010-08-21 15:55:00 · 2184 阅读 · 0 评论 -
RVDS-RealView Development Suite 4.0 Professional软件
<br /> <br /><br />1. 下载特殊文件压缩包,将特殊文件解压缩在RVDS4.0的安装目录下,如F:ARM<br />2. 修改MAC地址:<br /> 1) 开始 -> 运行 -> CMD -> ipconfig/all,Physical Address一项为MAC地址<br /> 2) 用记事本打开rvds.dat,找到HOSTID=00023F0468D4,共有19处,后面的数字替换成MAC地址,保存<br />3. 安装RVDS4.0<br /> 1) 安装至弹出 ARM Li转载 2010-08-15 16:51:00 · 945 阅读 · 0 评论 -
ARM开发软件及实用工具介绍(转)
<br /> <br />ARM 开发软件及实用工具介绍<br />更新日期:2006.07.16 www.mcu123.net<br /> <br />一、编译器介绍<br />1、ADS1.2<br /> ADS是ARM公司的集成开发环境软件,他的功能非常强大。他的前身是SDT,SDT是ARM公司几年前的开发环境软件,目前SDT早已经不再升级。ADS包括了四个模块分别是:SIMULATOR;C 编译器;实时调试器;应用函数库。<br />ADS的编译器调试器较SDT都有了非常大的改观, ADS1转载 2010-08-15 10:42:00 · 617 阅读 · 0 评论 -
ARM开发经典学习网站推荐
<br /> <br />1.<br />EG3<br />关于嵌入式开发的站点,提供非常多关于嵌入式开发的资料。包括开发公司,技术文档,免费资源等等。版面包括busses & boards,embedded software,dsp,embedded systems,open source,rtos,embedded chips,system-on-a-chip 等等。<br />强烈推荐<br />http://www.eg3.com/ - 外文<br />2.<br />The First Stop转载 2010-08-15 10:54:00 · 714 阅读 · 0 评论 -
RVDS4.0导入ADS工程
<br /> <br />第一步. 打开ARM Workbench IDE V4.0。<br /> <br /> <br />第二步. 打开“FileàNewàRealView Project”。<br /> <br /> <br /> <br /> <br />第三步. 输入工程的名称:pxa270_SEG,然后点击“Finish”。<br /> <br /> <br />第四步. 在“pxa270_SEG”工程点击鼠标的右键,在弹出的菜单中选择“Import…”开始导转载 2010-08-15 10:43:00 · 1077 阅读 · 0 评论 -
ARM开发软件及实用工具介绍(转)
<br /> <br />ARM 开发软件及实用工具介绍<br />更新日期:2006.07.16 www.mcu123.net<br /> <br />一、编译器介绍<br />1、ADS1.2<br /> ADS是ARM公司的集成开发环境软件,他的功能非常强大。他的前身是SDT,SDT是ARM公司几年前的开发环境软件,目前SDT早已经不再升级。ADS包括了四个模块分别是:SIMULATOR;C 编译器;实时调试器;应用函数库。<br />ADS的编译器调试器较SDT都有了非常大的改观, ADS1转载 2010-08-15 10:42:00 · 765 阅读 · 0 评论 -
ARM开发经典学习网站推荐
<br /> <br />1.<br />EG3<br />关于嵌入式开发的站点,提供非常多关于嵌入式开发的资料。包括开发公司,技术文档,免费资源等等。版面包括busses & boards,embedded software,dsp,embedded systems,open source,rtos,embedded chips,system-on-a-chip 等等。<br />强烈推荐<br />http://www.eg3.com/ - 外文<br />2.<br />The First Stop转载 2010-08-15 10:53:00 · 810 阅读 · 1 评论 -
ARM、THUMB指令集
<br /> <br />兼容数据总线宽度为 16 位的应用系统, ARM 体系结构除了支持执行效率很高的 32 位 ARM指令集以外,同时支持 16 位的Thumb 指令集。 Thumb 指令集是 ARM 指令集的一个子集,允许指令编码为 16 位的长度。与等价的 32 位代码相比较,Thumb 指令集在保留 32 代码优势的同时,大大的节省了系统的存储空间。所有的 Thumb 指令都有对应的 ARM 指令,而且 Thumb 的编程模型也对应于 ARM 的编程模型,在应用程序的编写过程中,只要遵循一定调用转载 2010-08-15 10:50:00 · 690 阅读 · 0 评论 -
ARM学习笔记(一)--处理器模式
<br /> <br />处理器模式<br /> <br />CPSR寄存器<br />ARM V4的CPSR寄存器(和保存它的SPSR寄存器)中的位分配如下图所示。<br /> <br /> <br /><br /> <br />处理器模式<br />描述<br />用户模式(User,usr)<br />正常程序执行的模式<br />快速中断模式(FIQ,fiq)<br />用于高速数据传输和通道处理<br />外部中断模式(IRQ,irq)<br />用户通常的中断使用<br />特权模式(Super原创 2010-08-21 19:17:00 · 1512 阅读 · 0 评论 -
ARM学习笔记(二)--ARM状态下寄存器
<br /> <br />ARM寄存器介绍<br />在移植操作系统的时候,尤其是在移植Boot Loader的时候必须了解ARM处理器的寄存器。在Boot Loader里有一段很重要的处理器初始化程序是用ARM汇编写的,有几个关键参数需要传递,关于这些参数在后面介绍Boot Loader时会有详细的描述。<br />ARM处理器含有37个寄存器,这些寄存器包括以下两类寄存器。<br />(1)31个通用寄存器:包括程序计数器PC等,这些寄存器都是32位寄存器。<br />(2)6个状态寄存器:状态寄存器也原创 2010-08-22 17:23:00 · 1271 阅读 · 0 评论 -
芯片--s3c2440
<br /> <br />三星2440 16/32-bit RISC 微处理器. 三星2440是一款专用的以手持设备为主而设计的芯片,其特点有低功耗, 高速的处理计算能力. 为了减少系统的耗费,2440使用了如下组件: 2440基于ARM920T内核的,0.13Um cmos 标准单元和存储单元复合体. 它功耗及小,简单,稳定的设计非常适合对电源要求较高的产品上. 她采用了新的总线构架(AMBA). 2440提供了杰出的特性,因为其内核为32bit的先进处理器。 The arm920T 实转载 2010-08-20 11:40:00 · 1520 阅读 · 0 评论 -
三种常用SoC片上总线的分析与比较
<br /> <br />嵌入式系统是当今计算机工业发展的一个热点<br /><br />随着超大规模集成电路的迅速发展,半导体工业进入深亚微米时代,器件特征尺寸越来越小,芯片规模越来越大,可以在单芯片上集成上百万到数亿只晶体管<br /><br /> 如此密集的集成度使我们现在能够在一小块芯片上把以前由CPU和若干I/O接口等数块芯片实现的功能集成起来,由单片集成电路构成功能强大的、完整的系统,这就是我们通常所说的片上系统SoC(System on Chip)<br /><br />由于功能完转载 2010-09-25 21:17:00 · 1611 阅读 · 0 评论 -
ARM学习笔记(九)--指令基本格式
<br /> 指令基本格式:<br /> <opcode>{<cond>}{S} <Rd>,<Rn>{,<operand2>}<br />1、<>内的项是必须的,{}内的项是可选的,cond若不附指令后使用默认条件AL(无条件执行)。<br />2、opcode:指令助记符,如LDR,STR等;<br />3、cond:执行条件,如EQ,NE等;<br />4、S:是否影响CPSR寄存器的值;<br />5、Rd:目标寄存器;<br />6、Rn:第一个操作数的寄存器;<br />7、operand原创 2010-09-04 10:47:00 · 1114 阅读 · 1 评论 -
ARM学习笔记(八)--寻址方式
<br /> 寻址方式<br />9种:<br />立即数寻址<br />寄存器寻址<br />寄存器移位寻址<br />寄存器间接寻址<br />基址变址寻址<br />相对寻址<br />多寄存器寻址<br />块拷贝寻址<br />堆栈寻址<br /> <br />立即数寻址<br />在立即数寻址中,操作数本身直接在指令中给出,取出指令也就获得了操作数,这个操作数也称为立即数。<br />#后接0x或&表示十六进制数,0b表示二进制数,0d或缺省表示十进制数。<br />例: <br />ADD R原创 2010-09-04 10:36:00 · 1232 阅读 · 0 评论 -
ARM学习笔记(五)--ARM编译器支持的数据类型及预定义宏
<br /> <br />*************************************************************<br />ARM编译器支持的数据类型<br />************************************************************<br /> <br />数据类型 长度(位) 对齐特性<br />Char 8 1(字节对齐)<br />short 16原创 2010-08-28 12:13:00 · 2342 阅读 · 0 评论 -
ARM学习笔记(七)--存储器映射的I/O
存储器映射的I/O基于ARM内核的芯片具有许多的外设,这些外设访问的标准方法是使用存储器映射的I/O,为外设的每个寄存器都分配一个地址。通常,从这些地址装载数据用于读入,向这些地址保存数据用于输出。有些地址的装载和保存用于外设的控制功能,而不是输入或输出功能。注意:存储器映射的I/O位置的操作不同于正常的存储器位置的操作。通常,存储器映射的I/O位置没有高速缓存和无缓冲区。执行ARM 系统I/O 功能的标准方法是使用存储器映射的I/O。装载或保存I/O 值时,使用提供给I/O 功能的特殊存储器地址。通常,从原创 2010-08-29 17:05:00 · 3699 阅读 · 1 评论 -
ARM学习笔记(六)--ARM指令的预取和自修改代码
指令的预取和自修改代码许多 ARM 实现在前一条指令的执行尚未完成时将指令从存储器中取出。这个动作称为指令的预取。指令的预取并不是实际执行指令。指令后来没有被执行有两种典型的情况:原创 2010-08-29 15:50:00 · 2606 阅读 · 0 评论 -
ARM学习笔记(四)--ARM体系的存储系统
<br /> ARM体系结构中的存储系统<br />ARM 存储系统的体系结构适应不同的嵌入式应用系统的需要差别很大。最简单的存储系统使用平办事的地址映射机制,就像一些简单的弹片机系统中一样,地址空间的分 配方式是固定的,系统各部分都使用物理地址。而一些复杂系统可能包括下面的一种或几种技术,从而提供更为强大的存储系统。<br />**系统中可能包含多种类型的存储器,如FLASH,ROM,RAM,EEPROM等,不同类型的存储器的速度和宽度等各不相同。<br />**通过使用CACHE及WRITE BUFFE原创 2010-08-28 12:08:00 · 1716 阅读 · 0 评论