ison

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  19 随笔 :: 0 文章 :: 0 评论 :: 0 Trackbacks
所谓内存映射就是指在整个 4GB 物理地址空间中有哪些地址范围被分配用来寻址系统的 RAM 单元。比如,在 SA-1100 CPU 中,从 0xC000,0000 开始的 512M 地址空间被用作系统的 RAM 地址空间,而在 Samsung S3C44B0X CPU 中,从 0x0c00,0000 到 0x1000,0000 之间的 64M 地址空间被用作系统的 RAM 地址空间。虽然 CPU 通常预留出一大段足够的地址空间给系统 RAM,但是在搭建具体的嵌入式系统时却不一定会实现 CPU 预留的全部 RAM 地址空间。也就是说,具体的嵌入式系统往往只把 CPU 预留的全部 RAM 地址空间中的一部分映射到 RAM 单元上,而让剩下的那部分预留 RAM 地址空间处于未使用状态。由于上述这个事实,因此 Boot Loader 的 stage2 必须在它想干点什么 (比如,将存储在 flash 上的内核映像读到 RAM 空间中) 之前检测整个系统的内存映射情况,也即它必须知道 CPU 预留的全部 RAM 地址空间中的哪些被真正映射到 RAM 地址单元,哪些是处于 "unused" 状态的。
---
.如果清楚知道自己RAM的用法,其实内存映射是可以不用加上去的。 在指挥权移交给kernel之前,bootloader可是老大。想怎么样就怎么样。另外多说一句,kernel中对RAM的使用也有类似的情况,在相应的include /arch 下面的header file中会有当前系统RAM的起始地址,大小,bus-width等等信息。
当然,也可以采用动态检测,当系统启动了之后自动检查RAM的参数。 灵活+代码多且耗时。在嵌入式系统中通常资源紧张的情况下,很少这么做(as far as I know)。
posted on 2008-12-05 16:57 ison 阅读(128) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。