欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

arm的零地址的困惑!

更新时间: 2014-01-05 03:08:55 责任编辑: Author_N1

 

arm的0地址的困惑!!!!!!!!!
1、为什么nandflash的0地址为0x100 0000?

2、那么0x0000 0000又是什么?

3、0x0000 0000这个0地址与flash的0地址什么关系?

4、为什么flash的0地址不是0x0000 0000?

5、SMDK2410#tftp 30008000 ppcboot.bin

     SMDK2410# fl 1000000 30008000 20000

  既然把boatloader烧写在1000000这个位置,那么0~1000000这些地方存的是什么呢?


--参考方法--
你先把arm存储器映射那一章先看看吧,看完你就多少明白点了
--参考方法--
楼主可能没理解好ARM

1.ARM是以32位地址来对各种设备器件控制的。

比如这样:
0x0000 0000 这个是Boot的位置
0x1000 0000 这个是ARM外接Nor Flash的位置
0x2000 0000 这个是LCD的位置
0x3000 0000 这个是...的位置
...... .... ..............
就是这样,如果我要控制显示器去显示某东西,就是控制0x2000 0000的位置。

2.ARM启动时候,最先运行 0x0000 0000地址,0x0000 0000这个地址一般是ARM片内的ROM。

3.0什么关系?没什么关系,就是个地址而已,比如公路长100KM,最开始是0KM,后面是1KM,2KM这样。

4.Nand Flash需要驱动的,0x0000 0000不可能直接就指向Nand Flash。

5.没存什么,说了只是个地址而已。记得Flash分Nor Flash和Nand Flash。不同的ARM芯片有些是不同的。
有些用Nor Flash有些用RAM。
--参考方法--
让我给你说吧,

CPU芯片上电复位的时候,有一个reset中断。上电第一个执行的代码就是reset中断中的处理程序。

reset中断程序要存放在哪里,完全和CPU是相关的。做这个CPU的厂家假定它要放在某个地址Addr上,那么后面做硬件和软件的时候,都要保证这个Addr上存放的是reset中断处理程序。否则CPU找不到这个中断处理程序,就会跑飞掉。

对于ARM家的芯片,恰巧,这个reset中断的地址就是0x00000000。所以在0x0000000的地方,一定是非易失存储器(ROM或者Flash)中存放的reset中断处理程序入口代码。

一旦代码起来,就可以从其他的地方把程序搬到内存RAM中去执行。比如你说的Nand Flash存在0x100000,它里面的代码和数据都可以被读出来放到RAM中。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:08:55
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/18884/
本文WWW.DOC100.NET DOC100.NET版权所有。