主题 : ARM启动地址的问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 13314
精华: 0
发帖: 16
金钱: 80 两
威望: 16 点
综合积分: 32 分
注册时间: 2010-01-22
最后登录: 2010-07-13
楼主  发表于: 2010-01-24 21:56

 ARM启动地址的问题

管理提醒: 本帖被 qq2440 从 micro2440技术交流专区 移动到本区(2013-11-18)
RAM启动时必须从0x00000地址启动,如果是从nor flash启动,就直接把nor flash的首地址映射成0x0000,如果从nand flash启动,就需要从NAND flash中读取前4KB的数据放置在片内地址为0x00000的SRAM里.

但是,在世ADS 1.2 linker里面,需要设置RO bash,这就是存放程序的初始地址,这个地址必须为SDRAN可达的有效地址,那肯定不为0x0000.

这两个要求不是相互矛盾吗?请问应该怎么理解.

请各位指点一下,谢谢
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2010-01-24 23:51
不管是NOR还是NAND启动,最终程序都会重定位到SDRAM中,即将代码复制到“RO base”所指向的SDRAM地址上执行.而在此之前完成这一工作的程序代码(运行在NOR Flash或4K SRAM中), 属于是"位置无关代码"(Position Independent Code, PIC), 即使RO Base指向的是SDRAM, 它们也可以正常工作。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 13314
精华: 0
发帖: 16
金钱: 80 两
威望: 16 点
综合积分: 32 分
注册时间: 2010-01-22
最后登录: 2010-07-13
2楼  发表于: 2010-01-25 23:34

 回 1楼(kasim) 的帖子

按照你的意思,系统从0x00000地址启动的是位置无关代码,那这个位置无关代码是由谁来编写的?因为我在程序里面并没有指定哪些属于位置无关代码呀。