ARM 体系结构
文章平均质量分 65
yc550370460
这个作者很懒,什么都没留下…
展开
-
关于arm启动代码启动流程
首先,申明主要阐述针对使用scatter文件的启动代码的执行流程,若有纰漏,还请斧正!MCU是怎么知道首先从启动代码开始执行的呢?又怎么知道从启动代码那一句开始执行呢?解释如下:首先打开scatter文件,举例如下:LR_ROM1 0x00000000 0x00200000 { ; load region size_region ER_ROM1 0x00000000原创 2013-03-11 16:44:42 · 2849 阅读 · 0 评论 -
Use Memory Layout from Target Dialog
Use Memory Layout from Target Dialog When enabled, µVision creates a linker scatter file from the memory information supplied in the dialogs Target and Properties. When disabled, then原创 2013-03-12 12:12:47 · 3992 阅读 · 0 评论 -
RO段、RW段和ZI段 --Image$$??$$Limit 含义
from: http://blog.21ic.com/user1/1113/archives/2010/67077.html要了解RO,RW和ZI需要首先了解以下知识: (1) ARM程序的组成 此处所说的“ARM程序”是指在ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件,这一点清注意区别。转载 2013-03-12 14:42:41 · 1195 阅读 · 0 评论 -
Norflash replace rom
refer: http://bbs.csdn.net/topics/370053495 http://www.myslidepresenter.com/blog/tag/nor-flash3、nor flash和nandflash都属于电可擦除存储器,它存储的数据可以擦除、修改,但是要有特定的访问程序(步骤)和/或外部电路的跳线设置。由于flash存转载 2013-03-11 14:25:17 · 1069 阅读 · 0 评论 -
give you the answer that why using "PRESERVE8" in startup code
refer: http://www.keil.com/forum/17485/ http://www.keil.com/support/docs/3268.htmblow is the detail:ARMLINK: WARNING: L6306W: '~PRES8' SECTION SHOULD NOT USE 'REQ8'QUEST转载 2013-03-11 10:54:47 · 2581 阅读 · 0 评论 -
how does startup code work
from : http://www.keil.com/forum/20201/ startup files in KeilCan You explain me something. Why in ARM microcontrollers each IDE use startup files?Where from the compiler knows that the f转载 2013-03-08 15:01:05 · 1927 阅读 · 0 评论 -
__main main 注意最后跳转到应用程序的那部分说明
[基于ARM的芯片多数为复杂的片上系统,这种复杂系统里的多数硬件模块都是可配置的,需要由软件来设置其需要的工作状态。因此在用户的应用程序之前,需要由专门的一段代码来完成对系统的初始化。由于这类代码直接面对处理器内核和硬件控制器进行编程,一般都是用汇编语言。一般通用的内容包括:中断向量表初始化存储器系统初始化堆栈初始化有特殊要求的断口,设备初始化用户程序执行环境改变处理器转载 2013-03-08 17:26:14 · 1559 阅读 · 0 评论 -
use of startup code
from :http://www.edaboard.com/thread193721.htmlUse of Startup code in ARM processorWhat is the use of start up code in ARM processor?Do we require start up code for 8051 if we are usin转载 2013-03-08 14:58:02 · 1022 阅读 · 0 评论 -
新发现
scatter:LR_IROM1 0x08000000 0x00100000 { ; load region size_region ER_IROM1 0x08000000 0x00100000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .A原创 2013-03-13 15:51:30 · 1140 阅读 · 0 评论 -
启动代码关于norflash、nandflash拷贝/开发环境基地址/RO段、RW段、ZI段/加载域、执行域 总结
软件开发环境:keil4硬件开发平台:mini2440启动代码参考:《ARM处理器裸机开发实战》TQ2440启动代码1.软件开发环境加载域、执行域总结norflash启动 首先看下图: 如为上图所示设置,表明RO段基地址为0x0,RW的基地址0x30000000,则表明RO段在Norflash中执行,取指令也会涉及到norflash的原创 2013-03-14 10:55:40 · 2177 阅读 · 0 评论 -
程序从片内地址0开始,但为什么链接地址又设0x30000000,那不就从0x30000000开始了,反汇编可以看到不是从0开始的
from:http://blog.csdn.net/ouyang_linux007/article/details/7448505程序从片内地址0开始,但为什么链接地址又设0x30000000,那不就从0x30000000开始了,反汇编可以看到不是从0开始的分类: 嵌入式硬件--裸机2012-04-11 10:37 583人阅读 评论(0) 收藏 举报汇编存储flash转载 2013-03-13 17:45:41 · 1526 阅读 · 2 评论 -
Norflash启动代码
启动代码文件INCLUDE .\2440addr.inc;GPB for LED IMPORT |Image$$ER_ROM1$$Base| ;ROM base 抵格开始IMPORT |Image$$ER_ROM1$$Limit| ;ROM limitIMPORT |Image$$RW_RAM1$$Base| ;RW baseIMPORT |原创 2013-03-25 10:04:44 · 1151 阅读 · 0 评论 -
cpsr-------cpsr_cxsf
转自:http://blog.csdn.net/kangear/article/details/8531326/******************************************************************************************************************原文地址:http://www.cnblogs.转载 2013-03-21 17:32:55 · 1378 阅读 · 0 评论 -
ARM下书写位置无关的代码
转自:http://blog.csdn.net/iamshaofa/article/details/7917301位置无关代码,即该段代码无论放在内存的哪个地址,都能正确运行。究其原因,是因为代码里没有使用绝对地址,都是相对地址。位置无关的写法:(1) B指令B指令接受一个相对地址,因此在汇编里用B跳转到一个标号时,实际编译的结果是一个相对跳转。相对地址有个范围限制转载 2013-03-21 17:11:35 · 921 阅读 · 0 评论 -
segger jlink 工程设置
1.jlink烧写SDRAM 如果要用jlink下载程序到SDRAM,那么一定要先初始化好SDRAM。 初始化SDRAM方法 方法一:用init.bin对SDRAM进行初始化。 其实就是启动代码的SDRAM初始化部分的提取,然后将其烧写到内部的前4K的SRAM中。初始化好SDRAM.以后,再通过jlilnk下载程序到SDRAM。 方法二:在J-原创 2013-04-01 13:44:47 · 7552 阅读 · 0 评论 -
什么是watchdog + 为何在要系统初始化的时候关闭watchdog
转自:http://bbs.chinaunix.net/thread-2304244-1-1.html什么是watchdog + 为何在要系统初始化的时候关闭watchdog 关于Uboot初始化阶段,在start.S中,为何要去关闭watchdog,下面解释具体的原因:1.什么是watchdog嵌入式系统之WATCHDOG(看门狗)概述http://wen转载 2013-03-14 17:00:59 · 2896 阅读 · 0 评论 -
系统初始化,关闭MMU、CACHE
MMU、ICache、DCache的打开和关闭都是由CP15协处理器的c1寄存器控制的。实际上在复位之后这三者都是自动关闭的,所以省略了关闭它们的代码。 如下:all bits in CP15 register 1 are set to 0 on reset. refer 《ARM architecture reference manual》P B3-12原创 2013-03-14 17:28:08 · 1475 阅读 · 0 评论 -
在第一阶段中为什么要关闭Cache
转自:http://zccst.iteye.com/blog/1044834 在第一阶段中为什么要关闭Cache?通常使用Cache以及写缓冲是为了提高系统性能,但由于Cache的使用可能改变访问主存的数量、类型和时间,因此Bootloader通常是不需要的。转载 2013-03-14 17:13:09 · 2036 阅读 · 1 评论 -
uboot初始化中,为何要设置CPU为SVC模式而不是设置为其他模式
转自:http://bbs.chinaunix.net/thread-2304243-1-1.htmluboot初始化中,为何要设置CPU为SVC模式而不是设置为其他模式在看Uboot的start.S文件时候,发现其最开始初始化系统,做的第一件事情,就是将CPU设置为SVC模式,但是S3C2440的CPU的core是ARM920T,其有7种模式,为何非要设置为SVC模式,而不是设置转载 2013-03-14 17:10:35 · 878 阅读 · 0 评论 -
谈谈volatile
转自:http://home.eeworld.com.cn/my/link.php?url=http://bbs.eeworld.com.cn%2Fviewthread.php%3Ftid%3D339278一直做汇编,做着嵌入式最底层的开发。最近,心血来潮,看起了C语言的书。看的过程中,就想谈谈volatile. 在谭浩强的C语言书中没有谈到volatile这个类型修饰符。但是,做嵌转载 2013-03-06 11:02:12 · 761 阅读 · 0 评论 -
请问norFlash 和nandFlash 能同时使用吗
转自:http://bbs.chinaunix.net/thread-1926710-1-1.html我用的是 atmel sam9261 的板子, nor flash4M nand flash 64M现在bootloader和Linux 内核都烧在了nor flash,我想把文件系统以及其他应用写在nand flash上,请问这样做可以嘛。好像有种说法是 norFlash 和N转载 2013-03-06 10:57:07 · 1612 阅读 · 0 评论 -
关于堆栈寻址
转自:http://blog.csdn.net/itismine/article/details/4864159关于堆栈寻址 堆栈是一块连续的内存,也可以说是存储区,不过因为作为特定的数据结构,它对数据存储顺序是有要求的,即先进后出(或者说是后进先出)。堆栈寻址时,使用SP指向一块存储区域,指针所指向的单元就是堆栈的栈顶。存储器堆栈可以分为两种:一种是向上生长,就是向转载 2013-03-06 16:00:38 · 8302 阅读 · 1 评论 -
LDR LDR=
转自:http://blog.csdn.net/ce123/article/details/7182756ARM汇编中ldr伪指令和ldr指令 ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。比如想把数据从内存中某处读取到寄存器中,只能使用ldr比如:[cpp] view plai转载 2013-01-05 11:29:32 · 4391 阅读 · 2 评论 -
LTORG
RISC CPU是众多CPU中的一种. RISC是精简指令集的CPU. 也就是说, 它的指令系统一般都十分简洁.本文将要介绍的是RISCCPU中目前十分普遍的ARMCPU。目前很多的RISC CPU均是使用的32BIT长度的指令. 也就是每个指令长度为32BIT(注意:包括操作码和操作数一共32位). (也有很多RISC CPU提供16BIT长度的指令系统,用于缩短代码长度) 所有转载 2012-12-19 15:43:01 · 2549 阅读 · 0 评论 -
关于ARM存储管理的TLB锁定理解
现摘抄一节:from:http://blog.163.com/jiangh_1982/blog/static/121950520105176134256/· CP15的寄存器C10CP15的C10寄存器用于控制TLB内容锁定。访问CP15的C10寄存器的指令格式如下所示:mcr p15, 0, , , c0, mrc p15, 0, , , c0, 如原创 2012-12-31 11:27:48 · 2773 阅读 · 0 评论 -
ARM汇编跳转指令理解
关于跳转指令(这里以B指令做例)指令的编码格式为:cond | 1 0 1 | L | signed_immed_24signed_immed_24为相对偏移量右移两位之后的结果。为什么要这么做呢?首先指令格式总共才32bits,所以不能放下32bits的完整绝对地址,同时由于绝对地址-PC=相对地址,为了使相对偏移量达到最大取值,将相对偏移量向右移了两位进行存储(因为相对原创 2012-12-17 14:13:13 · 989 阅读 · 0 评论 -
LR(R14)
子程序返回的方法1.MOV PC,LR ;//将PC值设为子程序返回地址,便于PC预取指令 BL LR ;//跳转到子程序返回地址,退出子程序2.在子程序入口处使用以下指令将R14存入堆栈 STMFD SP!,{,LR}对应的,使用以下指令可以完成子程序的返回 LDMFD SP!原创 2012-12-14 16:53:30 · 1034 阅读 · 0 评论 -
虚拟地址—来由
源地址:http://bbs.eetop.cn/thread-144555-1-1.html关于ARM9中虚拟地址的问题??驱动程序, 触摸屏, 编译器, 操作系统, LinuxARM中MMU负责虚拟地址到物理地址的转换,这中间的一系列变换都能理解有疑问的是:虚拟地址是如何产生的??是程序被编译的时候由编译器确定的,还是程序加裁的时候确定的,如何转载 2012-12-27 14:45:14 · 1365 阅读 · 0 评论 -
MVA疑问
参考:http://zhidao.baidu.com/question/177781156.html#answer-1290686116关于ARM的CPU中, VA 到MVA转换的疑惑2010-08-23 21:00VA转换成MVA,cache、MMU使用MVA VA->MVA的方法(硬件自动完成): if(VA<32M) MVA=VA|(PID<<25) //P原创 2012-12-27 16:51:41 · 1447 阅读 · 0 评论 -
记录
第一步,你要知道页表的位置, 这就是所谓的页表址的概念. 该值由芯片自动从协处理器的c2寄存器中取出配置. 第二步,你要知道页表里的段的位置, 这是段基址的概念. 或者叫表内序号. 这个值是虑拟地址的bit[31:20]. 它和上一步的页表基址构成一级页表的地址项. 所以你应该明白了下面这一行的意思了吧. pTT=(U32 *)_MMUTT_STARTADDRESS+(转载 2012-12-27 17:34:53 · 481 阅读 · 0 评论 -
ARM中断原理, 中断嵌套的误解
转自:http://bbs.eeworld.com.cn/thread-92996-1-1.html 几天前一个学生问我ARM中断嵌套的问题,我才发现原在我心中理所当然的事对学生来说理解实属不易。 ARM有七种模式,我们这里只讨论SVC、IRQ和FIQ模式。 我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq p转载 2013-01-07 12:23:03 · 3038 阅读 · 0 评论 -
ARM中断详解
参考文献:http://blog.sina.com.cn/s/blog_6a1928130100px85.html http://blog.sina.com.cn/s/blog_6a1928130100qg0r.html关于中断嵌套的问题咨询ZLG请问ZLG: 1. 《深入浅出ARM7-LPC213x_214x(上)》的转载 2013-01-07 13:41:31 · 5449 阅读 · 0 评论 -
AMBA概述
转自:http://fanwenjie.ok.blog.163.com/blog/static/12466320520114201819239/?fromdm&isFromSearchEngine=yes理解底层:2440时钟管理与定时器2(APB,AHB那些事) 说完FCLK,HCLK,PCLK,再说说AHB,APB吧,便于以后进展(好像应该先说这节,无所,只要理解谁转载 2013-01-29 10:57:20 · 939 阅读 · 0 评论 -
Volatile深入理解
转自:http://bbs.eeworld.com.cn/thread-299390-1-1.html 就象大家更熟悉的const,auto,register等关键字一样,volatile是一个类型修饰符。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。Volatile 是易变的转载 2013-03-06 11:04:06 · 1045 阅读 · 0 评论 -
请教NandFlash物理地址如何计算
转自:http://bbs.csdn.net/topics/300185659在硬件上SDRAM可以通过nGCSi片选信号的连接确定,NandFlash看不出来,内存映射表上也看不出请教各位,先谢了!根据读写的block和page计算出来的nandflash 不是nor flash,在内存映射上没有地址读写要看datasheet,发送命令字和地址转载 2013-03-06 10:59:17 · 2584 阅读 · 0 评论 -
nandflash对比norflash
转自:http://www.ourunix.org/post/280.html本文旨在帮助刚入门的同学理解在嵌入式开发板中常用的闪存,walfred在大学时也经常听老师祷告这些玩意,当时没有注意,现在走上工作岗位了,才知道其重要性,结合网络上的资源,本文章将会详细的介绍常用的NorFlash和NandFlash,并对其进行多方面的对比,加深自己和他人的印象。NorFlash和N转载 2013-03-06 10:54:29 · 1099 阅读 · 0 评论 -
通过JLink烧录Nor/NandFlash
转自:http://blog.chinaunix.net/uid-24708340-id-3250960.html通过JLink烧录Nor/NandFlash JLINK可以方便的操作CPU,但不能操作Nand Flash,烧写Nand Flash只是从理论上能够达到,但是还没有人直接实现这点(韦东山好像做了一个,我没用过)。本文使用一个间接方法来烧录Nand Flash:转载 2013-02-20 13:42:13 · 2213 阅读 · 0 评论 -
ARM 为什么地址线要偏移一位接
转自:http://blog.csdn.net/sfrysh/article/details/5602723以前在某些书上看到过,某些RAM、nor flash推荐的接法是地址线偏移一位,即cpu的a1接到芯片的a0,不是一一对应。今天上课终于搞懂了原来就是因为这类RAM、nor flash是16位的一般在我们c语言软件编程的概念,一个地址对应的数据是一个byte,8位转载 2013-01-21 23:33:41 · 1317 阅读 · 0 评论 -
S3C2410-2440启动代码内数据复制过程的分析
抛砖引玉本文作者讲解非常详细,解决了很多书上不曾讲明白的地方对S3C2410 启动代码内数据复制过程的分析 东莞权智集团 范伟 mail: fanwei326@163.com ; wfan@gsl.com.cn 本文若有错误之处,欢迎来信指正。 S3C2410 启动后先进行一些必要的设置,如关 WatchDog,设置 PLL 与时钟,配置 SDR转载 2013-01-31 11:31:14 · 932 阅读 · 0 评论 -
关于启动代码中NANDFLASH启动相关代码的解释
首先转载一篇文章。转自:http://blog.csdn.net/canjiangsu/article/details/6584791 [置顶] 原来程序是这样从NandFlash拷贝并跳转到SDRAM的重新看了一下FL2440的BootLoader,终于把程序是怎样从Nandflash拷贝并跳转到SDRAM的过程弄清楚了,在这边做一下笔记。先上张图:原创 2013-01-29 23:43:01 · 785 阅读 · 0 评论