+ -
当前位置:首页 → 问答吧 → 关于bootloader的问题请教!

关于bootloader的问题请教!

时间:2007-08-25

来源:互联网

在stages 2的系统的内存映射中:
bootloader程序利用map __bsetup parts[]结构体对内存的分配进行配置(参考partition.c),从内存分布可以看出,ARM开发板SRAM和SDRAM起始地址的存储分布情况:
bootloader:        0x00000000_0x00040000,共占256K,SDRAM起始地址:0xA1E00000
kernel:                0x00040000_0x00180000,共占1.25M ,SDRAM起始地址:0xA0008000
root:        0x00180000_0x02000000,共占30.5M,SDRAM起始地址0xA0000000

随后加载内核和文件系统

对于内核映像,一般将其拷贝到从(MEM_START+0x8000)
而对于根文件系统映像,则一般将其拷贝到MEM_START+0x00100000开始的地方


现在的有两个问题
1、sram中的数据,是从flash中copy的么?
2、root:        0x00180000_0x02000000,共占30.5M,SDRAM起始地址0xA0000000,不是意味着已经把根文件系统加载到内存里么?为什么还要拷贝到MEM_START+0x00100000开始的地方?      

作者: wbtxuan   发布时间: 2007-08-25

这个sram其实就是片内cache吧

2。难道flash和内存不是都是统一地址的么      

作者: AIKO_sex   发布时间: 2007-08-25

1、sram实际上是cache,是从flash copy出来的,可是又把sram的内容映射sdram的0xA0000000上。
有必要再从flash里copy 数据到MEM_START 0x00100000???岂不是多此一举。
2、root: 0x00180000_0x02000000,共占30.5M.
而把根文件系统copy到MEM_START 0x00100000,
如果用Ramdisk作为根文件系统映像,则其解压后的大小一般是1MB。大小差别为何如此大?      

作者: wbtxuan   发布时间: 2007-08-26

引用:
原帖由 wbtxuan 于 2007-8-26 00:24 发表
1、sram实际上是cache,是从flash copy出来的,可是又把sram的内容映射sdram的0xA0000000上。
有必要再从flash里copy 数据到MEM_START 0x00100000???岂不是多此一举。
2、root: 0x00180000_0x02000000,共 ...
1。linux启动前会把自己从低地址再次复制到高地址吧,以前的地址作为保留地址,地址空间也不够

2。ramdisk只要有起始地址后面就无所谓吧,他自己知道忽略,只要不超出我觉得无所谓吧      

作者: AIKO_sex   发布时间: 2007-08-26

linux启动前会把自己从低地址再次复制到高地址吧,以前的地址作为保留地址,地址空间也不够

对于root来说,
应该指的是
sdram的0x00180000_0x02000000,复制到SDRAM起始地址0xA0000000。
SRAM 0x00180000_0x02000000,这里已经是从flash copy出来的。
flash为何还要把root copy 到MEM_START + 0x00100000,
呢。

也就是说除了映射地址外,flash上的内容,在内存中有两个镜像。
不是只要一个就可以了吗?      

作者: wbtxuan   发布时间: 2007-08-26

或许是该平台默认支持的flash io地址      

作者: AIKO_sex   发布时间: 2007-08-31