关于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开始的地方?
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和内存不是都是统一地址的么
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。大小差别为何如此大?
有必要再从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,共 ...
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上的内容,在内存中有两个镜像。
不是只要一个就可以了吗?
对于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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28