
ARM
求佛_ce123
专注于嵌入式软件开发
展开
-
S3C2440 异常进入和退出
S3C2440 异常进入和退出 根据异常类型的不同,返回的方式也不同。异常造成下一条指令要从相应的向量表入口读取。 1 处理器对异常的反应产生异常时,处理器采取如下动作:1. 将 CPSR 复制到相应的 SPSR 中。 这会保存当前模式、中断屏蔽和条原创 2011-08-13 00:12:42 · 2540 阅读 · 0 评论 -
S3C2440时钟详解
S3C2440的时钟ADS1.2中关于时钟的C代码:ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);ChangeClockDivider(key, 12); 1)FLCK、HCLK和PCLK的关系 S3C2440有三个时钟FLCK、HCLK和PCLK。s3原创 2011-12-03 01:33:21 · 4328 阅读 · 3 评论 -
ARM汇编中的标号
ARM汇编中的标号 标号(LABEL)是为一组机器指令所起名字,表示程序中的指令或者数据地址的符号。标号可有可无,只有当需要用符号地址来访问该语句时,才给此语句赋予标号。通过在目标地址的前面放上一个标号,可以在指令中使用标号来代替直接使用地址。标号是程序目标标志,总是和某地址相联系,供转移或循环指令控制转移使用。 标号是编译程序使用的,也就是说程序中最后生成的代码中原创 2012-01-06 16:11:18 · 6008 阅读 · 0 评论 -
ARM汇编中LDR伪指令和LDR指令
ARM汇编中ldr伪指令和ldr指令 ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。比如想把数据从内存中某处读取到寄存器中,只能使用ldr比如:ldr r0, 0x12345678就是把0x12345678这个地址中的值存放到r0中。而mov不能实现这个功能,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个原创 2012-01-07 13:54:44 · 26443 阅读 · 8 评论 -
ARM9中断与PC
ARM9中断与PC、LR的问题1, 假设当前是PC,PC-4,PC-8。当前"取指PC"=当前PC,当前"译码PC"=当前PC-4, 当前"执行PC"=当前PC-8。例如,如下图所示,当前“取值PC”=16,当前“解码PC”=12,当前“执行PC”=8。2, 发生IRQ异常,执行保护操作,LR中保存由于FIQ或IRQ占先而没有被执行完的指令的地址的下一条地址(LR中保存的是当前P原创 2011-08-13 16:08:52 · 1890 阅读 · 0 评论 -
第一个ARM程序
;************************************************************** ;文件:program_5_1.s;简介:ARM初始化程序 ;************************************************************** IMPORT Main ;伪操作IMPORT告诉编译器Main不是在该文件中原创 2011-07-02 22:34:28 · 2934 阅读 · 0 评论 -
ARM启动代码分析(2440init.c)
;=========================================; NAME: 2440INIT.S; DESC: C start up codes; Configure memory, ISR ,stacks; Initialize C-variables; HISTORY:; 2002.02.25:kwtark: ver 0.0; 2002.03.20:purn原创 2011-07-02 23:17:34 · 2824 阅读 · 0 评论 -
基于S3c2440的多种显示屏测试方案
基于S3c2440的多种显示屏测试方案1 常见的液晶模块... 21.1根据显示图形的不同分为以下几种... 21.1.1段式显示模块... 21.1.2字符型显示模块... 21.1.3图形点阵显示模块... 31.2根据液晶类型的原理的不同分为以下几种... 31.2.1 TN(Twist Nematic)型... 31.2.2 STN(Super TN)型... 31.2.3 TN或STN型原创 2011-07-02 23:02:33 · 8265 阅读 · 3 评论 -
对ARM加载域和运行域的理解
一般而言,一个程序包括只读的代码段和可读写的数据段。在ARM的集成开发环境中,只读的代码段和常量被称作RO段(ReadOnly);可读写的全局变量和静态变量被称作RW段(ReadWrite);RW段中要被初始化为零的变量被称为ZI段(ZeroInit)。对于嵌入式系统而言,程序映象都是存储在Flash存储器等一些非易失性器件中的,而在运行时,程序中的RW段必须重新装载到可读写的RAM中。这就涉及到原创 2011-07-06 20:16:42 · 4110 阅读 · 0 评论 -
S3C2440启动代码 中断分析
1.建立中断向量表b ResetHandler;hereis the first instrument 0x00这是第一条执行的指令 b HandlerUndef ;handler for Undefined modeb HandlerSWI ;handler for SWI interruptb HandlerPabort原创 2011-07-03 01:06:31 · 3202 阅读 · 1 评论 -
ARM程序设计基础
ARM程序设计基础ARM程序设计基础 11 ARM汇编器所支持的伪指令 12 ARM汇编器所支持的伪指令 103 汇编语言的语句格式 164 汇编语言的程序结构 19 ARM编译器一般都支持汇编语言的程序设计和C/C++语言的程序设计,以及两者的混合编程。本章介绍ARM程序设计的一些基本概念,如ARM汇编语言的伪指令、汇编语言的语句格式和汇编语言的程序结构等,同时介绍C/C++和汇编语言的原创 2011-07-02 23:32:45 · 3729 阅读 · 0 评论 -
直通串口线和交叉串口线
直通串口线和交叉串口线以前一直用GT2440开发板提供的串口线连接电脑。最近做S5PV210的板子时也想做2440的串口线,连接好后串口一直没有输出,以为是串口线不行,借了朋友的试一下,还是不行。在后来和朋友交谈的过程中,得知:串口线有直通和交叉之分。感觉210的板子串口没有输出很可能是没有区分直通和交叉串口线。回来后查看了一下2440的电路图,串口部分的电路图如下:210板子串口部分的电路图如下原创 2011-08-23 18:58:08 · 7885 阅读 · 0 评论 -
浅谈S3C2440的中断寄存器及中断过程
浅谈S3C2440的中断寄存器及中断过程 S3C2440一共有60个中断源,其中有15个子中断源,它们与SUBSRCPND寄存器中的每一位相对应,其他45个中断源与SRCPND中的每一位相对应。要注意的是EINT4~7对应的是同一位SRCPND[4],而EINT8~23对应的也是SRCPND[5]一位。1 S3C2440的中断寄存器 中断分两大原创 2011-11-08 15:40:06 · 9404 阅读 · 15 评论 -
运行地址和加载地址
运行地址和加载地址 在连接目标代码时,会提到运行地址和加载地址。这两者有什么区别呢? 加载时地址就是程序放置的地址,运行地址就是程序定位的绝对地址,也即在编译连接时定位的地址。如果程序是在flash里运行,则运行地址和加载地址是相同的。如果程序是在ram里运行,但程序是存储在flash里,则运行地址指向ram,而加载地址是指向flash。代码一般是烧原创 2011-11-23 18:07:42 · 13886 阅读 · 5 评论 -
ARM7和ARM9流水对PC的影响
ARM7和ARM9流水对PC的影响“PC=PC+1”,这不完全正确,PC自增一的情况指出现在无流水(non-pipeline)的情况下,这个时候取指,译码,执指都是顺序执行的。而在有流水的情况下就比较复杂了这里用arm7和arm9为例。arm7是3级流水。ar原创 2011-08-13 10:32:01 · 3188 阅读 · 1 评论 -
外设内存映射机制
外设内存映射机制 一个开发板的CPU地址引脚并不是所有的都与内存元器件相连的,如果该板上有外设(如一块独立显卡),那么CPU就需要分出一些引脚来与该外设的地址引脚相连,相当于将一部分内存寻址的空间分给了外设,那不相当于CPU分出去地址寻址空间为原创 2011-09-15 23:59:03 · 4985 阅读 · 0 评论 -
对S3C2440特殊功能寄存器地址的深入挖掘
对S3C2440特殊功能寄存器地址的深入挖掘 S3C2440集成了丰富了外设控制器(LCD控制器、USB Device控制器、USB Host控制器、NAND FLASH控制器、I2C控制器、SPI控制器等)。要控制这些外设就要设置相应控制器的寄存器以产生相应的驱原创 2011-09-19 08:35:43 · 9054 阅读 · 13 评论 -
GNU工具开发ARM嵌入式系统
GNU工具开发ARM嵌入式系统 当前,arm公司的32位RISC处理器,以其内核耗电少、成本低、功能强、特有16/32位双指令集,已成为移动通信、手持计算、多媒体数字消费等嵌入式解决方案的RISC标准,市场占有率超过了75 %。多家公司都推出了自己的转载 2011-09-25 07:50:14 · 3116 阅读 · 3 评论 -
ARM芯片选型的一些建议
目前国内市场常见的ARM有NXP(Philips)、Samsung、Atmel、TI、ADI等,根据用户要求及应用领域,可从如下几个方面选型:1、速度(常规应用):ARM7的主时钟为20~133M,ARM9为100~233M,ARM10高达700M,如果速度要求更高,原创 2011-10-11 08:18:45 · 9200 阅读 · 8 评论 -
ARM开发经典学习网站推荐
ARM开发经典学习网站推荐1. EG3 关于嵌入式开发的站点,提供非常多关于嵌入式开发的资料。包括开发公司,技术文档,免费资源等等。版面包括busses & boards,embedded software,dsp,embedded systems,opensource,原创 2011-08-12 10:18:17 · 4644 阅读 · 0 评论 -
S3C2440的存储器映射(27根地址线如何寻找1G的地址)
查S3C2440的数据手册可知S3C2440可寻址1G的地址范围,但是S3C2440的地址线只有27根,理论上只能寻址2的27次方等于128M的地址范围。 通过细致的分析可知:S3C2440通过一个BANK来解决了这个问题。S3C2440有原创 2011-10-17 18:26:05 · 5338 阅读 · 0 评论 -
对S3C2440片上总线(AMBA)的一点理解
对S3C2440片上总线(AMBA)的一点理解-----钥匙串结构与S3C2440片上总线(AMBA) 最近一直在深入的了解S3c2440的AMBA总线,进展缓慢,大部分时间花在了论文开题上,只能挤出一点时间来搞嵌入式。用了一年的钥匙串坏了,挂钩断了,买了一个新的钥匙串。下午在换钥匙串时,一些小钥匙由于孔太小而钥匙环太粗,无法挂上去;指甲剪也也因为孔太小挂不上去;较大的钥原创 2011-09-28 02:18:24 · 3831 阅读 · 3 评论 -
浅谈EABI和OABI
浅谈EABI和OABI引言 初学嵌入式linux开发的时候大家都用的工具链版本多是3.4.5或3.4.2,名字为arm-linux-gcc或arm-softfloat-linux-gnu-gcc,可突然有一天发现这几个版本的编译器无法编译最新的内核了,并且发现人们都换了工具链了(arm-none-linux-gnueabi-gcc)。于是也都换成了这个工具链,编译内核,制作原创 2011-11-01 19:02:24 · 6948 阅读 · 4 评论 -
对UART的FIFO的理解
对UART的FIFO的理解 FIFO的必要性。在进行UART通信时,中断方式比轮询方式要简便且效率高。但是,如果没有收发FIFO,则每传输一个数据(5~8位)都要中断处理一次,效率仍然不高。如果有了收发FIFO,则可以在连续收发若干个数据(可多至14个)后才产生一次中断,然后一起处理。这就大大提高了收发效率。 接收超时问题。如果没有接收超时功能,则在对方已经发送完毕而接收FIF原创 2011-11-01 19:52:19 · 7725 阅读 · 1 评论 -
arm中的armeb(armbe)和armel(armle)
arm中的armeb(armbe)和armel(armle)ARMEB = ARM EABI Big-endian ,也有称为ARMEB #大端字节序 ARMEL = ARM EABI Little-endian,也有称为ARMLE #小端字节序EABI = Embedded Application Binary Interface原创 2013-01-01 16:52:54 · 9822 阅读 · 3 评论