QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1511|回复: 1

linux系统是如何知道主板上的RAM的大小呢?

[复制链接]
发表于 2005-10-17 16:47:31 | 显示全部楼层 |阅读模式
RAM是位于CPU的外部内存总线上的,大小完全是用户决定。
linux内核启动后,是从哪里知道外部内存的大小呢?

在x86中,bois可以用内存自检来获取外部RAM的大小,然后传递给linux内核
在其他平台(arm,ppc),没有bois,而且内核启动的参数里面没有:
ramstartaddr和ramsize这两个参数。


如果是bootloader给传递的,请具体介绍一下,就我目前知道的,还没有哪个bootloader和内核有传递内存大小的功能。

希望移植过内核的朋友,能给指点一下
发表于 2005-10-21 21:17:55 | 显示全部楼层
bootloader将控制权交给内核的引导程序时,第一个执行的程序就是Head.s。Head.s引用hardware.h中的硬件信息配置的系统寄存器;再初始化的ROM、RAM以及总线等控制寄存器,将Flash和SDRAM的地址进行配置;接着将内核的映像文件从Flash拷贝到SDRAM,;然后调用Misc.c中的解压内核函数(decompress_kernel),对拷贝到SDRAM的内核映像文件进行解压缩;最后跳转到执行调用内核函数(call_kernel),将控制权交给解压后的μCLinux系统。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-4-28 02:33 , Processed in 0.103799 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表