ARM 地址问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ARM 地址问题相关的知识,希望对你有一定的参考价值。

ARM里终端向量表从0x0开始存放,这个0x0地址指的是什么存储器的0x0地址,ARM的地址范围是怎么规定的?有点搞不清, 比如片内RAM和外部RAM的地址范围是不是0x0~xxxxxxx(不考虑大小),假设片内是8K,那么片内RAM范围是不是0~2000H,外部:2000H~xxxxxx
求前辈赐教,谢谢!!!

参考技术A 你好:
ARM是32位的处理器,地址范围是0-4G,都是默认从0x0开始启动。具体存储介质映射的地址范围每个芯片ARM生产商不尽相同。比如ARM7 ARM9 地址的映射是没有做严格的规定的,这个由芯片生产商自己定,但是可以通过查看各个芯片对应的数据手册能够看到内存映射图(memory map)。对于cortex M ARM有做了比较详细的内存映射规定,比如前256M(0x00000000-0x1fffffff)空间用来映射Flash(很多芯片生产商不会映射这么大的Flash,只会映射一部分,比如1024K,64K等等),接下来的256M(0x20000000-0x3fffffff)用来映射SRAM,再接下来的256M是外设寄存器,在接下来的1G是片外RAM....(具体可以看《cortex M3的权威指南》)。追问

片内SRAM有256M?我只晓得裸板SRAM从NAND 0地址取前8K。。。。如果跑系统的话有什么区别?
2410的Boot Internal SRAM (4KB)和BootSRAM(4KBytes)哪个是运行启动代码的?
方便留个丘丘吗?嘿嘿 你懂的!
感谢啊!!!

追答

SRAM 256M是片外的。片内RAM不会弄这么大的。启动不管有没有系统都是一样的,bootloader会从nand中将代码和数拷贝到sram中,再将控制权交给sram。具体从哪儿启动你可以调试一下看看它再哪里运行不就清楚了么。我的QQ:1144794789

追问

片内RAM叫什么? 那片内运行启动代码后,控制权交给的是SRAM 不是SDRAM么?他们有什么区别啊。。。。

本回答被提问者采纳
参考技术B 一般来说芯片带RAM的,地址是从0x0开始编址的,但也可通过管脚(OM)来重映射到片外的SRAM,DDR上面去的。一般手册上都有个映射表的,你仔细看看。追问

表示看不懂芯片手册Memory map那章。。。。。。。。
还有那个片内是不是叫SRAM 片外叫SDRAM??

参考技术C arm编址都是统一的,片内片外,内存外设都是统一编址,不会出现重复地址,但是具体到某一段地址属于哪一外设,要看具体的芯片怎么设计和规定的追问

有这方面的书籍吗,推荐两本 谢谢!

以上是关于ARM 地址问题的主要内容,如果未能解决你的问题,请参考以下文章

arm汇编b指令是绝对地址还是相对地址跳转?

什么时候在ARM板上安装操作系统?调用端口的地址会映射到真实地址还是虚拟地址?

arm中的一个地址有几个字节

将标签地址获取到 ARM 上的寄存器?

如何解析 arm64 elf 文件?

ARM中MMU地址转换理解