(1) 内存映射的描述
可以用如下数据结构来描述 RAM 地址空间中的一段连续(continuous)的地址范围:
typedef struct memory_area_struct {
u32 start; /* the base address of the memory region */
u32 size; /* the byte number of the memory region */
int used;
}
memory_area_t;
这段 RAM 地址空间中的连续地址范围可以处于两种状态之一:
(1)used=1,则说明这段连续的地址范围已被实现,也即真正地被映射到 RAM 单元上。
(2)used=0,则说明这段连续的地址范围并未被系统所实现,而是处于未使用状态。
基于上述
memory_area_t
数据结构,整个 CPU 预留的 RAM 地址空间可以用一个
memory_area_t类型的数组来表示,如下所示:
memory_area_t
memory_map[NUM_MEM_AREAS] = {
[0 ... (NUM_MEM_AREAS - 1)] = {
.start = 0,
.size = 0,
.used = 0
},
};
-----------------------------------------------------------------
memory_area_t
memory_map[NUM_MEM_AREAS] = {
[0 ... (NUM_MEM_AREAS - 1)] = {
.start = 0,
.size = 0,
.used = 0
},
};
看BootLoader技术内幕上的,谁能说说这种表示方法啊,以前怎么从来没见过。
|